@@ -97,9 +97,8 @@ def _set_count_in_model(new_count: int, changed_messages: List[Message],
97
97
if message ['type' ] == 'stream' :
98
98
key = (message ['stream_id' ], message ['subject' ])
99
99
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 :
103
102
key = message ['sender_id' ]
104
103
unreads = unread_counts ['unread_pms' ] # type: ignore
105
104
else : # If it's a group pm
@@ -136,13 +135,16 @@ def _set_count_in_view(controller: Any, new_count: int,
136
135
all_msg = controller .view .home_button
137
136
all_pm = controller .view .pm_button
138
137
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
144
138
145
139
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
+
146
148
add_to_counts = True
147
149
if msg_type == 'stream' :
148
150
stream_id = message ['stream_id' ]
@@ -184,7 +186,7 @@ def set_count(id_list: List[int], controller: Any, new_count: int) -> None:
184
186
# This method applies new_count for 'new message' (1) or 'read' (-1)
185
187
# (we could ensure this in a different way by a different type)
186
188
assert new_count == 1 or new_count == - 1
187
- messages = controller .model .index ['messages ' ]
189
+ messages = controller .model .index ['unread_msgs ' ]
188
190
unread_counts = controller .model .unread_counts # type: UnreadCounts
189
191
changed_messages = [messages [id ] for id in id_list ]
190
192
_set_count_in_model (new_count , changed_messages , unread_counts )
0 commit comments