From 5a2fef885820741f6c42d27349bea49d473b3d67 Mon Sep 17 00:00:00 2001 From: gatewayJ <835269233@qq.com> Date: Wed, 7 Oct 2026 10:27:53 +0800 Subject: [PATCH 1/2] fix(browser): continue loading after empty object pages --- components/object/list.tsx | 14 +++++++++----- docs/ui-review/register.md | 2 ++ lib/object-list-state.ts | 4 +++- tests/lib/object-list-source.test.js | 2 +- tests/lib/object-list-state.test.ts | 26 ++++++++++++++++++++++++++ 5 files changed, 41 insertions(+), 7 deletions(-) diff --git a/components/object/list.tsx b/components/object/list.tsx index 2c68fb3d..d2ecca41 100644 --- a/components/object/list.tsx +++ b/components/object/list.tsx @@ -433,14 +433,18 @@ export function ObjectList({ const filteredEmptyState = displayState === "filtered-partial" || displayState === "filtered-empty" const emptyTitle = filteredEmptyState ? t(displayState === "filtered-partial" ? "No matches in loaded objects" : "No matching objects") - : t("No Objects") + : displayState === "partial" + ? t("Load next objects") + : t("No Objects") const emptyDescription = filteredEmptyState ? t( displayState === "filtered-partial" ? "More objects have not been searched yet." : "No loaded objects match this filter.", ) - : t("Upload files or create folders to populate this bucket.") + : displayState === "partial" + ? t("More objects have not been searched yet.") + : t("Upload files or create folders to populate this bucket.") const downloadFile = React.useCallback( async (key: string) => { @@ -852,7 +856,7 @@ export function ObjectList({ React.useEffect(() => { const node = loadMoreRef.current - if (!node || !nextToken || typeof IntersectionObserver === "undefined") return + if (!node || !nextToken || loading || loadMoreError || typeof IntersectionObserver === "undefined") return const observer = new IntersectionObserver( (entries) => { @@ -868,7 +872,7 @@ export function ObjectList({ return () => { observer.disconnect() } - }, [loadNextBatch, nextToken]) + }, [loadNextBatch, nextToken, loading, loadMoreError]) return (