diff --git a/lib/events/local_import_progress.dart b/lib/events/local_import_progress.dart new file mode 100644 index 000000000..a046e540e --- /dev/null +++ b/lib/events/local_import_progress.dart @@ -0,0 +1,8 @@ +import 'package:photos/events/event.dart'; + +class LocalImportProgressEvent extends Event { + final String folderName; + final int count; + + LocalImportProgressEvent(this.folderName, this.count); +} diff --git a/lib/services/local/local_sync_util.dart b/lib/services/local/local_sync_util.dart index 77db6b74c..96970adaf 100644 --- a/lib/services/local/local_sync_util.dart +++ b/lib/services/local/local_sync_util.dart @@ -5,6 +5,8 @@ import 'package:computer/computer.dart'; import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; import 'package:photo_manager/photo_manager.dart'; +import 'package:photos/core/event_bus.dart'; +import 'package:photos/events/local_import_progress.dart'; import 'package:photos/models/file.dart'; import 'package:tuple/tuple.dart'; @@ -256,6 +258,10 @@ Future> _getAllAssetLists(AssetPathEntity pathEntity) async { page: currentPage, size: assetFetchPageSize, ); + Bus.instance.fire( + LocalImportProgressEvent(pathEntity.name, + currentPage * assetFetchPageSize + currentPageResult.length), + ); result.addAll(currentPageResult); currentPage = currentPage + 1; } while (currentPageResult.length >= assetFetchPageSize); diff --git a/lib/ui/loading_photos_widget.dart b/lib/ui/loading_photos_widget.dart index 4a4f4c69c..baf171bab 100644 --- a/lib/ui/loading_photos_widget.dart +++ b/lib/ui/loading_photos_widget.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:lottie/lottie.dart'; import 'package:photos/core/event_bus.dart'; import 'package:photos/ente_theme_data.dart'; +import 'package:photos/events/local_import_progress.dart'; import 'package:photos/events/sync_status_update_event.dart'; import 'package:photos/services/local_sync_service.dart'; import 'package:photos/ui/backup_folder_selection_page.dart'; @@ -21,7 +22,9 @@ class LoadingPhotosWidget extends StatefulWidget { class _LoadingPhotosWidgetState extends State { StreamSubscription _firstImportEvent; + StreamSubscription _imprortProgressEvent; int _currentPage = 0; + String _loadingMessage = "Loading your photos..."; final PageController _pageController = PageController( initialPage: 0, ); @@ -56,6 +59,13 @@ class _LoadingPhotosWidgetState extends State { } } }); + _imprortProgressEvent = + Bus.instance.on().listen((event) { + _loadingMessage = 'Processing ${event.folderName}'; + if (mounted) { + setState(() {}); + } + }); Timer.periodic(const Duration(seconds: 5), (Timer timer) { if (!mounted) { return; @@ -77,6 +87,7 @@ class _LoadingPhotosWidgetState extends State { @override void dispose() { _firstImportEvent.cancel(); + _imprortProgressEvent.cancel(); super.dispose(); } @@ -118,7 +129,7 @@ class _LoadingPhotosWidgetState extends State { ], ), Text( - "Loading your photos...", + _loadingMessage, style: TextStyle( color: Theme.of(context).colorScheme.subTextColor, ),