@@ -98,9 +98,8 @@ def _set_count_in_model(new_count: int, changed_messages: List[Message],
9898 if message ['type' ] == 'stream' :
9999 key = (message ['stream_id' ], message ['subject' ])
100100 unreads = unread_counts ['unread_topics' ]
101- # self-pm has only one display_recipient
102- # 1-1 pms have 2 display_recipient
103- elif len (message ['display_recipient' ]) <= 2 :
101+ # 1-1 pms and self-pms
102+ elif message ['type' ] == 'private' and 'sender_id' in message :
104103 key = message ['sender_id' ]
105104 unreads = unread_counts ['unread_pms' ] # type: ignore
106105 else : # If it's a group pm
@@ -138,13 +137,16 @@ def _set_count_in_view(controller: Any, new_count: int,
138137 all_pm = controller .view .pm_button
139138 all_mentioned = controller .view .mentioned_button
140139 for message in changed_messages :
141- user_id = message ['sender_id' ]
142-
143- # If we sent this message, don't increase the count
144- if user_id == controller .model .user_id :
145- continue
146140
147141 msg_type = message ['type' ]
142+ # FIXME no user_id for streams?
143+ if msg_type != 'stream' :
144+ user_id = message ['sender_id' ]
145+
146+ # If we sent this message, don't increase the count
147+ if user_id == controller .model .user_id :
148+ continue
149+
148150 add_to_counts = True
149151 if 'mentioned' in message ['flags' ]:
150152 unread_counts ['all_mentions' ] += new_count
@@ -190,7 +192,7 @@ def set_count(id_list: List[int], controller: Any, new_count: int) -> None:
190192 # This method applies new_count for 'new message' (1) or 'read' (-1)
191193 # (we could ensure this in a different way by a different type)
192194 assert new_count == 1 or new_count == - 1
193- messages = controller .model .index ['messages ' ]
195+ messages = controller .model .index ['unread_msgs ' ]
194196 unread_counts = controller .model .unread_counts # type: UnreadCounts
195197 changed_messages = [messages [id ] for id in id_list ]
196198 _set_count_in_model (new_count , changed_messages , unread_counts )
0 commit comments