diff options
| author | Sebastian <sebasjm@gmail.com> | 2022-04-14 17:08:36 -0300 | 
|---|---|---|
| committer | Sebastian <sebasjm@gmail.com> | 2022-04-14 17:08:36 -0300 | 
| commit | a2e8ab944576f1ef62e316727f69038fa99d78eb (patch) | |
| tree | 26de5216e3dfa416c7e9e07d5568ba82f947dd74 /packages/anastasis-webui/src | |
| parent | bf3e011183853452840673978689a21ea6644947 (diff) | |
fixing back and next transition
Diffstat (limited to 'packages/anastasis-webui/src')
| -rw-r--r-- | packages/anastasis-webui/src/pages/home/index.tsx | 34 | 
1 files 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 <p>Fatal: Reducer must be in context.</p>;    }    const doBack = async (): Promise<void> => { -    history.back(); -      if (props.onBack) {        await props.onBack(); +    } else { +      await reducer.back();      }    }; -  const doNext = async (): Promise<void> => { -    try { -      const nextId: number = -        (history.state && typeof history.state.id === "number" -          ? history.state.id -          : 0) + 1; +  const doNext = async (fromPopstate?: boolean): Promise<void> => { +    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",                }}              > -              <button class="button" onClick={doBack}> +              <button class="button" onClick={() => doBack()}>                  Back                </button>                <AsyncButton                  class="button is-info"                  data-tooltip={props.hideNext} -                onClick={doNext} +                onClick={() => doNext()}                  disabled={props.hideNext !== undefined}                >                  Next  | 
