From 4f6bffa61ac838abb3deee68ac20e476a8248f61 Mon Sep 17 00:00:00 2001 From: otsmr Date: Sat, 7 Feb 2026 23:02:36 +0100 Subject: [PATCH] fix: images was not reuploaded in case of a reupload request --- lib/main.dart | 9 +++++++++ lib/src/database/daos/mediafiles.dao.dart | 14 ++++++++++++++ lib/src/services/api/client2client/media.c2c.dart | 4 +++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 2b06327..0dc258d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -44,6 +44,15 @@ void main() async { } unawaited(performTwonlySafeBackup()); + + if (gUser.appVersion < 90) { + // BUG: Requested media files for reupload where not reuploaded because the wrong state... + await twonlyDB.mediaFilesDao.updateAllRetransmissionUploadingState(); + await updateUserdata((u) { + u.appVersion = 90; + return u; + }); + } } globalApplicationCacheDirectory = (await getApplicationCacheDirectory()).path; diff --git a/lib/src/database/daos/mediafiles.dao.dart b/lib/src/database/daos/mediafiles.dao.dart index dff6008..414cc29 100644 --- a/lib/src/database/daos/mediafiles.dao.dart +++ b/lib/src/database/daos/mediafiles.dao.dart @@ -131,4 +131,18 @@ class MediaFilesDao extends DatabaseAccessor ..limit(100)) .watch(); } + + Future updateAllRetransmissionUploadingState() async { + await (update(mediaFiles) + ..where( + (t) => + t.uploadState.equals(UploadState.uploading.name) & + t.reuploadRequestedBy.isNotNull(), + )) + .write( + const MediaFilesCompanion( + uploadState: Value(UploadState.preprocessing), + ), + ); + } } diff --git a/lib/src/services/api/client2client/media.c2c.dart b/lib/src/services/api/client2client/media.c2c.dart index d0c8e3a..6795acd 100644 --- a/lib/src/services/api/client2client/media.c2c.dart +++ b/lib/src/services/api/client2client/media.c2c.dart @@ -6,6 +6,7 @@ import 'package:twonly/src/database/tables/messages.table.dart'; import 'package:twonly/src/database/twonly.db.dart'; import 'package:twonly/src/model/protobuf/client/generated/messages.pb.dart'; import 'package:twonly/src/services/api/mediafiles/download.service.dart'; +import 'package:twonly/src/services/api/mediafiles/upload.service.dart'; import 'package:twonly/src/services/api/utils.dart'; import 'package:twonly/src/services/flame.service.dart'; import 'package:twonly/src/services/mediafiles/mediafile.service.dart'; @@ -178,9 +179,10 @@ Future handleMediaUpdate( await twonlyDB.mediaFilesDao.updateMedia( mediaFile.mediaId, MediaFilesCompanion( - uploadState: const Value(UploadState.uploading), + uploadState: const Value(UploadState.preprocessing), reuploadRequestedBy: Value(reuploadRequestedBy), ), ); + unawaited(startBackgroundMediaUpload(MediaFileService(mediaFile))); } }