From 71be2abb6a007fd9b4ed3164d70f5cb95d49ce69 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Wed, 29 Apr 2020 21:31:23 +0200 Subject: Store last read content item for conversations fixes #495 --- libdino/src/service/counterpart_interaction_manager.vala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libdino/src/service/counterpart_interaction_manager.vala') diff --git a/libdino/src/service/counterpart_interaction_manager.vala b/libdino/src/service/counterpart_interaction_manager.vala index 10fbacd6..1e5fd0e2 100644 --- a/libdino/src/service/counterpart_interaction_manager.vala +++ b/libdino/src/service/counterpart_interaction_manager.vala @@ -150,8 +150,13 @@ public class CounterpartInteractionManager : StreamInteractionModule, Object { } if (message == null) return; // Don't move read marker backwards because we get old info from another client - if (conversation.read_up_to == null || conversation.read_up_to.local_time.compare(message.local_time) > 0) return; + if (conversation.read_up_to != null && conversation.read_up_to.local_time.compare(message.local_time) > 0) return; conversation.read_up_to = message; + + ContentItem? content_item = stream_interactor.get_module(ContentItemStore.IDENTITY).get_item(conversation, 1, message.id); + ContentItem? read_up_to_item = stream_interactor.get_module(ContentItemStore.IDENTITY).get_item_by_id(conversation, conversation.read_up_to_item); + if (read_up_to_item != null && read_up_to_item.sort_time.compare(content_item.sort_time) > 0) return; + conversation.read_up_to_item = content_item.id; } else { // We can't currently handle chat markers in MUCs if (conversation.type_ == Conversation.Type.GROUPCHAT) return; -- cgit v1.2.3-70-g09d2