[Part-4] Mark all folders for backup when limited permission is granted
This commit is contained in:
parent
75ea50281d
commit
d61d456217
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue