Avoid downloading the Terms Markdown twice in safe mode
This commit is contained in:
parent
ed234ec88b
commit
a27c28c24f
@ -8,6 +8,9 @@ import { useRerenderOnStateChange } from "evt/hooks";
|
|||||||
import { assert } from "tsafe/assert";
|
import { assert } from "tsafe/assert";
|
||||||
import { fallbackLanguageTag } from "../i18n";
|
import { fallbackLanguageTag } from "../i18n";
|
||||||
import type { I18n } from "../i18n";
|
import type { I18n } from "../i18n";
|
||||||
|
import memoize from "memoizee";
|
||||||
|
import { useConst } from "powerhooks/useConst";
|
||||||
|
import { useConstCallback } from "powerhooks/useConstCallback";
|
||||||
|
|
||||||
export const evtTermMarkdown = Evt.create<string | undefined>(undefined);
|
export const evtTermMarkdown = Evt.create<string | undefined>(undefined);
|
||||||
|
|
||||||
@ -24,24 +27,24 @@ export function useDownloadTerms(params: {
|
|||||||
kcContext: KcContextLike;
|
kcContext: KcContextLike;
|
||||||
downloadTermMarkdown: (params: { currentLanguageTag: string }) => Promise<string>;
|
downloadTermMarkdown: (params: { currentLanguageTag: string }) => Promise<string>;
|
||||||
}) {
|
}) {
|
||||||
const { kcContext, downloadTermMarkdown } = params;
|
const { kcContext } = params;
|
||||||
|
|
||||||
|
const { downloadTermMarkdownMemoized } = (function useClosure() {
|
||||||
|
const { downloadTermMarkdown } = params;
|
||||||
|
|
||||||
|
const downloadTermMarkdownConst = useConstCallback(downloadTermMarkdown);
|
||||||
|
|
||||||
|
const downloadTermMarkdownMemoized = useConst(() =>
|
||||||
|
memoize((currentLanguageTag: string) => downloadTermMarkdownConst({ currentLanguageTag }), { "promise": true }),
|
||||||
|
);
|
||||||
|
|
||||||
|
return { downloadTermMarkdownMemoized };
|
||||||
|
})();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let isMounted = true;
|
downloadTermMarkdownMemoized(kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag).then(
|
||||||
|
thermMarkdown => (evtTermMarkdown.state = thermMarkdown),
|
||||||
downloadTermMarkdown({
|
);
|
||||||
"currentLanguageTag": kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag,
|
|
||||||
}).then(thermMarkdown => {
|
|
||||||
if (!isMounted) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
evtTermMarkdown.state = thermMarkdown;
|
|
||||||
});
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
isMounted = false;
|
|
||||||
};
|
|
||||||
}, []);
|
}, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user