From 4af2ef82605091dfab547f4b9cafd114467fe530 Mon Sep 17 00:00:00 2001 From: otsmr Date: Sun, 6 Apr 2025 16:32:14 +0200 Subject: [PATCH] fix non opening messages --- lib/src/database/daos/messages_dao.dart | 17 +++++++++++++++++ lib/src/providers/api/api.dart | 2 -- lib/src/providers/api/server_messages.dart | 10 ++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/src/database/daos/messages_dao.dart b/lib/src/database/daos/messages_dao.dart index d0ef2d4..6e3b7d7 100644 --- a/lib/src/database/daos/messages_dao.dart +++ b/lib/src/database/daos/messages_dao.dart @@ -104,6 +104,16 @@ class MessagesDao extends DatabaseAccessor .write(updates); } + Future openedAllNonMediaMessagesFromOtherUser(int contactId) { + final updates = MessagesCompanion(openedAt: Value(DateTime.now())); + return (update(messages) + ..where((t) => + t.contactId.equals(contactId) & + t.openedAt.isNull() & + t.kind.equals(MessageKind.media.name).not())) + .write(updates); + } + Future updateMessageByOtherUser( int userId, int messageId, MessagesCompanion updatedValues) { return (update(messages) @@ -161,4 +171,11 @@ class MessagesDao extends DatabaseAccessor SingleOrNullSelectable getMessageByMessageId(int messageId) { return select(messages)..where((t) => t.messageId.equals(messageId)); } + + SingleOrNullSelectable getMessageByOtherMessageId( + int fromUserId, int messageId) { + return select(messages) + ..where((t) => + t.messageOtherId.equals(messageId) & t.contactId.equals(fromUserId)); + } } diff --git a/lib/src/providers/api/api.dart b/lib/src/providers/api/api.dart index d312d40..bddbdce 100644 --- a/lib/src/providers/api/api.dart +++ b/lib/src/providers/api/api.dart @@ -181,8 +181,6 @@ Future sendTextMessage( Future notifyContactAboutOpeningMessage( int fromUserId, int messageOtherId) async { - //await DbMessages.userOpenedOtherMessage(fromUserId, messageOtherId); - encryptAndSendMessage( null, fromUserId, diff --git a/lib/src/providers/api/server_messages.dart b/lib/src/providers/api/server_messages.dart index 234a88a..ef38d0a 100644 --- a/lib/src/providers/api/server_messages.dart +++ b/lib/src/providers/api/server_messages.dart @@ -181,6 +181,16 @@ Future handleNewMessage(int fromUserId, Uint8List body) async { message.messageId!, update, ); + final openedMessage = await twonlyDatabase.messagesDao + .getMessageByMessageId(message.messageId!) + .getSingleOrNull(); + if (openedMessage != null && + openedMessage.kind == MessageKind.textMessage) { + await twonlyDatabase.messagesDao.openedAllNonMediaMessagesFromOtherUser( + fromUserId, + ); + } + break; case MessageKind.rejectRequest: