Browse Source

Show empty albums on colleciton gallery page

Neeraj Gupta 2 years ago
parent
commit
62bd99d1c8

+ 2 - 0
lib/core/constants.dart

@@ -41,3 +41,5 @@ class FFDefault {
 }
 
 const kDefaultProductionEndpoint = 'https://api.ente.io';
+
+const int intMaxValue = 9223372036854775807;

+ 0 - 1
lib/ui/collections/collection_item_widget.dart

@@ -21,7 +21,6 @@ class CollectionItem extends StatelessWidget {
   Widget build(BuildContext context) {
     final enteColorScheme = getEnteColorScheme(context);
     final enteTextTheme = getEnteTextTheme(context);
-
     final String heroTag =
         "collection" + (c.thumbnail?.tag ?? c.collection.id.toString());
     return GestureDetector(

+ 14 - 5
lib/ui/collections_gallery_widget.dart

@@ -6,6 +6,7 @@ import 'package:collection/collection.dart';
 import 'package:flutter/material.dart';
 import 'package:logging/logging.dart';
 import 'package:photos/core/configuration.dart';
+import 'package:photos/core/constants.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/events/collection_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
@@ -23,6 +24,8 @@ import 'package:photos/ui/common/loading_widget.dart';
 import 'package:photos/ui/viewer/gallery/empty_state.dart';
 import 'package:photos/utils/local_settings.dart';
 
+import '../models/file.dart';
+
 class CollectionsGalleryWidget extends StatefulWidget {
   const CollectionsGalleryWidget({Key key}) : super(key: key);
 
@@ -84,10 +87,16 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
     final List<CollectionWithThumbnail> collectionsWithThumbnail = [];
     final latestCollectionFiles =
         await collectionsService.getLatestCollectionFiles();
-    for (final file in latestCollectionFiles) {
-      final c = collectionsService.getCollectionByID(file.collectionID);
+    final Map<int, File> collectionToThumbnailMap = Map.fromEntries(
+      latestCollectionFiles.map((e) => MapEntry(e.collectionID, e)),
+    );
+    final usersCollection = collectionsService.getActiveCollections().where(
+          (c) => c.owner.id == userID,
+        );
+    for (final c in usersCollection) {
+      final File thumbnail = collectionToThumbnailMap[c.id];
       if (c.owner.id == userID) {
-        collectionsWithThumbnail.add(CollectionWithThumbnail(c, file));
+        collectionsWithThumbnail.add(CollectionWithThumbnail(c, thumbnail));
       }
     }
     collectionsWithThumbnail.sort(
@@ -105,8 +114,8 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
             second.collection.name,
           );
         } else if (sortKey == AlbumSortKey.newestPhoto) {
-          return second.thumbnail.creationTime
-              .compareTo(first.thumbnail.creationTime);
+          return (second.thumbnail?.creationTime ?? -1 * intMaxValue)
+              .compareTo(first.thumbnail?.creationTime ?? -1 * intMaxValue);
         } else {
           return second.collection.updationTime
               .compareTo(first.collection.updationTime);