commit 351096408318dd0aae597062080aa811e93bdc9a
parent 9e3af6e18b0dd90b444b11776ace1874d16a9ca5
Author: Sebastian <sebasjm@gmail.com>
Date: Sun, 5 Jan 2025 18:15:33 -0300
handle new measure error code
Diffstat:
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") {