From a9fa8d710a525fe4367043a6485217ccf6830d27 Mon Sep 17 00:00:00 2001 From: Tanish Manku Date: Tue, 12 May 2026 18:27:59 -0700 Subject: [PATCH] pagescene AssetMenu: fix featured Sets/Creatures never loading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useFeaturedObjects' auto-fetch effect synchronously flipped firstFetch.current to IN_PROGRESS before calling fetchFeaturedObjects. On AssetModal's first mount the EngineContext editor is null, so the fetch bailed at `if (!editor) return`. When the editor later became available the effect re-fired (editor is in fetchFeaturedObjects' useCallback deps), but the IN_PROGRESS guard blocked it — the network request never fired for any featured category. CHARACTER/OBJECT tabs appeared populated only because they're merged with local demo arrays inside AssetModal's assetTabs useMemo; Sets and Creatures have no demo fallback so the bug was visible there. Move the editor check into the auto-fetch effect itself and add editor to its deps, so IN_PROGRESS isn't burned on the no-op call. Regression from PR #1492. --- .../src/lib/comps/AssetMenu/hooks/useFeaturedObjects.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/libs/components/pagescene/src/lib/comps/AssetMenu/hooks/useFeaturedObjects.tsx b/frontend/libs/components/pagescene/src/lib/comps/AssetMenu/hooks/useFeaturedObjects.tsx index cfd72c9398..06c38bcdd9 100644 --- a/frontend/libs/components/pagescene/src/lib/comps/AssetMenu/hooks/useFeaturedObjects.tsx +++ b/frontend/libs/components/pagescene/src/lib/comps/AssetMenu/hooks/useFeaturedObjects.tsx @@ -87,6 +87,12 @@ export const useFeaturedObjects = (props: useFeaturedObjectsProps) => { }, [nextPageCursor, props, editor]); useEffect(() => { + // Wait for the editor instance before claiming first-fetch ownership. + // Otherwise the IN_PROGRESS flip below would burn the slot on a no-op + // call (fetchFeaturedObjects bails at !editor), and the subsequent + // re-run after editor becomes available would see IN_PROGRESS and + // skip the actual fetch forever. See PR #1492 regression. + if (!editor) return; if ( (firstFetch.current === FetchStatus.READY || firstFetch.current === FetchStatus.ERROR) && @@ -95,7 +101,7 @@ export const useFeaturedObjects = (props: useFeaturedObjectsProps) => { firstFetch.current = FetchStatus.IN_PROGRESS; fetchFeaturedObjects(); } - }, [fetchFeaturedObjects]); + }, [editor, fetchFeaturedObjects]); return { featuredObjects,