diff --git a/lib/db/files_db.dart b/lib/db/files_db.dart index 32345cd51..2105dfb0b 100644 --- a/lib/db/files_db.dart +++ b/lib/db/files_db.dart @@ -625,8 +625,9 @@ class FilesDB { return _deduplicatedAndFilterIgnoredFiles(files, ignoredCollectionIDs); } - // Files which user added to a collection manually but they are not uploaded yet. - Future> getPendingManualUploads() async { + // Files which user added to a collection manually but they are not + // uploaded yet or files belonging to a collection which is marked for backup + Future> getFilesPendingForUpload() async { final db = await instance.database; final results = await db.query( filesTable, diff --git a/lib/services/local_sync_service.dart b/lib/services/local_sync_service.dart index 9064c5d57..3b17ece1c 100644 --- a/lib/services/local_sync_service.dart +++ b/lib/services/local_sync_service.dart @@ -281,6 +281,11 @@ class LocalSyncService { Future onPermissionGranted(PermissionState state) async { await _prefs.setBool(kHasGrantedPermissionsKey, true); await _prefs.setString(kPermissionStateKey, state.toString()); + if (state == PermissionState.limited) { + // when limited permission is granted, by default mark all folders for + // backup + await Configuration.instance.setSelectAllFoldersForBackup(true); + } _registerChangeCallback(); } diff --git a/lib/services/remote_sync_service.dart b/lib/services/remote_sync_service.dart index eb0ed3707..8844ae6f7 100644 --- a/lib/services/remote_sync_service.dart +++ b/lib/services/remote_sync_service.dart @@ -26,7 +26,6 @@ import 'package:photos/services/app_lifecycle_service.dart'; import 'package:photos/services/collections_service.dart'; import 'package:photos/services/ignored_files_service.dart'; import 'package:photos/services/local_file_update_service.dart'; -import 'package:photos/services/local_sync_service.dart'; import 'package:photos/services/sync_service.dart'; import 'package:photos/services/trash_sync_service.dart'; import 'package:photos/utils/diff_fetcher.dart'; @@ -103,10 +102,6 @@ class RemoteSyncService { .onError((e, s) => _logger.severe('trash sync failed', e, s)); await _syncDeviceCollectionFilesForUpload(); final filesToBeUploaded = await _getFilesToBeUploaded(); - if (kDebugMode) { - debugPrint("Skip upload for testing"); - // filesToBeUploaded.clear(); - } final hasUploadedFiles = await _uploadFiles(filesToBeUploaded); if (hasUploadedFiles) { await _pullDiff(); @@ -393,13 +388,7 @@ class RemoteSyncService { Future> _getFilesToBeUploaded() async { final deviceCollections = await FilesDB.instance.getDeviceCollections(); deviceCollections.removeWhere((element) => !element.shouldBackup); - List filesToBeUploaded; - if (LocalSyncService.instance.hasGrantedLimitedPermissions() && - deviceCollections.isEmpty) { - filesToBeUploaded = await _db.getUnUploadedLocalFiles(); - } else { - filesToBeUploaded = await _db.getPendingManualUploads(); - } + final List filesToBeUploaded = await _db.getFilesPendingForUpload(); if (!Configuration.instance.shouldBackupVideos() || _shouldThrottleSync()) { filesToBeUploaded .removeWhere((element) => element.fileType == FileType.video); diff --git a/lib/ui/home_widget.dart b/lib/ui/home_widget.dart index c5e5219b9..6900d69c4 100644 --- a/lib/ui/home_widget.dart +++ b/lib/ui/home_widget.dart @@ -393,10 +393,12 @@ class _HomeWidgetState extends State { final gallery = Gallery( asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) async { final ownerID = Configuration.instance.getUserID(); + final hasSelectedAllForBackup = + Configuration.instance.hasSelectedAllFoldersForBackup(); final archivedCollectionIds = CollectionsService.instance.getArchivedCollections(); FileLoadResult result; - if (LocalSyncService.instance.hasGrantedLimitedPermissions()) { + if (hasSelectedAllForBackup) { result = await FilesDB.instance.getAllLocalAndUploadedFiles( creationStartTime, creationEndTime,