From 1e89809f27ab83e982bb94b11d9e7525bb68e716 Mon Sep 17 00:00:00 2001 From: otsmr Date: Mon, 21 Apr 2025 17:56:25 +0200 Subject: [PATCH] fix #117 --- lib/main.dart | 1 + lib/src/database/daos/messages_dao.dart | 14 ++++++++++++++ lib/src/providers/api/media.dart | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 193e7ef..e4020e1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -30,6 +30,7 @@ void main() async { apiProvider = ApiProvider(); twonlyDatabase = TwonlyDatabase(); + await twonlyDatabase.messagesDao.appRestarted(); runApp( MultiProvider( diff --git a/lib/src/database/daos/messages_dao.dart b/lib/src/database/daos/messages_dao.dart index 6e3b7d7..c446954 100644 --- a/lib/src/database/daos/messages_dao.dart +++ b/lib/src/database/daos/messages_dao.dart @@ -104,6 +104,20 @@ class MessagesDao extends DatabaseAccessor .write(updates); } + Future appRestarted() { + // All media files in the downloading state are reseteded to the pending state + // When the app is used in mobile network, they will not be downloaded at the start + // if they are not yet downloaded... + final updates = + MessagesCompanion(downloadState: Value(DownloadState.pending)); + return (update(messages) + ..where((t) => + t.messageOtherId.isNotNull() & + t.downloadState.equals(DownloadState.downloading.index) & + t.kind.equals(MessageKind.media.name))) + .write(updates); + } + Future openedAllNonMediaMessagesFromOtherUser(int contactId) { final updates = MessagesCompanion(openedAt: Value(DateTime.now())); return (update(messages) diff --git a/lib/src/providers/api/media.dart b/lib/src/providers/api/media.dart index 69c0137..55bd571 100644 --- a/lib/src/providers/api/media.dart +++ b/lib/src/providers/api/media.dart @@ -27,7 +27,7 @@ Future tryDownloadAllMediaFiles() async { MessageContent.fromJson(message.kind, jsonDecode(message.contentJson!)); if (content is MediaMessageContent) { - tryDownloadMedia( + await tryDownloadMedia( message.messageId, message.contactId, content,