Make Gallery agnostic to the photo-upload events

This commit is contained in:
Vishnu Mohandas 2020-06-16 00:25:07 +05:30
parent bdb317956a
commit 0e5416d4ff
2 changed files with 7 additions and 11 deletions

View file

@ -6,7 +6,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/events/photo_opened_event.dart';
import 'package:photos/events/photo_upload_event.dart';
import 'package:photos/models/photo.dart';
import 'package:photos/ui/detail_page.dart';
import 'package:photos/ui/loading_widget.dart';
@ -44,7 +43,6 @@ class _GalleryState extends State<Gallery> {
List<Photo> _photos;
RefreshController _refreshController = RefreshController();
StreamSubscription<PhotoOpenedEvent> _photoOpenEventSubscription;
StreamSubscription<PhotoUploadEvent> _photoUploadEventSubscription;
Photo _openedPhoto;
@override
@ -56,19 +54,12 @@ class _GalleryState extends State<Gallery> {
_openedPhoto = event.photo;
});
});
_photoUploadEventSubscription =
Bus.instance.on<PhotoUploadEvent>().listen((event) {
if (event.hasError) {
_refreshController.refreshFailed();
}
});
super.initState();
}
@override
void dispose() {
_photoOpenEventSubscription.cancel();
_photoUploadEventSubscription.cancel();
super.dispose();
}
@ -114,7 +105,7 @@ class _GalleryState extends State<Gallery> {
return SmartRefresher(
controller: _refreshController,
child: list,
header: SyncIndicator(),
header: SyncIndicator(_refreshController),
onRefresh: () {
widget.syncFunction().then((_) {
_refreshController.refreshCompleted();

View file

@ -6,6 +6,10 @@ import 'package:photos/events/photo_upload_event.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
class SyncIndicator extends StatefulWidget {
final RefreshController refreshController;
const SyncIndicator(this.refreshController, {Key key}) : super(key: key);
@override
_SyncIndicatorState createState() => _SyncIndicatorState();
}
@ -38,7 +42,7 @@ class _SyncIndicatorState extends State<SyncIndicator> {
releaseText: "Release to sync.",
completeText: "Sync completed.",
failedText: "Sync unsuccessful.",
completeDuration: const Duration(milliseconds: 600),
completeDuration: const Duration(milliseconds: 1000),
refreshStyle: RefreshStyle.UnFollow,
);
}
@ -49,6 +53,7 @@ class _SyncIndicatorState extends State<SyncIndicator> {
} else {
var s;
if (_event.hasError) {
widget.refreshController.refreshFailed();
s = "Upload failed.";
} else {
s = "Uploading " +