aboutsummaryrefslogtreecommitdiff
path: root/packages/demobank-ui/src/pages/SolveChallengePage.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/demobank-ui/src/pages/SolveChallengePage.tsx')
-rw-r--r--packages/demobank-ui/src/pages/SolveChallengePage.tsx88
1 files changed, 41 insertions, 47 deletions
diff --git a/packages/demobank-ui/src/pages/SolveChallengePage.tsx b/packages/demobank-ui/src/pages/SolveChallengePage.tsx
index c7cd7e660..5ac622795 100644
--- a/packages/demobank-ui/src/pages/SolveChallengePage.tsx
+++ b/packages/demobank-ui/src/pages/SolveChallengePage.tsx
@@ -35,7 +35,7 @@ import {
} from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
import { Fragment, VNode, h } from "preact";
-import { useState } from "preact/hooks";
+import { useEffect, useState } from "preact/hooks";
import { ErrorLoadingWithDebug } from "../components/ErrorLoadingWithDebug.js";
import { useBankCoreApiContext } from "../context/config.js";
import { useWithdrawalDetails } from "../hooks/access.js";
@@ -92,6 +92,10 @@ export function SolveChallengePage({
newCh.info = resp.body;
updateBankState("currentChallenge", newCh);
} else {
+ const newCh = structuredClone(ch);
+ newCh.sent = AbsoluteTime.now();
+ newCh.info = undefined;
+ updateBankState("currentChallenge", newCh);
switch (resp.case) {
case HttpStatusCode.NotFound:
return notify({
@@ -262,7 +266,7 @@ export function SolveChallengePage({
}}
/>
{ch.info && (
- <div class="mt-3 text-sm leading-6">
+ <div class="mt-2">
<form
class="bg-white shadow-sm ring-1 ring-gray-900/5"
autoCapitalize="none"
@@ -271,7 +275,7 @@ export function SolveChallengePage({
e.preventDefault();
}}
>
- <div class="px-4 py-6 sm:p-8">
+ <div class="px-4 py-4">
<label for="withdraw-amount">
<i18n.Translate>Enter the confirmation code</i18n.Translate>
</label>
@@ -299,14 +303,8 @@ export function SolveChallengePage({
/>
</div>
</div>
- <div class="flex items-center justify-between gap-x-6 border-t border-gray-900/10 px-4 py-4 sm:px-8">
- <a
- href={routeClose.url({})}
- name="cancel"
- class="inline-flex items-center rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500"
- >
- <i18n.Translate>Cancel</i18n.Translate>
- </a>
+ <div class="flex items-center justify-between border-gray-900/10 px-4 py-4 ">
+ <div />
<button
type="submit"
name="confirm"
@@ -341,45 +339,16 @@ function ChallengeDetails({
const { i18n, dateLocale } = useTranslationContext();
const { config } = useBankCoreApiContext();
+ const firstTime = AbsoluteTime.isNever(challenge.sent)
+ useEffect(() => {
+ if (firstTime) {
+ onStart()
+ }
+ },[])
return (
<div class="px-4 mt-4 ">
<div class="w-full">
- <div class="flex justify-between">
- <button
- type="button"
- name="cancel"
- class="text-sm font-semibold leading-6 text-gray-900"
- onClick={onCancel}
- >
- <i18n.Translate>Cancel</i18n.Translate>
- </button>
- {challenge.info ? (
- <button
- type="submit"
- name="send again"
- class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
- onClick={(e) => {
- onStart();
- e.preventDefault();
- }}
- >
- <i18n.Translate>Send again</i18n.Translate>
- </button>
- ) : (
- <button
- type="submit"
- name="send code"
- class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
- onClick={(e) => {
- onStart();
- e.preventDefault();
- }}
- >
- <i18n.Translate>Send code</i18n.Translate>
- </button>
- )}
- </div>
- <div class="mt-6 border-t border-gray-100">
+ <div class="border-gray-100">
<h2 class="text-base font-semibold leading-7 text-gray-900">
<span
class="text-sm text-black font-semibold leading-6 "
@@ -588,6 +557,31 @@ function ChallengeDetails({
)}
</dl>
</div>
+ <div class="mt-6 mb-4 flex justify-between">
+ <button
+ type="button"
+ name="cancel"
+ class="text-sm font-semibold leading-6 text-gray-900"
+ onClick={onCancel}
+ >
+ <i18n.Translate>Cancel</i18n.Translate>
+ </button>
+ {challenge.info ? (
+ <button
+ type="submit"
+ name="send again"
+ class="disabled:opacity-50 disabled:cursor-default cursor-pointer rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
+ onClick={(e) => {
+ onStart();
+ e.preventDefault();
+ }}
+ >
+ <i18n.Translate>Send again</i18n.Translate>
+ </button>
+ ) : (
+ <div> sending code ...</div>
+ )}
+ </div>
</div>
</div>
);