Skip to content

Commit 393e7d2

Browse files
committed
helper: Modify set_counts to use index['unread_msgs'].
Per-message 'sender_id' is not available for stream messages. Due to this, messages sent by user might cause undesirable behaviours.
1 parent 82ea627 commit 393e7d2

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

tests/model/test_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1278,7 +1278,7 @@ def test_update_read_status(self, mocker, model, event_op,
12781278
== flags_before)
12791279

12801280
if event_op == 'add':
1281-
set_count.assert_called_once_with(list(changed_ids),
1281+
set_count.assert_called_once_with(list(event_message_ids),
12821282
self.controller, -1)
12831283
elif event_op == 'remove':
12841284
set_count.assert_not_called()

zulipterminal/helper.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,8 @@ def _set_count_in_model(new_count: int, changed_messages: List[Message],
9797
if message['type'] == 'stream':
9898
key = (message['stream_id'], message['subject'])
9999
unreads = unread_counts['unread_topics']
100-
# self-pm has only one display_recipient
101-
# 1-1 pms have 2 display_recipient
102-
elif len(message['display_recipient']) <= 2:
100+
# 1-1 pms and self-pms
101+
elif message['type'] == 'private' and 'sender_id' in message:
103102
key = message['sender_id']
104103
unreads = unread_counts['unread_pms'] # type: ignore
105104
else: # If it's a group pm
@@ -137,13 +136,16 @@ def _set_count_in_view(controller: Any, new_count: int,
137136
all_pm = controller.view.pm_button
138137
all_mentioned = controller.view.mentioned_button
139138
for message in changed_messages:
140-
user_id = message['sender_id']
141-
142-
# If we sent this message, don't increase the count
143-
if user_id == controller.model.user_id:
144-
continue
145139

146140
msg_type = message['type']
141+
# FIXME no user_id for streams?
142+
if msg_type != 'stream':
143+
user_id = message['sender_id']
144+
145+
# If we sent this message, don't increase the count
146+
if user_id == controller.model.user_id:
147+
continue
148+
147149
add_to_counts = True
148150
if 'mentioned' in message['flags']:
149151
unread_counts['all_mentions'] += new_count
@@ -189,7 +191,7 @@ def set_count(id_list: List[int], controller: Any, new_count: int) -> None:
189191
# This method applies new_count for 'new message' (1) or 'read' (-1)
190192
# (we could ensure this in a different way by a different type)
191193
assert new_count == 1 or new_count == -1
192-
messages = controller.model.index['messages']
194+
messages = controller.model.index['unread_msgs']
193195
unread_counts = controller.model.unread_counts # type: UnreadCounts
194196
changed_messages = [messages[id] for id in id_list]
195197
_set_count_in_model(new_count, changed_messages, unread_counts)

zulipterminal/model.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -873,8 +873,7 @@ def _handle_update_message_flags_event(self, event: Event) -> None:
873873
self._update_rendered_view(message_id)
874874

875875
if event['operation'] == 'add' and flag_to_change == 'read':
876-
set_count(list(message_ids_to_mark & indexed_message_ids),
877-
self.controller, -1)
876+
set_count(list(message_ids_to_mark), self.controller, -1)
878877

879878
def _update_rendered_view(self, msg_id: int) -> None:
880879
"""

0 commit comments

Comments
 (0)