@@ -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
@@ -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 )
0 commit comments