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:
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 ?? {});