Selaa lähdekoodia

Backup shared folder if not being backed up already

Vishnu Mohandas 4 vuotta sitten
vanhempi
commit
25a78ee52b
2 muutettua tiedostoa jossa 20 lisäystä ja 5 poistoa
  1. 8 5
      lib/services/collections_service.dart
  2. 12 0
      lib/ui/share_folder_widget.dart

+ 8 - 5
lib/services/collections_service.dart

@@ -247,14 +247,17 @@ class CollectionsService {
 
   void _cacheCollectionAttributes(Collection collection) {
     if (collection.attributes.encryptedPath != null) {
-      var path = utf8.decode(CryptoUtil.decryptSync(
-          Sodium.base642bin(collection.attributes.encryptedPath),
-          _config.getKey(),
-          Sodium.base642bin(collection.attributes.pathDecryptionNonce)));
-      _localCollections[path] = collection;
+      _localCollections[decryptCollectionPath(collection)] = collection;
     }
     _collectionIDToCollections[collection.id] = collection;
   }
+
+  String decryptCollectionPath(Collection collection) {
+    return utf8.decode(CryptoUtil.decryptSync(
+        Sodium.base642bin(collection.attributes.encryptedPath),
+        _config.getKey(),
+        Sodium.base642bin(collection.attributes.pathDecryptionNonce)));
+  }
 }
 
 class AddFilesRequest {

+ 12 - 0
lib/ui/share_folder_widget.dart

@@ -1,15 +1,18 @@
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
+import 'package:flutter_sodium/flutter_sodium.dart';
 import 'package:flutter_typeahead/flutter_typeahead.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/db/public_keys_db.dart';
 import 'package:photos/models/collection.dart';
 import 'package:photos/models/public_key.dart';
 import 'package:photos/services/collections_service.dart';
+import 'package:photos/services/sync_service.dart';
 import 'package:photos/services/user_service.dart';
 import 'package:photos/ui/common_elements.dart';
 import 'package:photos/ui/loading_widget.dart';
+import 'package:photos/utils/crypto_util.dart';
 import 'package:photos/utils/dialog_util.dart';
 import 'package:photos/utils/email_util.dart';
 import 'package:photos/utils/share_util.dart';
@@ -199,6 +202,15 @@ class _SharingDialogState extends State<SharingDialog> {
     } else {
       final dialog = createProgressDialog(context, "Sharing...");
       await dialog.show();
+      final collection = widget.collection;
+      if (collection.type == CollectionType.folder) {
+        final path =
+            CollectionsService.instance.decryptCollectionPath(collection);
+        if (!Configuration.instance.getPathsToBackUp().contains(path)) {
+          await Configuration.instance.addPathToFoldersToBeBackedUp(path);
+          SyncService.instance.sync();
+        }
+      }
       try {
         await CollectionsService.instance
             .share(widget.collection.id, email, publicKey);