Skip to content

Commit 2a628e7

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 0ac15e8 commit 2a628e7

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

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 msg['type'] == 'private' and 'sender_id' in msg:
103102
key = message['sender_id']
104103
unreads = unread_counts['unread_pms'] # type: ignore
105104
else: # If it's a group pm
@@ -136,13 +135,16 @@ def _set_count_in_view(controller: Any, new_count: int,
136135
all_msg = controller.view.home_button
137136
all_pm = controller.view.pm_button
138137
for message in changed_messages:
139-
user_id = message['sender_id']
140-
141-
# If we sent this message, don't increase the count
142-
if user_id == controller.model.user_id:
143-
continue
144138

145139
msg_type = message['type']
140+
# FIXME no user_id for streams?
141+
if msg_type != 'stream':
142+
user_id = message['sender_id']
143+
144+
# If we sent this message, don't increase the count
145+
if user_id == controller.model.user_id:
146+
continue
147+
146148
add_to_counts = True
147149
if msg_type == 'stream':
148150
stream_id = message['stream_id']
@@ -184,7 +186,7 @@ def set_count(id_list: List[int], controller: Any, new_count: int) -> None:
184186
# This method applies new_count for 'new message' (1) or 'read' (-1)
185187
# (we could ensure this in a different way by a different type)
186188
assert new_count == 1 or new_count == -1
187-
messages = controller.model.index['messages']
189+
messages = controller.model.index['unread_msgs']
188190
unread_counts = controller.model.unread_counts # type: UnreadCounts
189191
changed_messages = [messages[id] for id in id_list]
190192
_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
@@ -840,8 +840,7 @@ def update_message_flag_status(self, event: Event) -> None:
840840
self.update_rendered_view(message_id)
841841

842842
if event['operation'] == 'add' and flag_to_change == 'read':
843-
set_count(list(message_ids_to_mark & indexed_message_ids),
844-
self.controller, -1)
843+
set_count(list(message_ids_to_mark), self.controller, -1)
845844

846845
def update_rendered_view(self, msg_id: int) -> None:
847846
# Update new content in the rendered view

0 commit comments

Comments
 (0)