|
48 | 48 | MessagesFlagChange,
|
49 | 49 | PrivateComposition,
|
50 | 50 | PrivateMessageUpdateRequest,
|
| 51 | + ReactionEvent, |
51 | 52 | RealmEmojiData,
|
52 | 53 | RealmUser,
|
53 | 54 | StreamComposition,
|
@@ -479,18 +480,22 @@ def has_user_reacted_to_message(self, message: Message, *, emoji_code: str) -> b
|
479 | 480 | for reaction in message["reactions"]:
|
480 | 481 | if reaction["emoji_code"] != emoji_code:
|
481 | 482 | continue
|
482 |
| - # The reaction.user_id field was added in Zulip v3.0, ZFL 2 so we need to |
483 |
| - # check both the reaction.user.{user_id/id} fields too for pre v3 support. |
484 |
| - user = reaction.get("user", {}) |
485 |
| - has_user_reacted = ( |
486 |
| - user.get("user_id", None) == self.user_id |
487 |
| - or user.get("id", None) == self.user_id |
488 |
| - or reaction.get("user_id", None) == self.user_id |
489 |
| - ) |
490 |
| - if has_user_reacted: |
| 483 | + user_id = self.get_user_id_from_reaction(reaction) |
| 484 | + if user_id == self.user_id: |
491 | 485 | return True
|
492 | 486 | return False
|
493 | 487 |
|
| 488 | + def get_user_id_from_reaction( |
| 489 | + self, reaction: Union[Dict[str, Any], ReactionEvent] |
| 490 | + ) -> int: |
| 491 | + # The reaction.user_id field was added in Zulip v3.0, ZFL 2 so we need to |
| 492 | + # check both the reaction.user.{user_id/id} fields too for pre v3 support. |
| 493 | + user = reaction.get("user", {}) |
| 494 | + assert isinstance(user, dict) |
| 495 | + user_id = user.get("id") or user.get("user_id") or reaction.get("user_id") |
| 496 | + assert isinstance(user_id, int) |
| 497 | + return user_id |
| 498 | + |
494 | 499 | def session_draft_message(self) -> Optional[Composition]:
|
495 | 500 | return deepcopy(self._draft)
|
496 | 501 |
|
@@ -1859,16 +1864,8 @@ def _handle_reaction_event(self, event: Event) -> None:
|
1859 | 1864 | message["reactions"].append(reactions_entry)
|
1860 | 1865 | else:
|
1861 | 1866 | for reaction in message["reactions"]:
|
1862 |
| - reaction_user_id = ( |
1863 |
| - reaction["user"]["id"] |
1864 |
| - if "user" in reaction |
1865 |
| - else reaction["user_id"] |
1866 |
| - ) |
1867 |
| - event_user_id = ( |
1868 |
| - event["user"]["user_id"] |
1869 |
| - if event.get("user") and isinstance(event["user"], dict) |
1870 |
| - else event["user_id"] |
1871 |
| - ) |
| 1867 | + reaction_user_id = self.get_user_id_from_reaction(reaction) |
| 1868 | + event_user_id = self.get_user_id_from_reaction(event) |
1872 | 1869 | if (
|
1873 | 1870 | reaction["emoji_code"] == event["emoji_code"]
|
1874 | 1871 | and reaction_user_id == event_user_id
|
|
0 commit comments