Compare commits

...

1 Commits

Author SHA1 Message Date
shenlong-tanwen 7130553634 refactor: return AssetFilter from asset action filter 2026-07-01 22:29:04 +05:30
5 changed files with 8 additions and 13 deletions
+2 -1
View File
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/utils/asset_filter.dart';
class ActionScope {
final BuildContext context;
@@ -28,5 +29,5 @@ abstract class AssetAction<T extends BaseAsset> extends BaseAction {
const AssetAction({required this.assets});
Iterable<T> filter(ActionScope scope) => assets.whereType<T>();
AssetFilter<T> filter(ActionScope scope) => .new(assets.whereType<T>());
}
@@ -20,14 +20,8 @@ class ArchiveAction extends AssetAction<RemoteAsset> {
String label(ActionScope scope) => archive ? scope.context.t.archive : scope.context.t.unarchive;
@override
Iterable<RemoteAsset> filter(ActionScope scope) {
final owned = AssetFilter(assets).owned(scope.authUser.id);
if (archive) {
return owned.visibility(.timeline);
} else {
return owned.visibility(.archive);
}
}
AssetFilter<RemoteAsset> filter(ActionScope scope) =>
.new(assets).owned(scope.authUser.id).archived(isArchived: !archive);
@override
bool isVisible(ActionScope scope) => !scope.ref.watch(inLockedViewProvider) && filter(scope).isNotEmpty;
@@ -18,8 +18,8 @@ class FavoriteAction extends AssetAction<RemoteAsset> {
String label(ActionScope scope) => favorite ? scope.context.t.favorite : scope.context.t.unfavorite;
@override
Iterable<RemoteAsset> filter(ActionScope scope) =>
AssetFilter(assets).owned(scope.authUser.id).favorite(isFavorite: !favorite);
AssetFilter<RemoteAsset> filter(ActionScope scope) =>
.new(assets).owned(scope.authUser.id).favorite(isFavorite: !favorite);
@override
bool isVisible(ActionScope scope) => filter(scope).isNotEmpty;
@@ -16,7 +16,7 @@ class RestoreAction extends AssetAction<RemoteAsset> {
String label(ActionScope scope) => scope.context.t.restore;
@override
Iterable<RemoteAsset> filter(ActionScope scope) => AssetFilter(assets).owned(scope.authUser.id).trashed();
AssetFilter<RemoteAsset> filter(ActionScope scope) => .new(assets).owned(scope.authUser.id).trashed();
@override
bool isVisible(ActionScope scope) => filter(scope).isNotEmpty;
@@ -18,7 +18,7 @@ class StackAction extends AssetAction<RemoteAsset> {
String label(ActionScope scope) => stack ? scope.context.t.stack : scope.context.t.unstack;
@override
Iterable<RemoteAsset> filter(ActionScope scope) => AssetFilter(assets).owned(scope.authUser.id);
AssetFilter<RemoteAsset> filter(ActionScope scope) => .new(assets).owned(scope.authUser.id);
@override
bool isVisible(ActionScope scope) => stack ? filter(scope).length > 1 : filter(scope).isNotEmpty;