diff options
Diffstat (limited to 'libdino/src/service/chat_interaction.vala')
| -rw-r--r-- | libdino/src/service/chat_interaction.vala | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libdino/src/service/chat_interaction.vala b/libdino/src/service/chat_interaction.vala index 1e988382..def9ea86 100644 --- a/libdino/src/service/chat_interaction.vala +++ b/libdino/src/service/chat_interaction.vala @@ -51,6 +51,24 @@ public class ChatInteraction : StreamInteractionModule, Object { return (int) query.count(); } + public async void mark_all_as_read() { + ContentItemStore content_item_store = stream_interactor.get_module(ContentItemStore.IDENTITY); + CounterpartInteractionManager counterpart_interaction_manager = stream_interactor.get_module(CounterpartInteractionManager.IDENTITY); + + foreach (Conversation conversation in stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations()) { + if (get_num_unread(conversation) == 0) continue; + + ContentItem? latest_item = content_item_store.get_latest(conversation); + if (latest_item == null) continue; + + Message? message = content_item_store.get_message_for_content_item(conversation, latest_item); + if (message != null) { + yield send_and_mark_message_displayed(conversation, message); + } + counterpart_interaction_manager.mark_displayed_up_to_content_item(conversation, latest_item); + } + } + public bool is_active_focus(Conversation? conversation = null) { if (conversation != null) { return focus_in && conversation.equals(this.selected_conversation); |
