aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2026-10-23 16:52:20 +0200
committerMarvin W <git@larma.de>2026-10-23 17:01:44 +0200
commitd314154abf1bf9a7f7ce20115c3c8c4512f73b15 (patch)
treece8c98fa6dbec50f696fedb644217057ddf151a0 /libdino/src/service
parentef925d1897d581cba0c61370f3aa9d80dac94b7c (diff)
libdino: Stop prefetching read_up_to message for each conversation
Diffstat (limited to 'libdino/src/service')
-rw-r--r--libdino/src/service/chat_interaction.vala4
-rw-r--r--libdino/src/service/counterpart_interaction_manager.vala9
2 files changed, 9 insertions, 4 deletions
diff --git a/libdino/src/service/chat_interaction.vala b/libdino/src/service/chat_interaction.vala
index 9c8106a0..1e988382 100644
--- a/libdino/src/service/chat_interaction.vala
+++ b/libdino/src/service/chat_interaction.vala
@@ -152,7 +152,7 @@ public class ChatInteraction : StreamInteractionModule, Object {
if (conversation == null) return false;
Entities.Message? message = stream_interactor.get_module(MessageStorage.IDENTITY).get_last_message(conversation);
if (message == null || message.direction == Entities.Message.DIRECTION_SENT) return false;
- if (message.equals(conversation.read_up_to)) return false;
+ if (message.id == conversation.read_up_to_message_id) return false;
bool sent_marker = yield send_and_mark_message_displayed(conversation, message);
return sent_marker;
@@ -224,7 +224,7 @@ public class ChatInteraction : StreamInteractionModule, Object {
if (message.type_ == Message.Type.GROUPCHAT) return false;
if (message.stanza_id == null) return false;
if (message.direction == Entities.Message.DIRECTION_SENT) return false;
- if (message.equals(conversation.read_up_to)) return false;
+ if (message.id == conversation.read_up_to_message_id) return false;
if (conversation.get_send_marker_setting(stream_interactor) != Conversation.Setting.ON) return false;
XmppStream? stream = stream_interactor.get_stream(conversation.account);
diff --git a/libdino/src/service/counterpart_interaction_manager.vala b/libdino/src/service/counterpart_interaction_manager.vala
index f60cfb20..d6ca73a9 100644
--- a/libdino/src/service/counterpart_interaction_manager.vala
+++ b/libdino/src/service/counterpart_interaction_manager.vala
@@ -159,8 +159,13 @@ public class CounterpartInteractionManager : StreamInteractionModule, Object {
public bool mark_displayed_up_to_message(Conversation conversation, Message message) {
// 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 false;
- conversation.read_up_to = message;
+ if (conversation.read_up_to_message_id != -1) {
+ Message read_up_to_message = stream_interactor.get_module(MessageStorage.IDENTITY).get_message_by_id(conversation.read_up_to_message_id, conversation);
+ if (read_up_to_message.local_time.compare(message.local_time) > 0) {
+ return false;
+ }
+ }
+ conversation.read_up_to_message_id = message.id;
ContentItem? content_item = stream_interactor.get_module(ContentItemStore.IDENTITY).get_content_item_for_message(conversation, message);
if (content_item == null) return true;