@@ -44,19 +44,24 @@ class QueueNotifier extends _$QueueNotifier {
4444 }
4545
4646 void _fetchPage (int offset) async {
47- final settings = ref.read (settingsNotifierProvider).valueOrNull;
48- if (settings == null || ! settings.isConfigured) return ;
47+ // Await settings — on startup they may still be loading from storage.
48+ final settings = await ref.read (settingsNotifierProvider.future);
49+ if (! settings.isConfigured) return ;
50+ final filterAtStart = _filter;
4951 try {
5052 final client = ref.read (apiClientProvider);
5153 final response = await client.getBookmarks (
52- query: _filter .query.isNotEmpty ? _filter .query : null ,
53- tag: _filter .tag,
54+ query: filterAtStart .query.isNotEmpty ? filterAtStart .query : null ,
55+ tag: filterAtStart .tag,
5456 isArchived: false ,
5557 isRead: false ,
5658 limit: _pageSize,
5759 offset: offset,
5860 );
5961
62+ // Discard stale response if the filter changed while awaiting.
63+ if (_filter != filterAtStart) return ;
64+
6065 final isLast = offset + response.results.length >= response.count;
6166 if (isLast) {
6267 pagingController.appendLastPage (response.results);
@@ -67,10 +72,12 @@ class QueueNotifier extends _$QueueNotifier {
6772 );
6873 }
6974 } on DioException catch (e) {
75+ if (_filter != filterAtStart) return ;
7076 pagingController.error = e.error is ApiException
7177 ? e.error
7278 : UnknownException (e.message ?? 'Unknown error' );
7379 } catch (e) {
80+ if (_filter != filterAtStart) return ;
7481 pagingController.error = UnknownException (e.toString ());
7582 }
7683 }
0 commit comments