diff options
| author | Sebastian <sebasjm@gmail.com> | 2022-04-13 16:10:11 -0300 | 
|---|---|---|
| committer | Sebastian <sebasjm@gmail.com> | 2022-04-13 16:10:31 -0300 | 
| commit | bd76b5d76f0e03d2d511b6cc0aae4636a2ec52c9 (patch) | |
| tree | fcaca543e025c557d0ccff71d5c31178fe326ead /packages/anastasis-webui/src | |
| parent | 5054ff6c6d200e8d4d7658e001b0bcb1936d6876 (diff) | |
fix: #7072
Diffstat (limited to 'packages/anastasis-webui/src')
| -rw-r--r-- | packages/anastasis-webui/src/pages/home/index.tsx | 40 | 
1 files changed, 39 insertions, 1 deletions
diff --git a/packages/anastasis-webui/src/pages/home/index.tsx b/packages/anastasis-webui/src/pages/home/index.tsx index 7d191ae04..cf31d68eb 100644 --- a/packages/anastasis-webui/src/pages/home/index.tsx +++ b/packages/anastasis-webui/src/pages/home/index.tsx @@ -6,7 +6,7 @@ import {    h,    VNode,  } from "preact"; -import { useErrorBoundary } from "preact/hooks"; +import { useCallback, useEffect, useErrorBoundary } from "preact/hooks";  import { AsyncButton } from "../../components/AsyncButton";  import { Menu } from "../../components/menu";  import { Notifications } from "../../components/Notifications"; @@ -103,6 +103,28 @@ export function AnastasisClientFrame(props: AnastasisClientFrameProps): VNode {      } else {        await reducer.transition("next", {});      } +    reducer.currentReducerState?.reducer_type; + +    const stateName = !reducer.currentReducerState +      ? "not-defined" +      : reducer.currentReducerState.reducer_type === "backup" +      ? `#backup-${reducer.currentReducerState.backup_state}` +      : reducer.currentReducerState.reducer_type === "recovery" +      ? `recovery-${reducer.currentReducerState.recovery_state}` +      : reducer.currentReducerState.reducer_type === "error" +      ? `error-${reducer.currentReducerState.code}` +      : "unknown"; + +    const id: number = +      typeof history.state.id === "number" ? history.state.id : 1; + +    history.pushState( +      { +        id: id + 1, +      }, +      "unused", +      stateName, +    );    };    const handleKeyPress = (      e: h.JSX.TargetedKeyboardEvent<HTMLDivElement>, @@ -110,6 +132,22 @@ export function AnastasisClientFrame(props: AnastasisClientFrameProps): VNode {      console.log("Got key press", e.key);      // FIXME: By default, "next" action should be executed here    }; + +  const browserOnBackButton = useCallback((ev: PopStateEvent) => { +    console.log("BACK BACK", JSON.stringify(ev.state)); +    reducer.back(); +    // reducer +    return false; +  }, []); + +  useEffect(() => { +    window.addEventListener("popstate", browserOnBackButton); + +    return () => { +      window.removeEventListener("popstate", browserOnBackButton); +    }; +  }, []); +    return (      <Fragment>        <Menu title="Anastasis" />  | 
