diff options
Diffstat (limited to 'packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSolve.tsx')
-rw-r--r-- | packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSolve.tsx | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSolve.tsx b/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSolve.tsx deleted file mode 100644 index e0ebdce76..000000000 --- a/packages/anastasis-webui/src/pages/home/authMethod/AuthMethodVideoSolve.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { - ChallengeFeedbackStatus, - ChallengeInfo, -} from "@gnu-taler/anastasis-core"; -import { h, VNode } from "preact"; -import { useState } from "preact/hooks"; -import { AsyncButton } from "../../../components/AsyncButton"; -import { TextInput } from "../../../components/fields/TextInput"; -import { useAnastasisContext } from "../../../context/anastasis"; -import { AnastasisClientFrame } from "../index"; -import { SolveOverviewFeedbackDisplay } from "../SolveScreen"; -import { AuthMethodSolveProps } from "./index"; - -export function AuthMethodVideoSolve({ id }: AuthMethodSolveProps): VNode { - const [answer, setAnswer] = useState(""); - - const reducer = useAnastasisContext(); - if (!reducer) { - return ( - <AnastasisClientFrame hideNav title="Recovery problem"> - <div>no reducer in context</div> - </AnastasisClientFrame> - ); - } - if ( - reducer.currentReducerState?.reducer_type !== "recovery" - ) { - return ( - <AnastasisClientFrame hideNav title="Recovery problem"> - <div>invalid state</div> - </AnastasisClientFrame> - ); - } - - if (!reducer.currentReducerState.recovery_information) { - return ( - <AnastasisClientFrame - hideNext="Recovery document not found" - title="Recovery problem" - > - <div>no recovery information found</div> - </AnastasisClientFrame> - ); - } - if (!reducer.currentReducerState.selected_challenge_uuid) { - return ( - <AnastasisClientFrame hideNav title="Recovery problem"> - <div>invalid state</div> - <div - style={{ - marginTop: "2em", - display: "flex", - justifyContent: "space-between", - }} - > - <button class="button" onClick={() => reducer.back()}> - Back - </button> - </div> - </AnastasisClientFrame> - ); - } - - const chArr = reducer.currentReducerState.recovery_information.challenges; - const challengeFeedback = - reducer.currentReducerState.challenge_feedback ?? {}; - const selectedUuid = reducer.currentReducerState.selected_challenge_uuid; - const challenges: { - [uuid: string]: ChallengeInfo; - } = {}; - for (const ch of chArr) { - challenges[ch.uuid] = ch; - } - const selectedChallenge = challenges[selectedUuid]; - const feedback = challengeFeedback[selectedUuid]; - - async function onNext(): Promise<void> { - return reducer?.transition("solve_challenge", { answer }); - } - function onCancel(): void { - reducer?.back(); - } - - const shouldHideConfirm = - feedback?.state === ChallengeFeedbackStatus.RateLimitExceeded || - feedback?.state === ChallengeFeedbackStatus.Redirect || - feedback?.state === ChallengeFeedbackStatus.Unsupported || - feedback?.state === ChallengeFeedbackStatus.TruthUnknown; - - return ( - <AnastasisClientFrame hideNav title="Add email authentication"> - <SolveOverviewFeedbackDisplay feedback={feedback} /> - <p>You are gonna be called to check your identity</p> - <TextInput label="Answer" grabFocus bind={[answer, setAnswer]} /> - - <div - style={{ - marginTop: "2em", - display: "flex", - justifyContent: "space-between", - }} - > - <button class="button" onClick={onCancel}> - Cancel - </button> - {!shouldHideConfirm && ( - <AsyncButton class="button is-info" onClick={onNext}> - Confirm - </AsyncButton> - )} - </div> - </AnastasisClientFrame> - ); -} |