Skip to content

Commit e9930ad

Browse files
committed
bugfix: starred_messages: Update messages in starred narrow.
The commit updates ZT behavior in starred message section to match the web app. The current behavior involves removing the message when the user moves out of the starred section. Fixes #940.
1 parent 97517f9 commit e9930ad

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

tests/model/test_model.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,7 +1531,10 @@ def test_update_star_status(self, mocker, model, event_op,
15311531
operation, model.server_feature_level = update_message_flags_operation
15321532

15331533
model.index = dict(messages={msg_id: {'flags': flags_before}
1534-
for msg_id in indexed_ids})
1534+
for msg_id in indexed_ids},
1535+
starred_msg_ids=set([msg_id
1536+
for msg_id in indexed_ids
1537+
if 'starred' in flags_before]))
15351538
event = {
15361539
'type': 'update_message_flags',
15371540
'messages': event_message_ids,
@@ -1543,7 +1546,10 @@ def test_update_star_status(self, mocker, model, event_op,
15431546
set_count = mocker.patch('zulipterminal.model.set_count')
15441547

15451548
model._handle_update_message_flags_event(event)
1546-
1549+
assert (model.index['starred_msg_ids']
1550+
== set([message_id for message_id in model.index['messages']
1551+
if 'starred' in
1552+
model.index['messages'][message_id]['flags']]))
15471553
changed_ids = set(indexed_ids) & set(event_message_ids)
15481554
for changed_id in changed_ids:
15491555
assert model.index['messages'][changed_id]['flags'] == flags_after

zulipterminal/model.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,9 +1153,14 @@ def _handle_update_message_flags_event(self, event: Event) -> None:
11531153
if operation == 'add':
11541154
if flag_to_change not in msg['flags']:
11551155
msg['flags'].append(flag_to_change)
1156+
if flag_to_change == 'starred':
1157+
self.index['starred_msg_ids'].add(message_id)
11561158
elif operation == 'remove':
11571159
if flag_to_change in msg['flags']:
11581160
msg['flags'].remove(flag_to_change)
1161+
if(message_id in self.index['starred_msg_ids']
1162+
and flag_to_change == 'starred'):
1163+
self.index['starred_msg_ids'].remove(message_id)
11591164
else:
11601165
raise RuntimeError(event, msg['flags'])
11611166

zulipterminal/ui_tools/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ def load_old_messages(self, anchor: int) -> None:
113113
ids_to_keep = self.model.get_message_ids_in_current_narrow()
114114
if self.log:
115115
top_message_id = self.log[0].original_widget.message['id']
116-
ids_to_keep.remove(top_message_id) # update this id
116+
if top_message_id in ids_to_keep:
117+
ids_to_keep.remove(top_message_id) # update this id
117118
no_update_baseline = {top_message_id}
118119
else:
119120
no_update_baseline = set()

0 commit comments

Comments
 (0)