From 1f85443db9fe0aacb1e72e970fc66839df0a5f6c Mon Sep 17 00:00:00 2001 From: FragginWagon Date: Thu, 29 Jan 2026 02:03:28 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Refactor=20tournament=20loading=20l?= =?UTF-8?q?ogic=20to=20use=20loadMoreState=20for=20improved=20error=20hand?= =?UTF-8?q?ling=20and=20state=20management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/ChallongeTest.vue | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/code/websites/pokedex.online/src/views/ChallongeTest.vue b/code/websites/pokedex.online/src/views/ChallongeTest.vue index d157379..ded13b0 100644 --- a/code/websites/pokedex.online/src/views/ChallongeTest.vue +++ b/code/websites/pokedex.online/src/views/ChallongeTest.vue @@ -628,23 +628,25 @@ async function testListTournaments(resetPagination = true) { async function loadMoreTournaments() { if (apiVersion.value === 'v1') return; // v1 doesn't support pagination - loadingMore.value = true; currentPage.value++; - try { - const result = await queryAllTournaments(client.value, { + const result = await loadMoreState.execute(async () => { + const newResults = await queryAllTournaments(client.value, { page: currentPage.value, per_page: 100, scopeType: tournamentScope.value }); + hasNextPage.value = newResults.length === perPage.value; + return newResults; + }); + + if (result) { + // Append new results to existing tournaments tournaments.value = [...tournaments.value, ...result]; - hasNextPage.value = result.length === perPage.value; - } catch (err) { - currentPage.value--; // Revert on error - handleError(err); - } finally { - loadingMore.value = false; + } else { + // Revert page increment on error + currentPage.value--; } }