fix: Make sure recipe state is updated correctly (#2566)

This commit is contained in:
Johan Lindell 2023-09-30 01:59:27 +02:00 committed by GitHub
parent b32e2f1bf7
commit 40ab328bb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -51,13 +51,20 @@ interface PageState {
toggleCookMode: () => void; toggleCookMode: () => void;
} }
const memo: Record<string, PageState> = {}; type PageRefs = ReturnType<typeof pageRefs>;
function pageStateConstructor(slug: string): PageState { const memo: Record<string, PageRefs> = {};
const slugRef = ref(slug);
const pageModeRef = ref(PageMode.VIEW);
const editModeRef = ref(EditorMode.FORM);
function pageRefs(slug: string) {
return {
slugRef: ref(slug),
pageModeRef: ref(PageMode.VIEW),
editModeRef: ref(EditorMode.FORM),
imageKey: ref(1),
};
}
function pageState({ slugRef, pageModeRef, editModeRef, imageKey }: PageRefs): PageState {
const toggleEditMode = () => { const toggleEditMode = () => {
if (editModeRef.value === EditorMode.FORM) { if (editModeRef.value === EditorMode.FORM) {
editModeRef.value = EditorMode.JSON; editModeRef.value = EditorMode.JSON;
@ -92,7 +99,7 @@ function pageStateConstructor(slug: string): PageState {
slug: slugRef, slug: slugRef,
pageMode: computed(() => pageModeRef.value), pageMode: computed(() => pageModeRef.value),
editMode: computed(() => editModeRef.value), editMode: computed(() => editModeRef.value),
imageKey: ref(1), imageKey,
toggleEditMode, toggleEditMode,
setMode, setMode,
@ -120,10 +127,10 @@ function pageStateConstructor(slug: string): PageState {
*/ */
export function usePageState(slug: string): PageState { export function usePageState(slug: string): PageState {
if (!memo[slug]) { if (!memo[slug]) {
memo[slug] = pageStateConstructor(slug); memo[slug] = pageRefs(slug);
} }
return memo[slug]; return pageState(memo[slug]);
} }
export function clearPageState(slug: string) { export function clearPageState(slug: string) {