Backup shared folder if not being backed up already

This commit is contained in:
Vishnu Mohandas 2020-10-29 18:36:57 +05:30
parent ab30c18b6e
commit 25a78ee52b
2 changed files with 20 additions and 5 deletions

View file

@ -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 {

View file

@ -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);