From 0625571fdc9fdb63ca65f7f3d9dcbd64209dd792 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Wed, 12 Mar 2025 15:12:33 +0530 Subject: [PATCH] [mob][photos] Use existing update mmd method --- mobile/lib/utils/magic_util.dart | 95 ++++++++++++-------------------- 1 file changed, 35 insertions(+), 60 deletions(-) diff --git a/mobile/lib/utils/magic_util.dart b/mobile/lib/utils/magic_util.dart index 5e31075469..4faf9581f6 100644 --- a/mobile/lib/utils/magic_util.dart +++ b/mobile/lib/utils/magic_util.dart @@ -172,10 +172,41 @@ Future editTime( Map filesToEditedTimes, ) async { try { - final filesToKeyAndValue = filesToEditedTimes.map( - (file, editedTime) => MapEntry(file, (editTimeKey, editedTime)), - ); - await _bulkUpdatePublicMetadata(context, filesToKeyAndValue); + final files = filesToEditedTimes.keys + .where((file) => file.uploadedFileID != null) + .toList(); + if (files.isEmpty) { + _logger.severe('No files to edit time for'); + return false; + } + final fileIdToTimeUpdate = >{}; + for (final entry in filesToEditedTimes.entries) { + final file = entry.key; + if (file.uploadedFileID == null) continue; + final editedTime = entry.value; + fileIdToTimeUpdate[file.uploadedFileID!] = {editTimeKey: editedTime}; + } + + final dialog = createProgressDialog(context, S.of(context).pleaseWait); + await dialog.show(); + try { + await FileMagicService.instance.updatePublicMagicMetadata( + files, + null, + metadataUpdateMap: fileIdToTimeUpdate, + ); + if (_shouldReloadGallery(editTimeKey)) { + Bus.instance.fire( + ForceReloadHomeGalleryEvent("FileMetadataChange-$editTimeKey"), + ); + } + showShortToast(context, S.of(context).done); + await dialog.hide(); + } catch (e, s) { + _logger.severe("failed to update times $fileIdToTimeUpdate", e, s); + await dialog.hide(); + rethrow; + } return true; } catch (e) { showShortToast(context, S.of(context).somethingWentWrong); @@ -241,62 +272,6 @@ Future editFileCaption( } } -Future _bulkUpdatePublicMetadata( - BuildContext? context, - Map filesToKeyAndValue, { - bool showDoneToast = true, - bool showProgressDialogs = true, -}) async { - if (filesToKeyAndValue.isEmpty) { - return; - } - ProgressDialog? dialog; - if (context != null && showProgressDialogs) { - dialog = createProgressDialog(context, S.of(context).pleaseWait); - await dialog.show(); - } - - final Set keys = {}; - final Map<(String, dynamic), List> updateToFiles = {}; - for (final entry in filesToKeyAndValue.entries) { - final file = entry.key; - final update = entry.value; - if (updateToFiles.containsKey(update)) { - updateToFiles[update]!.add(file); - } else { - updateToFiles[update] = [file]; - } - keys.add(update.$1); - } - try { - for (final entry in updateToFiles.entries) { - final update = entry.key; - final files = entry.value; - await FileMagicService.instance - .updatePublicMagicMetadata(files, {update.$1: update.$2}); - } - if (context != null) { - if (showDoneToast) { - showShortToast(context, S.of(context).done); - } - await dialog?.hide(); - } - - for (final String key in keys) { - if (_shouldReloadGallery(key)) { - Bus.instance - .fire(ForceReloadHomeGalleryEvent("FileMetadataChange-$key")); - } - } - } catch (e, s) { - _logger.severe("failed to update one of ${updateToFiles.keys}", e, s); - if (context != null) { - await dialog?.hide(); - } - rethrow; - } -} - Future _updatePublicMetadata( BuildContext? context, List files,