collection: fixed action delegate when app bar state was changed
This commit is contained in:
parent
9c8d0215c6
commit
e3054d24e8
2 changed files with 19 additions and 19 deletions
|
@ -46,7 +46,7 @@ class CollectionAppBar extends StatefulWidget {
|
|||
|
||||
class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerProviderStateMixin {
|
||||
final TextEditingController _searchFieldController = TextEditingController();
|
||||
late EntrySetActionDelegate _actionDelegate;
|
||||
final EntrySetActionDelegate _actionDelegate = EntrySetActionDelegate();
|
||||
late AnimationController _browseToSelectAnimation;
|
||||
late Future<bool> _canAddShortcutsLoader;
|
||||
|
||||
|
@ -59,9 +59,6 @@ class _CollectionAppBarState extends State<CollectionAppBar> with SingleTickerPr
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_actionDelegate = EntrySetActionDelegate(
|
||||
collection: collection,
|
||||
);
|
||||
_browseToSelectAnimation = AnimationController(
|
||||
duration: Durations.iconAnimation,
|
||||
vsync: this,
|
||||
|
|
|
@ -3,11 +3,9 @@ import 'dart:async';
|
|||
import 'package:aves/model/actions/collection_actions.dart';
|
||||
import 'package:aves/model/actions/entry_actions.dart';
|
||||
import 'package:aves/model/actions/move_type.dart';
|
||||
import 'package:aves/model/entry.dart';
|
||||
import 'package:aves/model/filters/album.dart';
|
||||
import 'package:aves/model/highlight.dart';
|
||||
import 'package:aves/model/source/collection_lens.dart';
|
||||
import 'package:aves/model/source/collection_source.dart';
|
||||
import 'package:aves/services/android_app_service.dart';
|
||||
import 'package:aves/services/image_op_events.dart';
|
||||
import 'package:aves/services/services.dart';
|
||||
|
@ -27,23 +25,14 @@ import 'package:pedantic/pedantic.dart';
|
|||
import 'package:provider/provider.dart';
|
||||
|
||||
class EntrySetActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAwareMixin {
|
||||
final CollectionLens collection;
|
||||
|
||||
CollectionSource get source => collection.source;
|
||||
|
||||
Set<AvesEntry> get selection => collection.selection;
|
||||
|
||||
EntrySetActionDelegate({
|
||||
required this.collection,
|
||||
});
|
||||
|
||||
void onEntryActionSelected(BuildContext context, EntryAction action) {
|
||||
switch (action) {
|
||||
case EntryAction.delete:
|
||||
_showDeleteDialog(context);
|
||||
break;
|
||||
case EntryAction.share:
|
||||
AndroidAppService.shareEntries(selection).then((success) {
|
||||
final collection = context.read<CollectionLens>();
|
||||
AndroidAppService.shareEntries(collection.selection).then((success) {
|
||||
if (!success) showNoMatchingAppDialog(context);
|
||||
});
|
||||
break;
|
||||
|
@ -61,15 +50,24 @@ class EntrySetActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAware
|
|||
_moveSelection(context, moveType: MoveType.move);
|
||||
break;
|
||||
case CollectionAction.refreshMetadata:
|
||||
source.refreshMetadata(selection);
|
||||
collection.browse();
|
||||
_refreshMetadata(context);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void _refreshMetadata(BuildContext context) {
|
||||
final collection = context.read<CollectionLens>();
|
||||
collection.source.refreshMetadata(collection.selection);
|
||||
collection.browse();
|
||||
}
|
||||
|
||||
Future<void> _moveSelection(BuildContext context, {required MoveType moveType}) async {
|
||||
final collection = context.read<CollectionLens>();
|
||||
final source = collection.source;
|
||||
final selection = collection.selection;
|
||||
|
||||
final selectionDirs = selection.where((e) => e.path != null).map((e) => e.directory).cast<String>().toSet();
|
||||
if (moveType == MoveType.move) {
|
||||
// check whether moving is possible given OS restrictions,
|
||||
|
@ -105,6 +103,8 @@ class EntrySetActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAware
|
|||
|
||||
final copy = moveType == MoveType.copy;
|
||||
final todoCount = todoEntries.length;
|
||||
assert(todoCount > 0);
|
||||
|
||||
source.pauseMonitoring();
|
||||
showOpReport<MoveOpEvent>(
|
||||
context: context,
|
||||
|
@ -179,6 +179,9 @@ class EntrySetActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAware
|
|||
}
|
||||
|
||||
Future<void> _showDeleteDialog(BuildContext context) async {
|
||||
final collection = context.read<CollectionLens>();
|
||||
final source = collection.source;
|
||||
final selection = collection.selection;
|
||||
final selectionDirs = selection.where((e) => e.path != null).map((e) => e.directory).cast<String>().toSet();
|
||||
final todoCount = selection.length;
|
||||
|
||||
|
|
Loading…
Reference in a new issue