Browse Source

Migrate existing backup folder selection

Neeraj Gupta 2 years ago
parent
commit
a5b516b643

+ 18 - 0
lib/services/local_sync_service.dart

@@ -147,9 +147,27 @@ class LocalSyncService {
     if (hasUpdated) {
       Bus.instance.fire(BackupFoldersUpdatedEvent());
     }
+    // migrate the backed up folder settings
+    if (!_prefs.containsKey(hasImportedDeviceCollections)) {
+      final pathsToBackUp = Configuration.instance.getPathsToBackUp();
+      final entriesToBackUp = Map.fromEntries(
+        result
+            .where((element) => pathsToBackUp.contains(element.item1.name))
+            .map((e) => MapEntry(e.item1.id, true)),
+      );
+      if (entriesToBackUp.isNotEmpty) {
+        await _db.updateDevicePathSyncStatus(entriesToBackUp);
+        Bus.instance.fire(BackupFoldersUpdatedEvent());
+      }
+      await _prefs.setBool(hasImportedDeviceCollections, true);
+    }
     return hasUpdated;
   }
 
+  bool isDeviceFileMigrationDone() {
+    return _prefs.containsKey(hasImportedDeviceCollections);
+  }
+
   Future<bool> syncAll() async {
     final stopwatch = Stopwatch()..start();
     final localAssets = await getAllLocalAssets();

+ 8 - 1
lib/ui/collections/device_folders_grid_view_widget.dart

@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:photos/models/device_collection.dart';
+import 'package:photos/services/local_sync_service.dart';
 import 'package:photos/ui/collections/device_folder_icon_widget.dart';
 import 'package:photos/ui/viewer/gallery/empte_state.dart';
 
@@ -13,6 +14,8 @@ class DeviceFoldersGridViewWidget extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
+    final bool isMigrationDone =
+        LocalSyncService.instance.isDeviceFileMigrationDone();
     return Padding(
       padding: const EdgeInsets.symmetric(horizontal: 8),
       child: SizedBox(
@@ -20,7 +23,11 @@ class DeviceFoldersGridViewWidget extends StatelessWidget {
         child: Align(
           alignment: Alignment.centerLeft,
           child: deviceCollections.isEmpty
-              ? const EmptyState()
+              ? (isMigrationDone
+                  ? const EmptyState()
+                  : const EmptyState(
+                      text: "Importing....",
+                    ))
               : ListView.builder(
                   shrinkWrap: true,
                   scrollDirection: Axis.horizontal,