From a2e8ab944576f1ef62e316727f69038fa99d78eb Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 14 Apr 2022 17:08:36 -0300 Subject: [PATCH] fixing back and next transition --- .../anastasis-webui/src/pages/home/index.tsx | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/anastasis-webui/src/pages/home/index.tsx b/packages/anastasis-webui/src/pages/home/index.tsx index 7e7a00062..03bf21577 100644 --- a/packages/anastasis-webui/src/pages/home/index.tsx +++ b/packages/anastasis-webui/src/pages/home/index.tsx @@ -100,24 +100,26 @@ export function AnastasisClientFrame(props: AnastasisClientFrameProps): VNode { return

Fatal: Reducer must be in context.

; } const doBack = async (): Promise => { - history.back(); - if (props.onBack) { await props.onBack(); + } else { + await reducer.back(); } }; - const doNext = async (): Promise => { - try { - const nextId: number = - (history.state && typeof history.state.id === "number" - ? history.state.id - : 0) + 1; + const doNext = async (fromPopstate?: boolean): Promise => { + if (!fromPopstate) { + try { + const nextId: number = + (history.state && typeof history.state.id === "number" + ? history.state.id + : 0) + 1; - currentHistoryId = nextId; + currentHistoryId = nextId; - history.pushState({ id: nextId }, "unused", `#${nextId}`); - } catch (e) { - console.log(e); + history.pushState({ id: nextId }, "unused", `#${nextId}`); + } catch (e) { + console.log(e); + } } if (props.onNext) { @@ -136,9 +138,9 @@ export function AnastasisClientFrame(props: AnastasisClientFrameProps): VNode { const browserOnBackButton = useCallback(async (ev: PopStateEvent) => { //check if we are going back or forward if (!ev.state || ev.state.id === 0 || ev.state.id < currentHistoryId) { - await reducer.back(); + await doBack(); } else { - await reducer.transition("next", {}); + await doNext(true); } // reducer @@ -169,13 +171,13 @@ export function AnastasisClientFrame(props: AnastasisClientFrameProps): VNode { justifyContent: "space-between", }} > - doNext()} disabled={props.hideNext !== undefined} > Next