1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-01-19 18:26:46 +01:00

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
This commit is contained in:
shenlong 2023-09-13 03:50:16 +00:00 committed by GitHub
parent 74d34b4f6c
commit 73ad0d468f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View file

@ -459,6 +459,7 @@ class BackgroundService {
notifySingleProgress ? _onProgress : (sent, total) {}, notifySingleProgress ? _onProgress : (sent, total) {},
notifySingleProgress ? _onSetCurrentBackupAsset : (asset) {}, notifySingleProgress ? _onSetCurrentBackupAsset : (asset) {},
_onBackupError, _onBackupError,
sortAssets: true,
); );
if (!ok && !_cancellationToken!.isCancelled) { if (!ok && !_cancellationToken!.isCancelled) {
_showErrorNotification( _showErrorNotification(

View file

@ -202,8 +202,9 @@ class BackupService {
Function(String, String, bool) uploadSuccessCb, Function(String, String, bool) uploadSuccessCb,
Function(int, int) uploadProgressCb, Function(int, int) uploadProgressCb,
Function(CurrentUploadAsset) setCurrentUploadAssetCb, Function(CurrentUploadAsset) setCurrentUploadAssetCb,
Function(ErrorUploadAsset) errorCb, Function(ErrorUploadAsset) errorCb, {
) async { bool sortAssets = false,
}) async {
if (Platform.isAndroid && if (Platform.isAndroid &&
!(await Permission.accessMediaLocation.status).isGranted) { !(await Permission.accessMediaLocation.status).isGranted) {
// double check that permission is granted here, to guard against // 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 // DON'T KNOW WHY BUT THIS HELPS BACKGROUND BACKUP TO WORK ON IOS
await PhotoManager.requestPermissionExtend(); await PhotoManager.requestPermissionExtend();
for (var entity in assetList) { List<AssetEntity> 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 { try {
if (entity.type == AssetType.video) { if (entity.type == AssetType.video) {
file = await entity.originFile; file = await entity.originFile;