fix non opening messages

This commit is contained in:
otsmr 2025-04-06 16:32:14 +02:00
parent 767e9129e1
commit 4af2ef8260
3 changed files with 27 additions and 2 deletions

View file

@ -104,6 +104,16 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
.write(updates); .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( Future updateMessageByOtherUser(
int userId, int messageId, MessagesCompanion updatedValues) { int userId, int messageId, MessagesCompanion updatedValues) {
return (update(messages) return (update(messages)
@ -161,4 +171,11 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
SingleOrNullSelectable<Message> getMessageByMessageId(int messageId) { SingleOrNullSelectable<Message> getMessageByMessageId(int messageId) {
return select(messages)..where((t) => t.messageId.equals(messageId)); return select(messages)..where((t) => t.messageId.equals(messageId));
} }
SingleOrNullSelectable<Message> getMessageByOtherMessageId(
int fromUserId, int messageId) {
return select(messages)
..where((t) =>
t.messageOtherId.equals(messageId) & t.contactId.equals(fromUserId));
}
} }

View file

@ -181,8 +181,6 @@ Future sendTextMessage(
Future notifyContactAboutOpeningMessage( Future notifyContactAboutOpeningMessage(
int fromUserId, int messageOtherId) async { int fromUserId, int messageOtherId) async {
//await DbMessages.userOpenedOtherMessage(fromUserId, messageOtherId);
encryptAndSendMessage( encryptAndSendMessage(
null, null,
fromUserId, fromUserId,

View file

@ -181,6 +181,16 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
message.messageId!, message.messageId!,
update, update,
); );
final openedMessage = await twonlyDatabase.messagesDao
.getMessageByMessageId(message.messageId!)
.getSingleOrNull();
if (openedMessage != null &&
openedMessage.kind == MessageKind.textMessage) {
await twonlyDatabase.messagesDao.openedAllNonMediaMessagesFromOtherUser(
fromUserId,
);
}
break; break;
case MessageKind.rejectRequest: case MessageKind.rejectRequest: