Skip to content

Commit 3c79798

Browse files
committed
Add new unread_msgs structure to index
Fixes #496
1 parent e5da0fe commit 3c79798

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

zulipterminal/helper.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
'search': Set[int], # {message_id, ...}
3838
# Downloaded message data
3939
'messages': Dict[int, Message], # message_id: Message
40+
# unread message data
41+
'unread_msgs': Set[int] # message_ids
4042
})
4143

4244
initial_index = Index(
@@ -51,6 +53,7 @@
5153
topics=defaultdict(list),
5254
search=set(),
5355
messages=defaultdict(dict),
56+
unread_msgs=set(),
5457
)
5558

5659

@@ -350,6 +353,22 @@ def index_messages(messages: List[Any],
350353
return index
351354

352355

356+
def index_unread_messsages(unread_msgs: Dict[str, Any], index: Index) -> Index:
357+
358+
for pm in unread_msgs['pms']:
359+
message_ids = pm['unread_message_ids']
360+
index['unread_msgs'].update(message_ids)
361+
362+
for stream in unread_msgs['streams']:
363+
message_ids = stream['unread_message_ids']
364+
index['unread_msgs'].update(message_ids)
365+
366+
for group_pm in unread_msgs['huddles']:
367+
message_ids = group_pm['unread_message_ids']
368+
index['unread_msgs'].update(message_ids)
369+
370+
return index
371+
353372
def classify_unread_counts(model: Any) -> UnreadCounts:
354373
# TODO: support group pms
355374
unread_msg_counts = model.initial_data['unread_msgs']

zulipterminal/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
initial_index,
2323
Message,
2424
notify,
25+
index_unread_messsages,
2526
)
2627
from zulipterminal.ui_tools.utils import create_msg_box_list
2728

@@ -446,6 +447,7 @@ def _update_initial_data(self) -> None:
446447
self.user_email = self.initial_data['email']
447448
self.user_full_name = self.initial_data['full_name']
448449
self.server_name = self.initial_data['realm_name']
450+
self.index = index_unread_messsages(self.initial_data['unread_msgs'], self.index)
449451
else:
450452
failures = [name for name, result in results.items() if not result]
451453
raise ServerConnectionFailure(", ".join(failures))

0 commit comments

Comments
 (0)