taler-typescript-core

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

commit b15b35fd4a7f87c7498ecf0959ff72d4060684a4
parent e7304c6a66b3b46b879311973d1d31a771749da7
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Tue, 21 Jul 2026 15:09:40 -0300

dont use hook after conditions

Diffstat:
Mpackages/taler-exchange-aml-webui/src/pages/AccountList.tsx | 4++--
Mpackages/taler-exchange-aml-webui/src/pages/Search.tsx | 9+++++----
Mpackages/taler-exchange-aml-webui/src/pages/decision/Events.tsx | 86+++++++++++++++++++++++++++++++++++--------------------------------------------
Mpackages/taler-exchange-aml-webui/src/pages/decision/Information.tsx | 14+++++++-------
4 files changed, 52 insertions(+), 61 deletions(-)

diff --git a/packages/taler-exchange-aml-webui/src/pages/AccountList.tsx b/packages/taler-exchange-aml-webui/src/pages/AccountList.tsx @@ -62,6 +62,8 @@ export function AccountList({ const officer = useOfficer(); const session = officer.state === "ready" ? officer.session : undefined; const { lib } = useExchangeApiContext(); + const [exported, setExported] = useState<{ content: string; file: string }>(); + if (!list) { return <Loading />; @@ -138,8 +140,6 @@ export function AccountList({ ? i18n.str`High risk accounts without investigation.` : i18n.str`Accounts without investigation.`; - const [exported, setExported] = useState<{ content: string; file: string }>(); - const fileDescription = investigated === undefined ? opened diff --git a/packages/taler-exchange-aml-webui/src/pages/Search.tsx b/packages/taler-exchange-aml-webui/src/pages/Search.tsx @@ -70,16 +70,17 @@ export function Search({ const [paytoUri, setPayto] = useState<Paytos.URI | undefined>(undefined); - if (officer.state !== "ready") { - return <HandleSessionNotReady officer={officer} />; - } - const design: FormDesign = { type: "single-column", fields: paytoTypeField(i18n), }; + const paytoForm = useForm<FormPayto>(design, { paytoType: "iban" }); + if (officer.state !== "ready") { + return <HandleSessionNotReady officer={officer} />; + } + return ( <div> <h1 class="my-2 text-3xl font-bold tracking-tight text-gray-900 "> diff --git a/packages/taler-exchange-aml-webui/src/pages/decision/Events.tsx b/packages/taler-exchange-aml-webui/src/pages/decision/Events.tsx @@ -42,63 +42,53 @@ const TALER_SCREEN_ID = 108; * @returns */ export function Events(): VNode { + const [request] = useCurrentDecisionRequest(); + + const events = calculateEventsBasedOnState(request.original, request); + return <ShowEventForm events={events} />; +} + +function ShowEventForm({ events: calculatedEvents }: { events: Events }) { const { i18n } = useTranslationContext(); const [request, updateRequest] = useCurrentDecisionRequest(); - // const [pref] = usePreferences(); - // const { config } = useExchangeApiContext(); + const design = formDesign(i18n, calculatedEvents); - // const dialect = - // (pref.testingDialect ? undefined : config.config.aml_spa_dialect) ?? - // AmlSpaDialect.TESTING; + const calculated = + request.triggering_events === undefined + ? calculatedEvents.triggered + : request.triggering_events.filter((name) => + calculatedEvents.triggered.includes(name), + ); - function ShowEventForm({ events: calculatedEvents }: { events: Events }) { - const design = formDesign(i18n, calculatedEvents); + const rest = + request.triggering_events === undefined + ? [] + : request.triggering_events.filter((name) => + calculatedEvents.rest.includes(name), + ); - const calculated = - request.triggering_events === undefined - ? calculatedEvents.triggered - : request.triggering_events.filter((name) => - calculatedEvents.triggered.includes(name), - ); + const form = useForm<FormType>(design, { + calculated, + rest, + }); - const rest = - request.triggering_events === undefined + onComponentUnload(() => { + updateRequest("onload event", { + custom_events: !form.status.result.custom ? [] - : request.triggering_events.filter((name) => - calculatedEvents.rest.includes(name), - ); - - const form = useForm<FormType>(design, { - calculated, - rest, - }); - - onComponentUnload(() => { - updateRequest("onload event", { - custom_events: !form.status.result.custom - ? [] - : form.status.result.custom, - triggering_events: [ - ...(form.status.result.calculated ?? []), - ...(form.status.result.rest ?? []), - ], - }); + : form.status.result.custom, + triggering_events: [ + ...(form.status.result.calculated ?? []), + ...(form.status.result.rest ?? []), + ], }); + }); - return ( - <div> - <FormUI design={design} model={form.model} /> - </div> - ); - } - - const events = calculateEventsBasedOnState( - request.original, - request, - // i18n, - // dialect, + return ( + <div> + <FormUI design={design} model={form.model} /> + </div> ); - return <ShowEventForm events={events} />; } type Events = { @@ -253,7 +243,7 @@ function calculateEventsBasedOnState( // dialect: AmlSpaDialect, ): Events { const init: Events = { triggered: [], rest: [] }; - const form = (request.attributes ?? {}) as Record<string, unknown>; + const form = (request.attributes?.data ?? {}) as Record<string, unknown>; const formId = form[TalerFormAttributes.FORM_ID]! as string; return Object.entries(EventsDerivation_TOPS).reduce((prev, [name, info]) => { if ( diff --git a/packages/taler-exchange-aml-webui/src/pages/decision/Information.tsx b/packages/taler-exchange-aml-webui/src/pages/decision/Information.tsx @@ -92,13 +92,13 @@ function FillCustomerData({ }; // FIXME: What about forms with context? - let formDesign: FormDesign; - if (typeof theForm.config === "function") { - const config = theForm.config; - formDesign = useMemo(() => config({}), [theForm]); - } else { - formDesign = theForm.config; - } + let formDesign: FormDesign = useMemo(() => { + if (typeof theForm.config === "function") { + return theForm.config({}); + } else { + return theForm.config; + } + }, [theForm]); /* FIXME: Should we always add FORM ID and VERSION into data? */ const form = useForm<object>(formDesign, request.attributes?.data ?? {});