From b41c57cb8dfa5fcb22aa24c66ca2f9016eb3627f Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Sat, 22 Mar 2025 13:26:20 +0530 Subject: [PATCH] Speed up backup folder selection page --- .../backup_folder_selection_page_v2.dart | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/mobile/lib/ui/settings/backup/backup_folder_selection_page_v2.dart b/mobile/lib/ui/settings/backup/backup_folder_selection_page_v2.dart index eef9dbc152..c217811054 100644 --- a/mobile/lib/ui/settings/backup/backup_folder_selection_page_v2.dart +++ b/mobile/lib/ui/settings/backup/backup_folder_selection_page_v2.dart @@ -44,35 +44,32 @@ class _BackupFolderSelectionPageV2State @override void initState() { - _logger.info("BackupFolderSelectionPageV2 init"); LocalImportService.instance .getLocalAssetsCache() .then((LocalAssetsCache c) async { _assetPathEntities = c.assetPaths.values.toList(); - _logger.info( - "BackupFolderSelectionPageV2 got ${_assetPathEntities!.length} paths", - ); _assetCount.clear(); _assetCount = c.pathToAssetIDs; - _logger.info("Asset count: $_assetCount"); _assetPathEntities!.removeWhere( (path) => (_assetCount[path.id] ?? {}).isEmpty, ); final List latestAssets = c.assets.values.toList(); - // sort by decreate creation date - latestAssets.sort((a, b) => b.createDateTime.compareTo(a.createDateTime)); for (final path in _assetPathEntities ?? []) { final assetIDs = _assetCount[path.id] ?? {}; - for (final assetID in assetIDs) { - for (final sortedAsset in latestAssets) { - if (sortedAsset.id == assetID) { + for (final sortedAsset in latestAssets) { + if (assetIDs.contains(sortedAsset.id)) { + if (_pathToLatestAsset.containsKey(path.id)) { + // check time and insert one with latest time + if (_pathToLatestAsset[path.id]!.createDateSecond! < + sortedAsset.createDateSecond!) { + _pathToLatestAsset[path.id] = sortedAsset; + } + } else { _pathToLatestAsset[path.id] = sortedAsset; - break; } } } } - setState(() { _assetPathEntities!.sort((first, second) { return first.name.toLowerCase().compareTo(second.name.toLowerCase());