From 9f22df9e65f0877f47ca66f17bd55909ef954558 Mon Sep 17 00:00:00 2001 From: otsmr Date: Wed, 30 Apr 2025 23:22:36 +0200 Subject: [PATCH] do not delete own stored media files --- lib/src/database/daos/messages_dao.dart | 4 ++++ lib/src/providers/api/media_received.dart | 10 +++++++--- lib/src/views/chats/chat_item_details_view.dart | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/src/database/daos/messages_dao.dart b/lib/src/database/daos/messages_dao.dart index dd40765..165285e 100644 --- a/lib/src/database/daos/messages_dao.dart +++ b/lib/src/database/daos/messages_dao.dart @@ -186,6 +186,10 @@ class MessagesDao extends DatabaseAccessor SingleOrNullSelectable getMessageByMessageId(int messageId) { return select(messages)..where((t) => t.messageId.equals(messageId)); } + + SingleOrNullSelectable getMessageByMediaUploadId(int mediaUploadId{ + return select(messages)..where((t) => t.mediaUploadId.equals(mediaUploadId)); + } SingleOrNullSelectable getMessageByOtherMessageId( int fromUserId, int messageId) { diff --git a/lib/src/providers/api/media_received.dart b/lib/src/providers/api/media_received.dart index c44d7e9..27186c4 100644 --- a/lib/src/providers/api/media_received.dart +++ b/lib/src/providers/api/media_received.dart @@ -322,9 +322,13 @@ Future purgeMediaFiles(Directory directory) async { if (match != null) { // Parse the integer and add it to the list int messageId = int.parse(match.group(0)!); - Message? message = await twonlyDatabase.messagesDao - .getMessageByMessageId(messageId) - .getSingleOrNull(); + Message? message = (directory.path.endsWith("received")) + ? await twonlyDatabase.messagesDao + .getMessageByMediaUploadId(messageId) + .getSingleOrNull() + : await twonlyDatabase.messagesDao + .getMessageByMessageId(messageId) + .getSingleOrNull(); if ((message == null) || (message.openedAt != null && !message.mediaStored) || diff --git a/lib/src/views/chats/chat_item_details_view.dart b/lib/src/views/chats/chat_item_details_view.dart index 4d4b9c5..e220243 100644 --- a/lib/src/views/chats/chat_item_details_view.dart +++ b/lib/src/views/chats/chat_item_details_view.dart @@ -307,7 +307,8 @@ class ChatListEntry extends StatelessWidget { child = GestureDetector( onDoubleTap: () async { - if (message.openedAt == null && message.messageOtherId != null) { + if (message.openedAt == null && message.messageOtherId != null || + message.mediaStored) { return; } if (await existsMediaFile(message.messageId, "png")) {