pagescene AssetMenu: fix featured Sets/Creatures never loading

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.
This commit is contained in:
Tanish Manku committed 2026-05-12 18:27:59 -07:00
1 parent e120d009ae
commit a9fa8d710a
1 file changed
+7 -1
@@ -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,