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