[Part-4] Mark all folders for backup when limited permission is granted

This commit is contained in:
Neeraj Gupta 2022-09-10 10:06:41 +05:30
parent 75ea50281d
commit d61d456217
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
4 changed files with 12 additions and 15 deletions

View file

@ -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<List<File>> 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<List<File>> getFilesPendingForUpload() async {
final db = await instance.database;
final results = await db.query(
filesTable,

View file

@ -281,6 +281,11 @@ class LocalSyncService {
Future<void> 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();
}

View file

@ -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<List<File>> _getFilesToBeUploaded() async {
final deviceCollections = await FilesDB.instance.getDeviceCollections();
deviceCollections.removeWhere((element) => !element.shouldBackup);
List<File> filesToBeUploaded;
if (LocalSyncService.instance.hasGrantedLimitedPermissions() &&
deviceCollections.isEmpty) {
filesToBeUploaded = await _db.getUnUploadedLocalFiles();
} else {
filesToBeUploaded = await _db.getPendingManualUploads();
}
final List<File> filesToBeUploaded = await _db.getFilesPendingForUpload();
if (!Configuration.instance.shouldBackupVideos() || _shouldThrottleSync()) {
filesToBeUploaded
.removeWhere((element) => element.fileType == FileType.video);

View file

@ -393,10 +393,12 @@ class _HomeWidgetState extends State<HomeWidget> {
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,