diff --git a/lib/db/files_db.dart b/lib/db/files_db.dart index 544f1e2b0..4f93e23e7 100644 --- a/lib/db/files_db.dart +++ b/lib/db/files_db.dart @@ -445,7 +445,7 @@ class FilesDB { whereArgs: [ownerID, visibility], distinct: true, ); - Set collectionIDsOfHiddenFiles = {}; + final Set collectionIDsOfHiddenFiles = {}; for (var result in results) { collectionIDsOfHiddenFiles.add(result['collection_id']); } diff --git a/lib/services/feature_flag_service.dart b/lib/services/feature_flag_service.dart index fb71ebc87..544bf96c6 100644 --- a/lib/services/feature_flag_service.dart +++ b/lib/services/feature_flag_service.dart @@ -94,7 +94,7 @@ class FeatureFlagService { } bool isInternalUserOrDebugBuild() { - String email = Configuration.instance.getEmail(); + final String email = Configuration.instance.getEmail(); return (email != null && email.endsWith("@ente.io")) || kDebugMode; } diff --git a/lib/ui/viewer/gallery/gallery_app_bar_widget.dart b/lib/ui/viewer/gallery/gallery_app_bar_widget.dart index a26bc1bb1..c2f39e14d 100644 --- a/lib/ui/viewer/gallery/gallery_app_bar_widget.dart +++ b/lib/ui/viewer/gallery/gallery_app_bar_widget.dart @@ -133,8 +133,9 @@ class _GalleryAppBarWidgetState extends State { child: IconButton( icon: Icon(Icons.adaptive.share), onPressed: () async { - if (FeatureFlagService.instance.isInternalUserOrDebugBuild() && - await _collectionHasHiddenFiles(widget.collection.id)) { + final bool showHiddenWarning = + await _shouldShowHiddenFilesWarning(widget.collection); + if (showHiddenWarning) { final choice = await showChoiceDialog( context, 'Share hidden items?', @@ -144,12 +145,11 @@ class _GalleryAppBarWidgetState extends State { secondActionColor: Theme.of(context).colorScheme.defaultTextColor, ); - if (choice == DialogUserChoice.secondChoice) { - _showShareCollectionDialog(); + if (choice != DialogUserChoice.secondChoice) { + return; } - } else { - _showShareCollectionDialog(); } + await _showShareCollectionDialog(); }, ), ), @@ -246,11 +246,21 @@ class _GalleryAppBarWidgetState extends State { } } - Future _collectionHasHiddenFiles(int collectionID) async { + Future _shouldShowHiddenFilesWarning(Collection collection) async { + // collection can be null for device folders which are not marked for + // back up + if (!FeatureFlagService.instance.isInternalUserOrDebugBuild() || + collection == null) { + return false; + } + // collection is already shared + if (collection.sharees.isNotEmpty || collection.publicURLs.isNotEmpty) { + return false; + } final collectionIDsWithHiddenFiles = await FilesDB.instance.getCollectionIDsOfHiddenFiles( Configuration.instance.getUserID(), ); - return collectionIDsWithHiddenFiles.contains(collectionID); + return collectionIDsWithHiddenFiles.contains(collection.id); } }