From a9d2a4654b414a01a53a0d79f1f90a5102564710 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 5 Nov 2021 14:56:03 -0300 Subject: feedback state rendering --- .../src/pages/home/ChallengeOverviewScreen.tsx | 116 +++++++++++++++------ 1 file changed, 86 insertions(+), 30 deletions(-) (limited to 'packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx') diff --git a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx index ed34bbde2..598999f2e 100644 --- a/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx +++ b/packages/anastasis-webui/src/pages/home/ChallengeOverviewScreen.tsx @@ -12,27 +12,24 @@ function OverviewFeedbackDisplay(props: { feedback?: ChallengeFeedback }) { switch (feedback.state) { case ChallengeFeedbackStatus.Message: return ( -
-

{feedback.message}

-
+
{feedback.message}
); + case ChallengeFeedbackStatus.Solved: + return
case ChallengeFeedbackStatus.Pending: case ChallengeFeedbackStatus.AuthIban: return null; + case ChallengeFeedbackStatus.ServerFailure: + return
Server error.
; case ChallengeFeedbackStatus.RateLimitExceeded: - return
Rate limit exceeded.
; - case ChallengeFeedbackStatus.Redirect: - return
Redirect (FIXME: not supported)
; + return
There were to many failed attempts.
; case ChallengeFeedbackStatus.Unsupported: - return
Challenge not supported by client.
; + return
This client doesn't support solving this type of challenge. Use another version or contact the provider.
; case ChallengeFeedbackStatus.TruthUnknown: - return
Truth unknown
; + return
Provider doesn't recognize the challenge of the policy. Contact the provider for further information.
; + case ChallengeFeedbackStatus.Redirect: default: - return ( -
-
{JSON.stringify(feedback)}
-
- ); + return
; } } @@ -113,6 +110,77 @@ export function ChallengeOverviewScreen(): VNode { const tableBody = policy.challenges.map(({ info, uuid }) => { const isFree = !info.cost || info.cost.endsWith(":0"); const method = authMethods[info.type as KnownAuthMethods]; + + if (!method) { + return
+
+ unknown challenge +
+ +
+ } + + function ChallengeButton({ id, feedback }: { id: string; feedback?: ChallengeFeedback }): VNode { + function selectChallenge(): void { + if (reducer) reducer.transition("select_challenge", { uuid: id }) + } + if (!feedback) { + return
+ +
+ } + switch (feedback.state) { + case ChallengeFeedbackStatus.ServerFailure: + case ChallengeFeedbackStatus.Unsupported: + case ChallengeFeedbackStatus.TruthUnknown: + case ChallengeFeedbackStatus.RateLimitExceeded: return
+ case ChallengeFeedbackStatus.AuthIban: + case ChallengeFeedbackStatus.Payment: return
+ +
+ case ChallengeFeedbackStatus.Redirect: return
+ +
+ case ChallengeFeedbackStatus.Solved: return
+
+ Solved +
+
+ default: return
+ +
+ + } + // return
+ // {feedback.state !== "solved" ? ( + // + + // } + // > + // {isFree ? "Solve" : `Pay and Solve`} + // + // ) : null} + // {feedback.state === "solved" ? ( + // //
Solved
+ //
Solved
+ + // ) : null} + //
+ } return (
-
- {method && info.feedback?.state !== "solved" ? ( - - reducer.transition("select_challenge", { uuid }) - } - > - {isFree ? "Solve" : `Pay and Solve`} - - ) : null} - {info.feedback?.state === "solved" ? ( - Solved - ) : null} -
+ + +
); }); @@ -156,8 +212,8 @@ export function ChallengeOverviewScreen(): VNode { const opa = !atLeastThereIsOnePolicySolved ? undefined : policy.isPolicySolved - ? undefined - : "0.6"; + ? undefined + : "0.6"; return (