From 588b4132235e1e82bd79ec16dbb1146a40af47da Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:40:56 +0100 Subject: [PATCH] fix: browse tab scrolling after alpha jump libraries --- .../libraries/tabs/library_browse_tab.dart | 56 ++++++++++++++----- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/lib/screens/libraries/tabs/library_browse_tab.dart b/lib/screens/libraries/tabs/library_browse_tab.dart index 61a2ad2f..732920b8 100644 --- a/lib/screens/libraries/tabs/library_browse_tab.dart +++ b/lib/screens/libraries/tabs/library_browse_tab.dart @@ -187,6 +187,7 @@ class _LibraryBrowseTabState extends BaseLibraryTabState _loadingRanges = {}; CancelToken? _cancelToken; int _requestId = 0; + int _firstCharactersRequestId = 0; static const int _fetchSize = 200; Timer? _scrollIdleTimer; @@ -299,12 +300,38 @@ class _LibraryBrowseTabState extends BaseLibraryTabState _loadContent() async { // Cancel any pending request _cancelToken?.cancel(); _cancelToken = CancelToken(); // Use a generation counter for the filter/sort loading phase final generation = ++_requestId; + final firstCharactersGeneration = ++_firstCharactersRequestId; + + _resetForFullReload(); // Extract context dependencies before async gap - use server-specific client final client = getClientForLibrary(); @@ -365,7 +392,7 @@ class _LibraryBrowseTabState extends BaseLibraryTabState _loadFirstCharacters() async { + Future _loadFirstCharacters({int? requestId}) async { + final currentRequestId = requestId ?? ++_firstCharactersRequestId; final client = getClientForLibrary(); final filterParams = Map.from(_selectedFilters); final typeId = _getGroupingTypeId(); @@ -808,20 +836,20 @@ class _LibraryBrowseTabState extends BaseLibraryTabState