Show import progress on loading screen

This commit is contained in:
Neeraj Gupta 2022-09-27 09:39:36 +05:30
parent cce6bbdf91
commit f2244f8ae2
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
3 changed files with 26 additions and 1 deletions

View file

@ -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);
}

View file

@ -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<List<AssetEntity>> _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);

View file

@ -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<LoadingPhotosWidget> {
StreamSubscription<SyncStatusUpdate> _firstImportEvent;
StreamSubscription<LocalImportProgressEvent> _imprortProgressEvent;
int _currentPage = 0;
String _loadingMessage = "Loading your photos...";
final PageController _pageController = PageController(
initialPage: 0,
);
@ -56,6 +59,13 @@ class _LoadingPhotosWidgetState extends State<LoadingPhotosWidget> {
}
}
});
_imprortProgressEvent =
Bus.instance.on<LocalImportProgressEvent>().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<LoadingPhotosWidget> {
@override
void dispose() {
_firstImportEvent.cancel();
_imprortProgressEvent.cancel();
super.dispose();
}
@ -118,7 +129,7 @@ class _LoadingPhotosWidgetState extends State<LoadingPhotosWidget> {
],
),
Text(
"Loading your photos...",
_loadingMessage,
style: TextStyle(
color: Theme.of(context).colorScheme.subTextColor,
),