From fe6d2607e1f725431e300b3555038b014eeec1b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C5=ABdolfs=20O=C5=A1i=C5=86=C5=A1?= Date: Thu, 2 Jul 2026 15:38:59 +0200 Subject: [PATCH] Keep loading flag set for superseded page loads --- src/views/repo/RepoCommits.svelte | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/views/repo/RepoCommits.svelte b/src/views/repo/RepoCommits.svelte index 07a385039..da7f6180d 100644 --- a/src/views/repo/RepoCommits.svelte +++ b/src/views/repo/RepoCommits.svelte @@ -115,6 +115,7 @@ async function loadMoreContent(all: boolean = false): Promise { if (!more) return; loadingMore = true; + let superseded = false; try { const page = await loader.run(async () => { return await invoke>("list_repo_commits", { @@ -126,14 +127,21 @@ }); // Superseded by a newer load (e.g. fuzzy-focus triggered a load-all). - // Leave items/more alone for the new call. - if (page === undefined) return; + // Leave items/more alone for the new call. The flag stays set too: the + // newer call owns it now, and clearing it here would let the + // virtualizer's auto load-more re-fire and abort that call in turn. + if (page === undefined) { + superseded = true; + return; + } more = page.more; items = all ? page.content : [...items, ...page.content]; if (page.content.length === 0) more = false; } finally { - loadingMore = false; + if (!superseded) { + loadingMore = false; + } } }