assume metadata is available and only refetch it if we don't have it when the shadowroot is mounted

Signed-off-by: Morgan Bentell <mbentell@spotify.com>
This commit is contained in:
Morgan Bentell
2023-02-22 11:00:21 +01:00
parent 7e0c7b09a4
commit 68c7082188
+11 -7
View File
@@ -21,8 +21,10 @@ import React, {
useState,
memo,
ReactNode,
useEffect,
} from 'react';
import useAsync, { AsyncState } from 'react-use/lib/useAsync';
import { useAsyncRetry } from 'react-use';
import {
CompoundEntityRef,
@@ -121,6 +123,10 @@ export const TechDocsReaderPageProvider = memo(
return techdocsApi.getEntityMetadata(entityRef);
}, [entityRef]);
const metadata = useAsyncRetry(() => {
return techdocsApi.getTechDocsMetadata(entityRef);
}, [entityRef]);
const [title, setTitle] = useState(defaultTechDocsReaderPageValue.title);
const [subtitle, setSubtitle] = useState(
defaultTechDocsReaderPageValue.subtitle,
@@ -129,13 +135,11 @@ export const TechDocsReaderPageProvider = memo(
defaultTechDocsReaderPageValue.shadowRoot,
);
const metadata = useAsync(
() =>
shadowRoot
? techdocsApi.getTechDocsMetadata(entityRef)
: new Promise<TechDocsMetadata>(() => {}),
[entityRef, shadowRoot],
);
useEffect(() => {
if (shadowRoot && !metadata.loading && !metadata.value) {
metadata.retry();
}
}, [metadata, shadowRoot]);
const value = {
metadata,