From 4cc6215cda2f5585e7e45e5a613930341cf4bcd3 Mon Sep 17 00:00:00 2001 From: otsmr Date: Sat, 3 May 2025 14:21:39 +0200 Subject: [PATCH] hot fix --- lib/src/database/daos/messages_dao.dart | 12 ++------ lib/src/providers/api/media_received.dart | 36 +++++++++++++++-------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/src/database/daos/messages_dao.dart b/lib/src/database/daos/messages_dao.dart index e3025e6..871c82f 100644 --- a/lib/src/database/daos/messages_dao.dart +++ b/lib/src/database/daos/messages_dao.dart @@ -187,18 +187,10 @@ class MessagesDao extends DatabaseAccessor return select(messages)..where((t) => t.messageId.equals(messageId)); } - Future getMessageByMediaUploadId(int mediaUploadId) async { - List msgs = await (select(messages) + Future> getMessagesByMediaUploadId(int mediaUploadId) async { + return await (select(messages) ..where((t) => t.mediaUploadId.equals(mediaUploadId))) .get(); - if (msgs.isEmpty) return null; - if (msgs.length == 1) return msgs[0]; - - /// when there are multiple message ids with this id delete all but the last one - for (var i = 0; i < (msgs.length - 1); i++) { - await deleteMessageById(msgs[i].messageId); - } - return msgs[msgs.length - 1]; } SingleOrNullSelectable getMessageByOtherMessageId( diff --git a/lib/src/providers/api/media_received.dart b/lib/src/providers/api/media_received.dart index c15a775..2a626ea 100644 --- a/lib/src/providers/api/media_received.dart +++ b/lib/src/providers/api/media_received.dart @@ -334,19 +334,31 @@ Future purgeMediaFiles(Directory directory) async { int fileId = int.parse(match.group(0)!); try { - Message? message = (directory.path.endsWith("send")) - ? await twonlyDatabase.messagesDao - .getMessageByMediaUploadId(fileId) - : await twonlyDatabase.messagesDao - .getMessageByMessageId(fileId) - .getSingleOrNull(); + if (directory.path.endsWith("send")) { + List messages = await twonlyDatabase.messagesDao + .getMessagesByMediaUploadId(fileId); + bool canBeDeleted = true; - if ((message == null) || - (message.openedAt != null && - !message.mediaStored && - message.acknowledgeByServer == true) || - message.errorWhileSending) { - file.deleteSync(); + for (final message in messages) { + if ((message.openedAt == null && !message.errorWhileSending) || + message.mediaStored) { + canBeDeleted = false; + } + } + if (canBeDeleted) { + file.deleteSync(); + } + } else { + Message? message = await twonlyDatabase.messagesDao + .getMessageByMessageId(fileId) + .getSingleOrNull(); + if ((message == null) || + (message.openedAt != null && + !message.mediaStored && + message.acknowledgeByServer == true) || + message.errorWhileSending) { + file.deleteSync(); + } } } catch (e) { Logger("media_received.dart").shout("$e");