From 73ad0d468fcc80509b25bc505846d10ffbbd6e00 Mon Sep 17 00:00:00 2001 From: shenlong <139912620+shalong-tanwen@users.noreply.github.com> Date: Wed, 13 Sep 2023 03:50:16 +0000 Subject: [PATCH] feat(mobile): upload image assets before videos (#3958) * feat(mobile): upload image assets before videos (#3872) * feat(mobile): upload image assets before videos * mobile: sort by creation date before uploading assets * feat(mobile): upload newest assets first for foreground upload * feat(mobile): upload images before videos only for background backup --- .../background.service.dart | 1 + .../backup/services/backup.service.dart | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/mobile/lib/modules/backup/background_service/background.service.dart b/mobile/lib/modules/backup/background_service/background.service.dart index 0d0501c302..1deddddcdd 100644 --- a/mobile/lib/modules/backup/background_service/background.service.dart +++ b/mobile/lib/modules/backup/background_service/background.service.dart @@ -459,6 +459,7 @@ class BackgroundService { notifySingleProgress ? _onProgress : (sent, total) {}, notifySingleProgress ? _onSetCurrentBackupAsset : (asset) {}, _onBackupError, + sortAssets: true, ); if (!ok && !_cancellationToken!.isCancelled) { _showErrorNotification( diff --git a/mobile/lib/modules/backup/services/backup.service.dart b/mobile/lib/modules/backup/services/backup.service.dart index 76da214a4d..fe08c9fdef 100644 --- a/mobile/lib/modules/backup/services/backup.service.dart +++ b/mobile/lib/modules/backup/services/backup.service.dart @@ -202,8 +202,9 @@ class BackupService { Function(String, String, bool) uploadSuccessCb, Function(int, int) uploadProgressCb, Function(CurrentUploadAsset) setCurrentUploadAssetCb, - Function(ErrorUploadAsset) errorCb, - ) async { + Function(ErrorUploadAsset) errorCb, { + bool sortAssets = false, + }) async { if (Platform.isAndroid && !(await Permission.accessMediaLocation.status).isGranted) { // double check that permission is granted here, to guard against @@ -221,7 +222,19 @@ class BackupService { // DON'T KNOW WHY BUT THIS HELPS BACKGROUND BACKUP TO WORK ON IOS await PhotoManager.requestPermissionExtend(); - for (var entity in assetList) { + List assetsToUpload = sortAssets + // Upload images before video assets + // these are further sorted by using their creation date + ? assetList.sorted( + (a, b) { + final cmp = a.typeInt - b.typeInt; + if (cmp != 0) return cmp; + return a.createDateTime.compareTo(b.createDateTime); + }, + ) + : assetList.toList(); + + for (var entity in assetsToUpload) { try { if (entity.type == AssetType.video) { file = await entity.originFile;