From 018f070a3607ff9ec721cd59f6ce82cde59c3b69 Mon Sep 17 00:00:00 2001 From: Vishnu Mohandas Date: Mon, 19 Apr 2021 23:30:15 +0530 Subject: [PATCH] Optimize shared collections gallery load time --- lib/ui/shared_collections_gallery.dart | 61 +++++++++++++------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/ui/shared_collections_gallery.dart b/lib/ui/shared_collections_gallery.dart index 071119098..fd9399ac8 100644 --- a/lib/ui/shared_collections_gallery.dart +++ b/lib/ui/shared_collections_gallery.dart @@ -51,26 +51,32 @@ class _SharedCollectionGalleryState extends State Widget build(BuildContext context) { super.build(context); return FutureBuilder( - future: Future.value(CollectionsService.instance.getCollections()) - .then((collections) async { - final outgoing = List(); - final incoming = List(); - for (final collection in collections) { - if (collection.owner.id == Configuration.instance.getUserID()) { - if (collection.sharees.length > 0) { - final withThumbnail = - await _getCollectionWithThumbnail(collection); - if (withThumbnail.thumbnail != null) { - outgoing.add(withThumbnail); - } - } else { - continue; + future: Future.value(FilesDB.instance.getLatestCollectionFiles()) + .then((files) async { + var startTime = DateTime.now(); + final List outgoing = []; + final List incoming = []; + for (final file in files) { + final c = + CollectionsService.instance.getCollectionByID(file.collectionID); + if (c.owner.id == Configuration.instance.getUserID()) { + if (c.sharees.length > 0) { + outgoing.add( + CollectionWithThumbnail( + c, + file, + await FilesDB.instance.getLastModifiedFileInCollection(c.id), + ), + ); } } else { - final withThumbnail = await _getCollectionWithThumbnail(collection); - if (withThumbnail.thumbnail != null) { - incoming.add(withThumbnail); - } + incoming.add( + CollectionWithThumbnail( + c, + file, + await FilesDB.instance.getLastModifiedFileInCollection(c.id), + ), + ); } } outgoing.sort((first, second) { @@ -81,6 +87,12 @@ class _SharedCollectionGalleryState extends State return second.lastUpdatedFile.updationTime .compareTo(first.lastUpdatedFile.updationTime); }); + + var endTime = DateTime.now(); + var duration = Duration( + microseconds: endTime.microsecondsSinceEpoch - + startTime.microsecondsSinceEpoch); + _logger.info("Total time taken: " + duration.inMilliseconds.toString()); return SharedCollections(outgoing, incoming); }), builder: (context, snapshot) { @@ -291,19 +303,6 @@ class _SharedCollectionGalleryState extends State ); } - Future _getCollectionWithThumbnail( - Collection collection) async { - final thumbnail = - await FilesDB.instance.getLatestFileInCollection(collection.id); - final lastUpdatedFile = - await FilesDB.instance.getLastModifiedFileInCollection(collection.id); - return CollectionWithThumbnail( - collection, - thumbnail, - lastUpdatedFile, - ); - } - Widget _getIncomingCollectionEmptyState() { return Container( padding: EdgeInsets.only(top: 10),