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();