Skip to content

Commit 69ecfac

Browse files
committed
model: Fetch emoji using events
Fetching emoji using events ensures that emoji updates are not missed. Initial state of emoji is updated from initial_data.
1 parent c7674a0 commit 69ecfac

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

zulipterminal/model.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@
5353
'stream_id': int,
5454
'stream_ids': List[int], # NOTE: replaces 'stream_id' in ZFL 35 for peer*
5555
'value': bool,
56-
'message_ids': List[int] # Present when subject of msg(s) is updated
56+
'message_ids': List[int], # Present when subject of msg(s) is updated
57+
# realm emoji:
58+
'realm_emoji': Dict[str, Any]
5759
}, total=False) # Each Event will only have a subset of these
5860

5961
EditPropagateMode = Literal['change_one', 'change_all', 'change_later']
@@ -103,6 +105,7 @@ def __init__(self, controller: Any) -> None:
103105
('subscription', self._handle_subscription_event),
104106
('typing', self._handle_typing_event),
105107
('update_message_flags', self._handle_update_message_flags_event),
108+
('realm_emoji', self._handle_update_emoji_event)
106109
]) # type: OrderedDict[str, Callable[[Event], None]]
107110

108111
self.initial_data = {} # type: Dict[str, Any]
@@ -145,7 +148,7 @@ def __init__(self, controller: Any) -> None:
145148
for name, data in unicode_emoji_data.items():
146149
data['type'] = 'unicode_emoji'
147150
typed_unicode_emoji_data = cast(NamedEmojiData, unicode_emoji_data)
148-
custom_emoji_data = self.fetch_custom_emojis()
151+
custom_emoji_data = self.initial_data['realm_emoji']
149152
zulip_extra_emoji = {
150153
'zulip': {'code': 'zulip', 'type': 'zulip_extra_emoji'}
151154
} # type: NamedEmojiData
@@ -1086,6 +1089,13 @@ def _handle_update_message_flags_event(self, event: Event) -> None:
10861089
set_count(list(message_ids_to_mark & indexed_message_ids),
10871090
self.controller, -1)
10881091

1092+
def _handle_update_emoji_event(self, event: Event) -> None:
1093+
"""
1094+
Handle update of emoji
1095+
"""
1096+
realm_emojis = event['realm_emoji']
1097+
self.active_emoji_data.update(realm_emojis)
1098+
10891099
def _update_rendered_view(self, msg_id: int) -> None:
10901100
"""
10911101
Helper method called by various _handle_* methods
@@ -1143,6 +1153,7 @@ def _register_desired_events(self, *, fetch_data: bool=False) -> str:
11431153
'muted_topics',
11441154
'realm_user', # Enables cross_realm_bots
11451155
'realm_user_groups',
1156+
'realm_emoji',
11461157
# zulip_version and zulip_feature_level are always returned in
11471158
# POST /register from Feature level 3.
11481159
'zulip_version',

0 commit comments

Comments
 (0)