From a9d2a4654b414a01a53a0d79f1f90a5102564710 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 5 Nov 2021 14:56:03 -0300 Subject: feedback state rendering --- .../anastasis-webui/src/pages/home/SolveScreen.tsx | 81 +++++++++++++++++----- 1 file changed, 62 insertions(+), 19 deletions(-) (limited to 'packages/anastasis-webui/src/pages/home/SolveScreen.tsx') diff --git a/packages/anastasis-webui/src/pages/home/SolveScreen.tsx b/packages/anastasis-webui/src/pages/home/SolveScreen.tsx index bc1a88db3..35db5ead0 100644 --- a/packages/anastasis-webui/src/pages/home/SolveScreen.tsx +++ b/packages/anastasis-webui/src/pages/home/SolveScreen.tsx @@ -8,31 +8,67 @@ import { } from "../../../../anastasis-core/lib"; import { AsyncButton } from "../../components/AsyncButton"; import { TextInput } from "../../components/fields/TextInput"; +import { Notifications } from "../../components/Notifications"; import { useAnastasisContext } from "../../context/anastasis"; -function SolveOverviewFeedbackDisplay(props: { feedback?: ChallengeFeedback }) { +function SolveOverviewFeedbackDisplay(props: { feedback?: ChallengeFeedback }): VNode { const { feedback } = props; if (!feedback) { - return null; + return
; } switch (feedback.state) { case ChallengeFeedbackStatus.Message: - return ( -
-

{feedback.message}

-
- ); - case ChallengeFeedbackStatus.Pending: + return (); + case ChallengeFeedbackStatus.Payment: + return + To pay you can click here + + }]} /> case ChallengeFeedbackStatus.AuthIban: - return null; + return ; + case ChallengeFeedbackStatus.ServerFailure: + return (); case ChallengeFeedbackStatus.RateLimitExceeded: - return
Rate limit exceeded.
; + return (); case ChallengeFeedbackStatus.Redirect: - return
Redirect (FIXME: not supported)
; + return ( + Please visit this link: {feedback.redirect_url} + + }]} />); case ChallengeFeedbackStatus.Unsupported: - return
Challenge not supported by client.
; + return (); case ChallengeFeedbackStatus.TruthUnknown: - return
Truth unknown
; + return (); default: return (
@@ -79,8 +115,8 @@ export function SolveScreen(): VNode {
invalid state
- -
+ +
); } @@ -114,17 +150,23 @@ export function SolveScreen(): VNode { reducer?.back(); } + const feedback = challengeFeedback[selectedUuid] + const shouldHideConfirm = feedback?.state === ChallengeFeedbackStatus.RateLimitExceeded + || feedback?.state === ChallengeFeedbackStatus.Redirect + || feedback?.state === ChallengeFeedbackStatus.Unsupported + || feedback?.state === ChallengeFeedbackStatus.TruthUnknown + return (
Cancel - + {!shouldHideConfirm && Confirm - + }
); @@ -160,6 +202,7 @@ function SolveSmsEntry({ }: SolveEntryProps): VNode { return ( +

An sms has been sent to "{challenge.instructions}". Type the code below -- cgit v1.2.3