commit 4bc9cc7d7cd075c11ca18293c767ff24ffc2871d parent d978582967a4053d7409ac04ebc196397d7fa0db Author: Sebastian <sebasjm@gmail.com> Date: Tue, 28 Oct 2025 09:56:48 -0300 wip backoffice Diffstat:
15 files changed, 37 insertions(+), 35 deletions(-)
diff --git a/packages/bank-ui/src/Routing.tsx b/packages/bank-ui/src/Routing.tsx @@ -146,8 +146,8 @@ function PublicRounting({ login.onSuccess = (success, username) => onLoggedUser( username, - createRFC8959AccessTokenEncoded(success.body.access_token), - AbsoluteTime.fromProtocolTimestamp(success.body.expiration), + createRFC8959AccessTokenEncoded(success.access_token), + AbsoluteTime.fromProtocolTimestamp(success.expiration), ); login.onFail = (fail, username) => { diff --git a/packages/bank-ui/src/pages/ConversionRateClassDetails.tsx b/packages/bank-ui/src/pages/ConversionRateClassDetails.tsx @@ -925,7 +925,7 @@ function TestConversionClass({ !in_amount || !!error ? undefined : [in_amount], ); - calculate.onSuccess = (resp) => setCalc(resp.body); + calculate.onSuccess = (resp) => setCalc(resp); calculate.onFail = (fail) => { switch (fail.case) { case HttpStatusCode.BadRequest: diff --git a/packages/bank-ui/src/pages/LoginForm.tsx b/packages/bank-ui/src/pages/LoginForm.tsx @@ -124,8 +124,8 @@ export function LoginForm({ login.onSuccess = (result, username) => { session.logIn({ username, - token: createRFC8959AccessTokenEncoded(result.body.access_token), - expiration: AbsoluteTime.fromProtocolTimestamp(result.body.expiration), + token: createRFC8959AccessTokenEncoded(result.access_token), + expiration: AbsoluteTime.fromProtocolTimestamp(result.expiration), }); }; diff --git a/packages/bank-ui/src/pages/NewConversionRateClass.tsx b/packages/bank-ui/src/pages/NewConversionRateClass.tsx @@ -47,7 +47,7 @@ export function NewConversionRateClass({ ); create.onSuccess = (success) => { notifyInfo(i18n.str`Conversion rate class created.`); - onCreated(success.body.conversion_rate_class_id); + onCreated(success.conversion_rate_class_id); }; create.onFail = (fail) => { switch (fail.case) { diff --git a/packages/bank-ui/src/pages/SolveMFA.tsx b/packages/bank-ui/src/pages/SolveMFA.tsx @@ -269,19 +269,19 @@ export function SolveMFAChallenges({ api.sendChallenge(username, ch.challenge_id), ); sendMessage.onSuccess = (success, ch) => { - if (success.body.earliest_retransmission) { + if (success.earliest_retransmission) { setRetransmission({ ...retransmission, [ch.tan_channel]: AbsoluteTime.fromProtocolTimestamp( - success.body.earliest_retransmission, + success.earliest_retransmission, ), }); } setSelected({ ch, - expiration: !success.body.solve_expiration + expiration: !success.solve_expiration ? AbsoluteTime.never() - : AbsoluteTime.fromProtocolTimestamp(success.body.solve_expiration), + : AbsoluteTime.fromProtocolTimestamp(success.solve_expiration), }); }; diff --git a/packages/bank-ui/src/pages/WalletWithdrawForm.tsx b/packages/bank-ui/src/pages/WalletWithdrawForm.tsx @@ -157,11 +157,11 @@ function OldWithdrawalForm({ ); start.onSuccess = (success) => { - const uri = TalerUris.fromString(success.body.taler_withdraw_uri); + const uri = TalerUris.fromString(success.taler_withdraw_uri); if (uri.type === "fail" || uri.body.type !== TalerUriAction.Withdraw) { return notifyError( i18n.str`The server replied with an invalid taler://withdraw URI`, - i18n.str`Withdraw URI: ${success.body.taler_withdraw_uri}`, + i18n.str`Withdraw URI: ${success.taler_withdraw_uri}`, ); } else { updateBankState( diff --git a/packages/bank-ui/src/pages/admin/DownloadStats.tsx b/packages/bank-ui/src/pages/admin/DownloadStats.tsx @@ -97,7 +97,7 @@ export function DownloadStats({ routeCancel }: Props): VNode { lastStep !== undefined || !creds ? undefined : [creds.token], ); download.onSuccess = (success) => { - setDownloaded(success.body); + setDownloaded(success); setLastStep(undefined); }; diff --git a/packages/bank-ui/src/pages/regional/ConversionConfig.tsx b/packages/bank-ui/src/pages/regional/ConversionConfig.tsx @@ -194,7 +194,7 @@ function useComponentState({ }, !in_amount || status.status === "fail" ? undefined : [in_amount], ); - calculate.onSuccess = (resp) => setCalc(resp.body); + calculate.onSuccess = (resp) => setCalc(resp); calculate.onFail = (fail) => { switch (fail.case) { case HttpStatusCode.BadRequest: diff --git a/packages/bank-ui/src/pages/regional/CreateCashout.tsx b/packages/bank-ui/src/pages/regional/CreateCashout.tsx @@ -281,7 +281,7 @@ function CreateCashoutInternal({ }, [form.isDebit ?? false, inputAmount, sellFee], ); - conversionCalculator.onSuccess = (success) => setCalculation(success.body); + conversionCalculator.onSuccess = (success) => setCalculation(success); conversionCalculator.onFail = (fail) => { switch (fail.case) { case HttpStatusCode.BadRequest: diff --git a/packages/challenger-ui/src/pages/AnswerChallenge.tsx b/packages/challenger-ui/src/pages/AnswerChallenge.tsx @@ -140,10 +140,10 @@ export function AnswerChallenge({ : [session.nonce, contact], ); sendAgain.onSuccess = (sucess) => { - if (sucess.body.type === "completed") { - completed(sucess.body); + if (sucess.type === "completed") { + completed(sucess); } else { - sent(sucess.body); + sent(sucess); } }; sendAgain.onFail = (fail) => { @@ -171,10 +171,10 @@ export function AnswerChallenge({ : [session.nonce, { pin }], ); check.onSuccess = (success) => { - if (success.body.type === "completed") { - completed(success.body); + if (success.type === "completed") { + completed(success); } else { - failed(success.body); + failed(success); } onComplete(); }; diff --git a/packages/challenger-ui/src/pages/AskChallenge.tsx b/packages/challenger-ui/src/pages/AskChallenge.tsx @@ -166,10 +166,10 @@ export function AskChallenge({ form.status.errors || !info ? undefined : [session.nonce, info], ); send.onSuccess = (ok) => { - if (ok.body.type === "completed") { - completed(ok.body); + if (ok.type === "completed") { + completed(ok); } else { - sent(ok.body); + sent(ok); } onSendSuccesful(); }; diff --git a/packages/challenger-ui/src/pages/Setup.tsx b/packages/challenger-ui/src/pages/Setup.tsx @@ -77,7 +77,7 @@ export function Setup({ redirect.searchParams.set("client_id", clientId); redirect.searchParams.set("redirect_uri", redirect_uri); redirect.searchParams.set("state", encodeCrock(randomBytes(32))); - redirect.searchParams.set("nonce", ok.body.nonce); + redirect.searchParams.set("nonce", ok.nonce); redirect.hash = ""; window.location.href = redirect.href; onCreated(); diff --git a/packages/kyc-ui/src/pages/Start.tsx b/packages/kyc-ui/src/pages/Start.tsx @@ -186,7 +186,7 @@ function LinkGenerator({ req }: { req: KycRequirementInformation }): VNode { } }; start.onSuccess = (success) => { - setRedirectUrl(success.body.redirect_url); + setRedirectUrl(success.redirect_url); return i18n.str`Link generated, you can proceed.`; }; const [redirectUrl, setRedirectUrl] = useState<string>(); diff --git a/packages/kyc-ui/src/pages/TriggerKyc.tsx b/packages/kyc-ui/src/pages/TriggerKyc.tsx @@ -143,7 +143,7 @@ export function TriggerKyc({ onKycStarted }: Props): VNode { ); send.onSuccess = (success) => { - onKycStarted(success.body.access_token); + onKycStarted(success.access_token); }; send.onFail = (fail) => { switch (fail.case) { diff --git a/packages/web-util/src/hooks/useChallenge.ts b/packages/web-util/src/hooks/useChallenge.ts @@ -27,14 +27,14 @@ import { SafeHandlerTemplate } from "./useNotifications.js"; * the state and retry. * */ -export interface MfaState<Errors> { +export interface MfaState { /** * If a mfa has been started this will contain * the challenge response. */ pendingChallenge: ChallengeResponse | undefined; - onChallengeRequired: (c: ChallengeResponse) => void; + onChallengeRequired: (c: ChallengeResponse, repeat?: SafeHandlerTemplate<[ids:string[]], any>) => void; /** * Cancel the current pending challenge. * @@ -42,6 +42,7 @@ export interface MfaState<Errors> { */ doCancelChallenge: () => void; + repeatCall?: SafeHandlerTemplate<[string[]], any>; } /** @@ -73,20 +74,21 @@ type CallbackFactory<T extends any[], R> = ( /** * @returns */ -export function useChallengeHandler<T>(): MfaState<T> { - const [current, setCurrent] = useState<ChallengeResponse>(); +export function useChallengeHandler(): MfaState { + const [state, setState] = useState<{challenge: ChallengeResponse, repeat?: SafeHandlerTemplate<[string[]], any>}>(); function reset() { - setCurrent(undefined); + setState(undefined); } - function onChallengeRequired(challenge: ChallengeResponse) { - setCurrent(challenge) + function onChallengeRequired(challenge: ChallengeResponse, repeat?: SafeHandlerTemplate<[string[]], any>) { + setState({challenge, repeat}) } return { doCancelChallenge: reset, onChallengeRequired, - pendingChallenge: current, + pendingChallenge: state?.challenge, + repeatCall: state?.repeat, }; }