chore: use classes to manage state

This commit is contained in:
bwees 2025-08-30 13:43:14 -05:00
parent 44957101dd
commit a606705973
No known key found for this signature in database
2 changed files with 42 additions and 19 deletions

View File

@ -5,6 +5,7 @@ import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/domain/services/remote_album.service.dart';
import 'package:immich_mobile/models/albums/album_search.model.dart';
import 'package:immich_mobile/utils/album_filter.utils.dart';
import 'package:logging/logging.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@ -41,11 +42,8 @@ class RemoteAlbumNotifier extends Notifier<RemoteAlbumState> {
final _logger = Logger('RemoteAlbumNotifier');
// values used for filtering and sorting when a refresh occurs
String? _lastUserId;
String? _lastQuery;
QuickFilterMode? _lastFilterMode;
RemoteAlbumSortMode? _lastSortMode;
bool? _lastSortIsReverse;
AlbumSortState? _lastSortState;
AlbumFilterState? _lastFilterState;
@override
RemoteAlbumState build() {
@ -69,19 +67,16 @@ class RemoteAlbumNotifier extends Notifier<RemoteAlbumState> {
// Restore previous search and filters when pulling to refresh
if (keepFilters) {
if (_lastQuery != null && _lastFilterMode != null) {
searchAlbums(_lastQuery!, _lastUserId, _lastFilterMode!);
if (_lastFilterState != null) {
searchAlbums(_lastFilterState!.query, _lastFilterState!.userId, _lastFilterState!.filterMode);
}
if (_lastSortMode != null && _lastSortIsReverse != null) {
await sortFilteredAlbums(_lastSortMode!, isReverse: _lastSortIsReverse!);
if (_lastSortState != null) {
await sortFilteredAlbums(_lastSortState!.sortMode, isReverse: _lastSortState!.isReverse);
}
} else {
_lastQuery = null;
_lastUserId = null;
_lastFilterMode = null;
_lastSortMode = null;
_lastSortIsReverse = null;
_lastFilterState = null;
_lastSortState = null;
}
}
@ -89,9 +84,11 @@ class RemoteAlbumNotifier extends Notifier<RemoteAlbumState> {
final filtered = _remoteAlbumService.searchAlbums(state.albums, query, userId, filterMode);
state = state.copyWith(filteredAlbums: filtered);
_lastQuery = query;
_lastUserId = userId;
_lastFilterMode = filterMode;
_lastFilterState = AlbumFilterState(
userId: userId,
query: query,
filterMode: filterMode,
);
}
void clearSearch() {
@ -102,8 +99,10 @@ class RemoteAlbumNotifier extends Notifier<RemoteAlbumState> {
final sortedAlbums = await _remoteAlbumService.sortAlbums(state.filteredAlbums, sortMode, isReverse: isReverse);
state = state.copyWith(filteredAlbums: sortedAlbums);
_lastSortMode = sortMode;
_lastSortIsReverse = isReverse;
_lastSortState = AlbumSortState(
sortMode: sortMode,
isReverse: isReverse,
);
}
Future<RemoteAlbum?> createAlbum({

View File

@ -0,0 +1,24 @@
import 'package:immich_mobile/domain/services/remote_album.service.dart';
import 'package:immich_mobile/models/albums/album_search.model.dart';
class AlbumFilterState {
String? userId;
String query;
QuickFilterMode filterMode;
AlbumFilterState({
this.userId,
required this.query,
required this.filterMode,
});
}
class AlbumSortState {
RemoteAlbumSortMode sortMode;
bool isReverse;
AlbumSortState({
required this.sortMode,
this.isReverse = false,
});
}