This commit is contained in:
otsmr 2025-05-03 14:21:39 +02:00
parent 1d459a6719
commit 4cc6215cda
2 changed files with 26 additions and 22 deletions

View file

@ -187,18 +187,10 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
return select(messages)..where((t) => t.messageId.equals(messageId)); return select(messages)..where((t) => t.messageId.equals(messageId));
} }
Future<Message?> getMessageByMediaUploadId(int mediaUploadId) async { Future<List<Message>> getMessagesByMediaUploadId(int mediaUploadId) async {
List<Message> msgs = await (select(messages) return await (select(messages)
..where((t) => t.mediaUploadId.equals(mediaUploadId))) ..where((t) => t.mediaUploadId.equals(mediaUploadId)))
.get(); .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<Message> getMessageByOtherMessageId( SingleOrNullSelectable<Message> getMessageByOtherMessageId(

View file

@ -334,13 +334,24 @@ Future<void> purgeMediaFiles(Directory directory) async {
int fileId = int.parse(match.group(0)!); int fileId = int.parse(match.group(0)!);
try { try {
Message? message = (directory.path.endsWith("send")) if (directory.path.endsWith("send")) {
? await twonlyDatabase.messagesDao List<Message> messages = await twonlyDatabase.messagesDao
.getMessageByMediaUploadId(fileId) .getMessagesByMediaUploadId(fileId);
: await twonlyDatabase.messagesDao bool canBeDeleted = true;
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) .getMessageByMessageId(fileId)
.getSingleOrNull(); .getSingleOrNull();
if ((message == null) || if ((message == null) ||
(message.openedAt != null && (message.openedAt != null &&
!message.mediaStored && !message.mediaStored &&
@ -348,6 +359,7 @@ Future<void> purgeMediaFiles(Directory directory) async {
message.errorWhileSending) { message.errorWhileSending) {
file.deleteSync(); file.deleteSync();
} }
}
} catch (e) { } catch (e) {
Logger("media_received.dart").shout("$e"); Logger("media_received.dart").shout("$e");
} }