From 51b2ed2412ba4c3ef1507044969b40e6b70ff036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Wed, 4 Nov 2026 05:58:50 +0100 Subject: [PATCH] [Client] Keep Archidekt listing pagination after a failed navigation Only update list mode and the next-page link when a listing or deck response is accepted, so a failed deck navigation leaves the existing listing scrollable. Retry still re-issues the failed request. --- .../interface/widgets/tabs/api/archidekt/tab_archidekt.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp index b55dcc1a3..9f7369435 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp @@ -99,7 +99,6 @@ void TabArchidekt::startRequest(QUrl url, RequestKind kind, int page) requestUrl = url; requestKind = kind; requestedPage = page; - isListMode = kind != RequestKind::Deck; isLoadingMore = true; retryButton->hide(); requestStatusLabel->setText(kind == RequestKind::Deck ? tr("Loading deck…") : tr("Loading decks…")); @@ -580,7 +579,6 @@ void TabArchidekt::doSearchImmediate() { searchDebounceTimer->stop(); currentPage = 1; - nextPageUrl.clear(); startRequest(QUrl(buildSearchUrl()), RequestKind::Search); } @@ -598,7 +596,6 @@ void TabArchidekt::loadNextPage() void TabArchidekt::actNavigatePage(QString url) { searchDebounceTimer->stop(); - nextPageUrl.clear(); startRequest(QUrl(url), RequestKind::Deck); } @@ -670,6 +667,9 @@ void TabArchidekt::processTopDecksResponse(QJsonObject reply) ArchidektDeckListingApiResponse deckData; deckData.fromJson(reply); + // An accepted listing restores list mode; a failed deck navigation leaves the listing usable. + isListMode = true; + // New search → clear everything if (requestKind == RequestKind::Search) { listingsWidget = nullptr; @@ -697,6 +697,7 @@ void TabArchidekt::processDeckResponse(QJsonObject reply) // We're in single deck mode - disable infinite scroll isListMode = false; + nextPageUrl.clear(); // Clear existing results for single deck view listingsWidget = nullptr;