Show initial files when possible
This commit is contained in:
parent
a0541c724b
commit
5f437ba214
|
@ -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,
|
||||
),
|
||||
)
|
||||
]),
|
||||
|
|
|
@ -327,7 +327,7 @@ class CollectionItem extends StatelessWidget {
|
|||
],
|
||||
),
|
||||
onTap: () {
|
||||
routeToPage(context, CollectionPage(c.collection));
|
||||
routeToPage(context, CollectionPage(c));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
@ -211,7 +211,7 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
|
|||
PageTransition(
|
||||
type: PageTransitionType.bottomToTop,
|
||||
child: CollectionPage(
|
||||
collection,
|
||||
CollectionWithThumbnail(collection, null),
|
||||
)));
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ class DeviceFolderPage extends StatelessWidget {
|
|||
header: Configuration.instance.hasConfiguredAccount()
|
||||
? _getHeaderWidget()
|
||||
: Container(),
|
||||
initialFiles: [folder.thumbnail],
|
||||
);
|
||||
return Scaffold(
|
||||
body: Stack(
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
)
|
||||
],
|
||||
|
|
|
@ -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));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue