Neeraj Gupta 2 年之前
父節點
當前提交
aac339caeb

+ 0 - 8
lib/models/collection_items.dart

@@ -1,16 +1,8 @@
 // @dart=2.9
 
 import 'package:photos/models/collection.dart';
-import 'package:photos/models/device_collection.dart';
 import 'package:photos/models/file.dart';
 
-class CollectionItems {
-  final List<DeviceCollection> deviceCollections;
-  final List<CollectionWithThumbnail> collections;
-
-  CollectionItems(this.deviceCollections, this.collections);
-}
-
 class CollectionWithThumbnail {
   final Collection collection;
   final File thumbnail;

+ 37 - 22
lib/ui/collections/device_folders_grid_view_widget.dart

@@ -4,17 +4,17 @@ import 'dart:async';
 
 import 'package:flutter/material.dart';
 import 'package:photos/core/event_bus.dart';
+import 'package:photos/db/device_files_db.dart';
+import 'package:photos/db/files_db.dart';
 import 'package:photos/events/backup_folders_updated_event.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/common/loading_widget.dart';
 import 'package:photos/ui/viewer/gallery/empte_state.dart';
 
 class DeviceFoldersGridViewWidget extends StatefulWidget {
-  final List<DeviceCollection> deviceCollections;
-
-  const DeviceFoldersGridViewWidget(
-    this.deviceCollections, {
+  const DeviceFoldersGridViewWidget({
     Key key,
   }) : super(key: key);
 
@@ -48,24 +48,39 @@ class _DeviceFoldersGridViewWidgetState
         height: 170,
         child: Align(
           alignment: Alignment.centerLeft,
-          child: widget.deviceCollections.isEmpty
-              ? (isMigrationDone
-                  ? const EmptyState()
-                  : const EmptyState(
-                      text: "Importing....",
-                    ))
-              : ListView.builder(
-                  shrinkWrap: true,
-                  scrollDirection: Axis.horizontal,
-                  padding: const EdgeInsets.fromLTRB(6, 0, 6, 0),
-                  physics: const ScrollPhysics(),
-                  // to disable GridView's scrolling
-                  itemBuilder: (context, index) {
-                    final deviceCollection = widget.deviceCollections[index];
-                    return DeviceFolderIcon(deviceCollection);
-                  },
-                  itemCount: widget.deviceCollections.length,
-                ),
+          child: FutureBuilder<List<DeviceCollection>>(
+            future: FilesDB.instance
+                .getDeviceCollections(includeCoverThumbnail: true),
+            builder: (context, snapshot) {
+              if (snapshot.hasData) {
+                return snapshot.data.isEmpty
+                    ? Padding(
+                        padding: const EdgeInsets.all(22),
+                        child: (isMigrationDone
+                            ? const EmptyState()
+                            : const EmptyState(
+                                text: "Importing....",
+                              )),
+                      )
+                    : ListView.builder(
+                        shrinkWrap: true,
+                        scrollDirection: Axis.horizontal,
+                        padding: const EdgeInsets.fromLTRB(6, 0, 6, 0),
+                        physics: const ScrollPhysics(),
+                        // to disable GridView's scrolling
+                        itemBuilder: (context, index) {
+                          final deviceCollection = snapshot.data[index];
+                          return DeviceFolderIcon(deviceCollection);
+                        },
+                        itemCount: snapshot.data.length,
+                      );
+              } else if (snapshot.hasError) {
+                return Text(snapshot.error.toString());
+              } else {
+                return const EnteLoadingWidget();
+              }
+            },
+          ),
         ),
       ),
     );

+ 8 - 14
lib/ui/collections_gallery_widget.dart

@@ -65,7 +65,7 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
   Widget build(BuildContext context) {
     super.build(context);
     _logger.info("Building, trigger: $_loadReason");
-    return FutureBuilder<CollectionItems>(
+    return FutureBuilder<List<CollectionWithThumbnail>>(
       future: _getCollections(),
       builder: (context, snapshot) {
         if (snapshot.hasData) {
@@ -79,12 +79,9 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
     );
   }
 
-  Future<CollectionItems> _getCollections() async {
-    final filesDB = FilesDB.instance;
+  Future<List<CollectionWithThumbnail>> _getCollections() async {
     final collectionsService = CollectionsService.instance;
     final userID = Configuration.instance.getUserID();
-    final List<DeviceCollection> deviceCollections =
-        await filesDB.getDeviceCollections(includeCoverThumbnail: true);
     final List<CollectionWithThumbnail> collectionsWithThumbnail = [];
     final latestCollectionFiles =
         await collectionsService.getLatestCollectionFiles();
@@ -108,10 +105,12 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
         }
       },
     );
-    return CollectionItems(deviceCollections, collectionsWithThumbnail);
+    return collectionsWithThumbnail;
   }
 
-  Widget _getCollectionsGalleryWidget(CollectionItems items) {
+  Widget _getCollectionsGalleryWidget(
+    List<CollectionWithThumbnail> collections,
+  ) {
     final TextStyle trashAndHiddenTextStyle = Theme.of(context)
         .textTheme
         .subtitle1
@@ -127,12 +126,7 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
             const SizedBox(height: 12),
             const SectionTitle("On device"),
             const SizedBox(height: 12),
-            items.deviceCollections.isEmpty
-                ? const Padding(
-                    padding: EdgeInsets.all(22),
-                    child: EmptyState(),
-                  )
-                : DeviceFoldersGridViewWidget(items.deviceCollections),
+            const DeviceFoldersGridViewWidget(),
             const Padding(padding: EdgeInsets.all(4)),
             const Divider(),
             Row(
@@ -145,7 +139,7 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
             ),
             const SizedBox(height: 12),
             Configuration.instance.hasConfiguredAccount()
-                ? RemoteCollectionsGridViewWidget(items.collections)
+                ? RemoteCollectionsGridViewWidget(collections)
                 : const EmptyState(),
             const SizedBox(height: 10),
             const Divider(),