optimized refresh after copy
This commit is contained in:
parent
52fb0a7e15
commit
e9d7434926
3 changed files with 13 additions and 4 deletions
|
@ -1,6 +1,7 @@
|
|||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
|
||||
import 'package:aves/model/actions/move_type.dart';
|
||||
import 'package:aves/model/entry.dart';
|
||||
import 'package:aves/model/favourites.dart';
|
||||
import 'package:aves/model/filters/album.dart';
|
||||
|
@ -50,7 +51,12 @@ class CollectionLens with ChangeNotifier {
|
|||
final sourceEvents = source.eventBus;
|
||||
_subscriptions.add(sourceEvents.on<EntryAddedEvent>().listen((e) => _onEntryAdded(e.entries)));
|
||||
_subscriptions.add(sourceEvents.on<EntryRemovedEvent>().listen((e) => _onEntryRemoved(e.entries)));
|
||||
_subscriptions.add(sourceEvents.on<EntryMovedEvent>().listen((e) => _refresh()));
|
||||
_subscriptions.add(sourceEvents.on<EntryMovedEvent>().listen((e) {
|
||||
if (e.type == MoveType.move) {
|
||||
// refreshing copied items is already handled via `EntryAddedEvent`s
|
||||
_refresh();
|
||||
}
|
||||
}));
|
||||
_subscriptions.add(sourceEvents.on<EntryRefreshedEvent>().listen((e) => _refresh()));
|
||||
_subscriptions.add(sourceEvents.on<FilterVisibilityChangedEvent>().listen((e) => _refresh()));
|
||||
_subscriptions.add(sourceEvents.on<CatalogMetadataChangedEvent>().listen((e) => _refresh()));
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:aves/model/actions/move_type.dart';
|
||||
import 'package:aves/model/covers.dart';
|
||||
import 'package:aves/model/entry.dart';
|
||||
import 'package:aves/model/favourites.dart';
|
||||
|
@ -187,7 +188,7 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
|||
}
|
||||
await _moveEntry(entry, newFields, persist: persist);
|
||||
entry.metadataChangeNotifier.notify();
|
||||
eventBus.fire(EntryMovedEvent({entry}));
|
||||
eventBus.fire(EntryMovedEvent(MoveType.move, {entry}));
|
||||
completer.complete(true);
|
||||
},
|
||||
);
|
||||
|
@ -278,7 +279,7 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
|||
}
|
||||
invalidateAlbumFilterSummary(directories: fromAlbums);
|
||||
_invalidate(movedEntries);
|
||||
eventBus.fire(EntryMovedEvent(movedEntries));
|
||||
eventBus.fire(EntryMovedEvent(copy ? MoveType.copy : MoveType.move, movedEntries));
|
||||
}
|
||||
|
||||
bool get initialized => false;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:aves/model/actions/move_type.dart';
|
||||
import 'package:aves/model/entry.dart';
|
||||
import 'package:aves/model/filters/filters.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
@ -18,9 +19,10 @@ class EntryRemovedEvent {
|
|||
|
||||
@immutable
|
||||
class EntryMovedEvent {
|
||||
final MoveType type;
|
||||
final Set<AvesEntry> entries;
|
||||
|
||||
const EntryMovedEvent(this.entries);
|
||||
const EntryMovedEvent(this.type, this.entries);
|
||||
}
|
||||
|
||||
@immutable
|
||||
|
|
Loading…
Reference in a new issue