taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 351096408318dd0aae597062080aa811e93bdc9a
parent 9e3af6e18b0dd90b444b11776ace1874d16a9ca5
Author: Sebastian <sebasjm@gmail.com>
Date:   Sun,  5 Jan 2025 18:15:33 -0300

handle new measure error code

Diffstat:
Mpackages/aml-backoffice-ui/src/pages/CaseDetails.tsx | 42++++++++++++++++++++++++++++++++++++++++--
Mpackages/aml-backoffice-ui/src/pages/Measures.tsx | 24++++++++++++++++++++++++
2 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx b/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx @@ -68,6 +68,7 @@ import { useOfficer } from "../hooks/officer.js"; import { getShapeFromFields, useFormState } from "../hooks/form.js"; import { privatePages } from "../Routing.js"; import { CurrentMeasureTable, MeasureInfo } from "./MeasuresTable.js"; +import { Officer } from "./Officer.js"; export type AmlEvent = | AmlFormEvent @@ -758,6 +759,25 @@ function ShowMesaureInfo({ if (measures instanceof TalerError) { return <ErrorLoadingWithDebug error={measures} />; } + if (measures.type === "fail") { + switch (measures.case) { + // case HttpStatusCode.Unauthorized: + case HttpStatusCode.Forbidden: + return ( + <Fragment> + <Attention type="danger" title={i18n.str`Operation denied`}> + <i18n.Translate> + This account signature is wrong, contact administrator or create + a new one. + </i18n.Translate> + </Attention> + <Officer /> + </Fragment> + ); + default: + assertUnreachable(measures.case); + } + } const summary: TalerExchangeApi.AvailableMeasureSummary = measures.body; const map: { [d: string]: MeasureInfo } = {}; @@ -1530,14 +1550,32 @@ function ShowMeasuresToSelect({ onSelect?: (m: MeasureInfo) => void; }): VNode { const measures = useServerMeasures(); - + const { i18n } = useTranslationContext(); if (!measures) { return <Loading />; } if (measures instanceof TalerError) { return <ErrorLoadingWithDebug error={measures} />; } - + if (measures.type === "fail") { + switch (measures.case) { + // case HttpStatusCode.Unauthorized: + case HttpStatusCode.Forbidden: + return ( + <Fragment> + <Attention type="danger" title={i18n.str`Operation denied`}> + <i18n.Translate> + This account signature is wrong, contact administrator or create + a new one. + </i18n.Translate> + </Attention> + <Officer /> + </Fragment> + ); + default: + assertUnreachable(measures.case); + } + } const list = Object.entries(measures.body.roots).map( ([key, value]): MeasureInfo => { if (value.check_name !== "SKIP") { diff --git a/packages/aml-backoffice-ui/src/pages/Measures.tsx b/packages/aml-backoffice-ui/src/pages/Measures.tsx @@ -15,10 +15,13 @@ */ import { AmlProgramRequirement, + assertUnreachable, + HttpStatusCode, KycCheckInformation, TalerError, } from "@gnu-taler/taler-util"; import { + Attention, Loading, useExchangeApiContext, useTranslationContext, @@ -27,6 +30,7 @@ import { Fragment, h, VNode } from "preact"; import { ErrorLoadingWithDebug } from "../components/ErrorLoadingWithDebug.js"; import { useServerMeasures } from "../hooks/account.js"; import { CurrentMeasureTable, MeasureInfo } from "./MeasuresTable.js"; +import { Officer } from "./Officer.js"; export function Measures({}: {}) { const { i18n } = useTranslationContext(); @@ -43,6 +47,26 @@ export function Measures({}: {}) { return <ErrorLoadingWithDebug error={measures} />; } + if (measures.type === "fail") { + switch (measures.case) { + // case HttpStatusCode.Unauthorized: + case HttpStatusCode.Forbidden: + return ( + <Fragment> + <Attention type="danger" title={i18n.str`Operation denied`}> + <i18n.Translate> + This account signature is wrong, contact administrator or create + a new one. + </i18n.Translate> + </Attention> + <Officer /> + </Fragment> + ); + default: + assertUnreachable(measures.case); + } + } + const list = Object.entries(measures.body.roots).map( ([key, value]): MeasureInfo => { if (value.check_name !== "SKIP") {