From 912a13ea0de3303624b38714e8d337551b4c4ef1 Mon Sep 17 00:00:00 2001 From: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Date: Sun, 27 Aug 2023 07:18:17 +0000 Subject: [PATCH] feat(mobile): upload image assets before videos (#3872) * feat(mobile): upload image assets before videos * mobile: sort by creation date before uploading assets --- .../modules/backup/services/backup.service.dart | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/mobile/lib/modules/backup/services/backup.service.dart b/mobile/lib/modules/backup/services/backup.service.dart index 678f3a3867..8535496e10 100644 --- a/mobile/lib/modules/backup/services/backup.service.dart +++ b/mobile/lib/modules/backup/services/backup.service.dart @@ -218,7 +218,18 @@ class BackupService { bool anyErrors = false; final List duplicatedAssetIds = []; - for (var entity in assetList) { + // Upload images before video assets + // these are further sorted by using their creation date so the upload goes as follows + // older images -> latest images -> older videos -> latest videos + List sortedAssets = assetList.sorted( + (a, b) { + final cmp = a.typeInt - b.typeInt; + if (cmp != 0) return cmp; + return a.createDateTime.compareTo(b.createDateTime); + }, + ); + + for (var entity in sortedAssets) { try { if (entity.type == AssetType.video) { file = await entity.originFile; @@ -248,7 +259,8 @@ class BackupService { req.fields['deviceAssetId'] = entity.id; req.fields['deviceId'] = deviceId; - req.fields['fileCreatedAt'] = entity.createDateTime.toUtc().toIso8601String(); + req.fields['fileCreatedAt'] = + entity.createDateTime.toUtc().toIso8601String(); req.fields['fileModifiedAt'] = entity.modifiedDateTime.toUtc().toIso8601String(); req.fields['isFavorite'] = entity.isFavorite.toString();