fix crash

This commit is contained in:
otsmr 2025-05-02 20:42:06 +02:00
parent 2919d8093b
commit 41493894cb
2 changed files with 26 additions and 18 deletions

View file

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

View file

@ -333,10 +333,10 @@ Future<void> purgeMediaFiles(Directory directory) async {
// Parse the integer and add it to the list // Parse the integer and add it to the list
int fileId = int.parse(match.group(0)!); int fileId = int.parse(match.group(0)!);
try {
Message? message = (directory.path.endsWith("send")) Message? message = (directory.path.endsWith("send"))
? await twonlyDatabase.messagesDao ? await twonlyDatabase.messagesDao
.getMessageByMediaUploadId(fileId) .getMessageByMediaUploadId(fileId)
.getSingleOrNull()
: await twonlyDatabase.messagesDao : await twonlyDatabase.messagesDao
.getMessageByMessageId(fileId) .getMessageByMessageId(fileId)
.getSingleOrNull(); .getSingleOrNull();
@ -346,13 +346,12 @@ Future<void> purgeMediaFiles(Directory directory) async {
!message.mediaStored && !message.mediaStored &&
message.acknowledgeByServer == true) || message.acknowledgeByServer == true) ||
message.errorWhileSending) { message.errorWhileSending) {
try {
file.deleteSync(); file.deleteSync();
}
} catch (e) { } catch (e) {
Logger("media_received.dart").shout("$e"); Logger("media_received.dart").shout("$e");
} }
} }
} }
} }
}
} }