From a60670597363b6552c7c856031e580ad38dfcf5a Mon Sep 17 00:00:00 2001 From: bwees Date: Sat, 30 Aug 2025 13:43:14 -0500 Subject: [PATCH] chore: use classes to manage state --- .../infrastructure/remote_album.provider.dart | 37 +++++++++---------- mobile/lib/utils/album_filter.utils.dart | 24 ++++++++++++ 2 files changed, 42 insertions(+), 19 deletions(-) create mode 100644 mobile/lib/utils/album_filter.utils.dart diff --git a/mobile/lib/providers/infrastructure/remote_album.provider.dart b/mobile/lib/providers/infrastructure/remote_album.provider.dart index e0e2383c5f..e92ac39d55 100644 --- a/mobile/lib/providers/infrastructure/remote_album.provider.dart +++ b/mobile/lib/providers/infrastructure/remote_album.provider.dart @@ -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 { 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 { // 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 { 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 { 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 createAlbum({ diff --git a/mobile/lib/utils/album_filter.utils.dart b/mobile/lib/utils/album_filter.utils.dart new file mode 100644 index 0000000000..5fd7759398 --- /dev/null +++ b/mobile/lib/utils/album_filter.utils.dart @@ -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, + }); +} \ No newline at end of file