Show initial files when possible

This commit is contained in:
Vishnu Mohandas 2021-05-13 23:35:32 +05:30
parent a0541c724b
commit 5f437ba214
7 changed files with 27 additions and 18 deletions

View file

@ -3,33 +3,35 @@ import 'package:flutter/material.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/db/files_db.dart';
import 'package:photos/events/collection_updated_event.dart';
import 'package:photos/models/collection.dart';
import 'package:photos/models/collection_items.dart';
import 'package:photos/models/selected_files.dart';
import 'gallery.dart';
import 'gallery_app_bar_widget.dart';
class CollectionPage extends StatelessWidget {
final Collection collection;
final CollectionWithThumbnail c;
final String tagPrefix;
final _selectedFiles = SelectedFiles();
CollectionPage(this.collection, {this.tagPrefix = "collection", Key key})
CollectionPage(this.c, {this.tagPrefix = "collection", Key key})
: super(key: key);
@override
Widget build(Object context) {
final initialFiles = c.thumbnail != null ? [c.thumbnail] : null;
final gallery = Gallery(
asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
return FilesDB.instance.getFilesInCollection(
collection.id, creationStartTime, creationEndTime,
c.collection.id, creationStartTime, creationEndTime,
limit: limit, asc: asc);
},
reloadEvent: Bus.instance
.on<CollectionUpdatedEvent>()
.where((event) => event.collectionID == collection.id),
.where((event) => event.collectionID == c.collection.id),
tagPrefix: tagPrefix,
selectedFiles: _selectedFiles,
initialFiles: initialFiles,
);
return Scaffold(
body: Stack(children: [
@ -41,9 +43,9 @@ class CollectionPage extends StatelessWidget {
height: 80,
child: GalleryAppBarWidget(
GalleryAppBarType.collection,
collection.name,
c.collection.name,
_selectedFiles,
collection: collection,
collection: c.collection,
),
)
]),

View file

@ -327,7 +327,7 @@ class CollectionItem extends StatelessWidget {
],
),
onTap: () {
routeToPage(context, CollectionPage(c.collection));
routeToPage(context, CollectionPage(c));
},
);
}

View file

@ -211,7 +211,7 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
PageTransition(
type: PageTransitionType.bottomToTop,
child: CollectionPage(
collection,
CollectionWithThumbnail(collection, null),
)));
}

View file

@ -29,6 +29,7 @@ class DeviceFolderPage extends StatelessWidget {
header: Configuration.instance.hasConfiguredAccount()
? _getHeaderWidget()
: Container(),
initialFiles: [folder.thumbnail],
);
return Scaffold(
body: Stack(

View file

@ -20,6 +20,7 @@ typedef GalleryLoader = Future<List<File>>
class Gallery extends StatefulWidget {
final GalleryLoader asyncLoader;
final List<File> initialFiles;
final Stream<FilesUpdatedEvent> reloadEvent;
final Stream<Event> forceReloadEvent;
final SelectedFiles selectedFiles;
@ -31,6 +32,7 @@ class Gallery extends StatefulWidget {
@required this.asyncLoader,
@required this.selectedFiles,
@required this.tagPrefix,
this.initialFiles,
this.reloadEvent,
this.forceReloadEvent,
this.header,
@ -76,6 +78,9 @@ class _GalleryState extends State<Gallery> {
}
});
}
if (widget.initialFiles != null) {
_onFilesLoaded(widget.initialFiles);
}
_loadFiles(limit: kInitialLoadLimit).then((files) {
_onFilesLoaded(files);
if (files.length == kInitialLoadLimit) {

View file

@ -2,30 +2,31 @@ import 'package:flutter/material.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/db/files_db.dart';
import 'package:photos/events/collection_updated_event.dart';
import 'package:photos/models/collection_items.dart';
import 'package:photos/models/selected_files.dart';
import 'package:photos/models/collection.dart';
import 'package:photos/ui/gallery.dart';
import 'package:photos/ui/gallery_app_bar_widget.dart';
class SharedCollectionPage extends StatelessWidget {
final Collection collection;
final CollectionWithThumbnail c;
final _selectedFiles = SelectedFiles();
SharedCollectionPage(this.collection, {Key key}) : super(key: key);
SharedCollectionPage(this.c, {Key key}) : super(key: key);
@override
Widget build(Object context) {
var gallery = Gallery(
asyncLoader: (creationStartTime, creationEndTime, {limit, asc}) {
return FilesDB.instance.getFilesInCollection(
collection.id, creationStartTime, creationEndTime,
c.collection.id, creationStartTime, creationEndTime,
limit: limit, asc: asc);
},
reloadEvent: Bus.instance
.on<CollectionUpdatedEvent>()
.where((event) => event.collectionID == collection.id),
.where((event) => event.collectionID == c.collection.id),
tagPrefix: "shared_collection",
selectedFiles: _selectedFiles,
initialFiles: [c.thumbnail],
);
return Scaffold(
body: Stack(
@ -38,9 +39,9 @@ class SharedCollectionPage extends StatelessWidget {
height: 80,
child: GalleryAppBarWidget(
GalleryAppBarType.shared_collection,
collection.name,
c.collection.name,
_selectedFiles,
collection: collection,
collection: c.collection,
),
)
],

View file

@ -346,7 +346,7 @@ class OutgoingCollectionItem extends StatelessWidget {
),
onTap: () {
final page = CollectionPage(
c.collection,
c,
tagPrefix: "outgoing_collection",
);
routeToPage(context, page);
@ -419,7 +419,7 @@ class IncomingCollectionItem extends StatelessWidget {
],
),
onTap: () {
routeToPage(context, SharedCollectionPage(c.collection));
routeToPage(context, SharedCollectionPage(c));
},
);
}