diff options
author | Sebastian <sebasjm@gmail.com> | 2023-11-21 08:15:21 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-11-21 08:16:13 -0300 |
commit | 7c8c7692fb179e049ca80087d3573dc9b256fcdb (patch) | |
tree | 28a37dc3292798e7a04bf999a1849b1e9dbc10ae /packages/aml-backoffice-ui/src | |
parent | 342df60abe6d8b8b0c51e79cf13c7edcca58d9f9 (diff) | |
download | wallet-core-7c8c7692fb179e049ca80087d3573dc9b256fcdb.tar.xz |
fix compile error
Diffstat (limited to 'packages/aml-backoffice-ui/src')
8 files changed, 29 insertions, 27 deletions
diff --git a/packages/aml-backoffice-ui/src/NiceForm.tsx b/packages/aml-backoffice-ui/src/NiceForm.tsx index a78036a6b..53f29e580 100644 --- a/packages/aml-backoffice-ui/src/NiceForm.tsx +++ b/packages/aml-backoffice-ui/src/NiceForm.tsx @@ -1,4 +1,3 @@ -import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { ComponentChildren, Fragment, h } from "preact"; import { FlexibleForm } from "./forms/index.js"; import { FormProvider } from "./handlers/FormProvider.js"; diff --git a/packages/aml-backoffice-ui/src/forms/902_15e.ts b/packages/aml-backoffice-ui/src/forms/902_15e.ts index 0d90d82ee..6689896ab 100644 --- a/packages/aml-backoffice-ui/src/forms/902_15e.ts +++ b/packages/aml-backoffice-ui/src/forms/902_15e.ts @@ -1,8 +1,7 @@ import { AbsoluteTime, TranslatedString } from "@gnu-taler/taler-util"; -import { FormState } from "../handlers/FormProvider.js"; import { BaseForm } from "../pages/AntiMoneyLaunderingForm.js"; import { FlexibleForm } from "./index.js"; -import { Simplest, resolutionSection } from "./simplest.js"; +import { resolutionSection } from "./simplest.js"; export const v1 = (current: BaseForm): FlexibleForm<Form902_15.Form> => ({ design: [ @@ -152,11 +151,6 @@ export const v1 = (current: BaseForm): FlexibleForm<Form902_15.Form> => ({ }, resolutionSection(current), ], - behavior: function formBehavior( - v: Partial<Form902_15.Form>, - ): FormState<Form902_15.Form> { - return {}; - }, }); namespace Form902_15 { diff --git a/packages/aml-backoffice-ui/src/forms/index.ts b/packages/aml-backoffice-ui/src/forms/index.ts index 8feef0c49..74407ed82 100644 --- a/packages/aml-backoffice-ui/src/forms/index.ts +++ b/packages/aml-backoffice-ui/src/forms/index.ts @@ -4,7 +4,7 @@ import { DoubleColumnForm } from "../handlers/forms.js"; export interface FlexibleForm<T extends object> { design: DoubleColumnForm; - behavior: (form: Partial<T>) => FormState<T>; + behavior?: (form: Partial<T>) => FormState<T>; } export const languageList = [ diff --git a/packages/aml-backoffice-ui/src/forms/simplest.ts b/packages/aml-backoffice-ui/src/forms/simplest.ts index 5acb58201..778d20b75 100644 --- a/packages/aml-backoffice-ui/src/forms/simplest.ts +++ b/packages/aml-backoffice-ui/src/forms/simplest.ts @@ -33,7 +33,7 @@ export const v1 = (current: BaseForm): FlexibleForm<Simplest.Form> => ({ ): FormState<Simplest.Form> { return { comment: { - help: ((v.comment?.length ?? 0) > 10 ? "too long" : "") as TranslatedString + help: ((v.comment?.length ?? 0) > 100 ? "keep it short" : "") as TranslatedString }, threshold: { disabled: v.state === AmlExchangeBackend.AmlState.frozen, diff --git a/packages/aml-backoffice-ui/src/handlers/FormProvider.tsx b/packages/aml-backoffice-ui/src/handlers/FormProvider.tsx index 2d9eec164..b3cb7a972 100644 --- a/packages/aml-backoffice-ui/src/handlers/FormProvider.tsx +++ b/packages/aml-backoffice-ui/src/handlers/FormProvider.tsx @@ -21,6 +21,17 @@ export interface FormType<T extends object> { //@ts-ignore export const FormContext = createContext<FormType<any>>({}); +/** + * Map of {[field]:BehaviorResult} + * for every field of type + * - any native (string, number, etc...) + * - absoluteTime + * - amountJson + * + * except for: + * - object => recurse into + * - array => behavior result and element field + */ export type FormState<T extends object> = { [field in keyof T]?: T[field] extends AbsoluteTime ? BehaviorResult @@ -28,7 +39,7 @@ export type FormState<T extends object> = { ? BehaviorResult : T[field] extends Array<infer P extends object> ? InputArrayFieldState<P> - : T[field] extends (object | undefined) + : T[field] extends (object) ? FormState<T[field]> : BehaviorResult; }; diff --git a/packages/aml-backoffice-ui/src/pages/AntiMoneyLaunderingForm.tsx b/packages/aml-backoffice-ui/src/pages/AntiMoneyLaunderingForm.tsx index d1fb3b895..381f00ebb 100644 --- a/packages/aml-backoffice-ui/src/pages/AntiMoneyLaunderingForm.tsx +++ b/packages/aml-backoffice-ui/src/pages/AntiMoneyLaunderingForm.tsx @@ -1,5 +1,5 @@ import { AbsoluteTime, AmountJson, Amounts, Codec, OperationResult, buildCodecForObject, codecForNumber, codecForString, codecOptional } from "@gnu-taler/taler-util"; -import { FlexibleForm, useTranslationContext } from "@gnu-taler/web-util/browser"; +import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { h } from "preact"; import { NiceForm } from "../NiceForm.js"; import { v1 as form_902_11e_v1 } from "../forms/902_11e.js"; @@ -10,10 +10,11 @@ import { v1 as form_902_1e_v1 } from "../forms/902_1e.js"; import { v1 as form_902_4e_v1 } from "../forms/902_4e.js"; import { v1 as form_902_5e_v1 } from "../forms/902_5e.js"; import { v1 as form_902_9e_v1 } from "../forms/902_9e.js"; -import { Simplest, v1 as simplest } from "../forms/simplest.js"; +import { v1 as simplest } from "../forms/simplest.js"; import { Pages } from "../pages.js"; import { AmlExchangeBackend } from "../types.js"; import { useExchangeApiContext } from "../context/config.js"; +import { FlexibleForm } from "../forms/index.js"; export function AntiMoneyLaunderingForm({ account, formId, onSubmit }: { account: string, formId: string, onSubmit: (justification: Justification, state: AmlExchangeBackend.AmlState, threshold: AmountJson) => Promise<void>; }) { const { i18n } = useTranslationContext() @@ -51,7 +52,6 @@ export function AntiMoneyLaunderingForm({ account, formId, onSubmit }: { account > <div class="mt-6 flex items-center justify-end gap-x-6"> <a - // type="button" href={Pages.account.url({ account })} class="text-sm font-semibold leading-6 text-gray-900" > @@ -78,18 +78,18 @@ const DocumentDuplicateIcon = <svg xmlns="http://www.w3.org/2000/svg" fill="none </svg> -export type FormMetadata = { +export type FormMetadata<T extends BaseForm> = { label: string, id: string, version: number, icon: h.JSX.Element, - impl: (current: BaseForm) => FlexibleForm<BaseForm> + impl: (current: BaseForm) => FlexibleForm<T> } export type Justification<T = any> = { // form values value: T; -} & Omit<Omit<FormMetadata, "icon">, "impl"> +} & Omit<Omit<FormMetadata<any>, "icon">, "impl"> export function stringifyJustification(j: Justification): string { return JSON.stringify(j) @@ -113,7 +113,7 @@ type ParseJustificationFail = "form-not-found" | "version-not-found"; -export function parseJustification(s: string, listOfAllKnownForms: FormMetadata[]): OperationResult<{ justification: Justification, metadata: FormMetadata }, ParseJustificationFail> { +export function parseJustification(s: string, listOfAllKnownForms: FormMetadata<any>[]): OperationResult<{ justification: Justification, metadata: FormMetadata<any> }, ParseJustificationFail> { try { const justification = JSON.parse(s) const info = codecForSimpleFormMetadata().decode(justification) @@ -157,7 +157,7 @@ export function parseJustification(s: string, listOfAllKnownForms: FormMetadata[ } -export const allForms: Array<FormMetadata> = [ +export const allForms: Array<FormMetadata<BaseForm>> = [ { label: "Simple comment", id: "simple_comment", diff --git a/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx b/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx index 1cfa65926..9d6126ce3 100644 --- a/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx +++ b/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx @@ -2,7 +2,6 @@ import { AbsoluteTime, AmountJson, Amounts, - OperationResult, TalerError, TranslatedString, assertUnreachable @@ -11,12 +10,12 @@ import { ErrorLoading, Loading, useTranslationContext } from "@gnu-taler/web-uti import { format } from "date-fns"; import { Fragment, VNode, h } from "preact"; import { useState } from "preact/hooks"; +import { NiceForm } from "../NiceForm.js"; import { useCaseDetails } from "../hooks/useCaseDetails.js"; import { Pages } from "../pages.js"; import { AmlExchangeBackend } from "../types.js"; -import { ShowConsolidated } from "./ShowConsolidated.js"; import { FormMetadata, Justification, allForms, parseJustification } from "./AntiMoneyLaunderingForm.js"; -import { NiceForm } from "../NiceForm.js"; +import { ShowConsolidated } from "./ShowConsolidated.js"; export type AmlEvent = AmlFormEvent | AmlFormEventError | KycCollectionEvent | KycExpirationEvent; type AmlFormEvent = { @@ -24,7 +23,7 @@ type AmlFormEvent = { when: AbsoluteTime; title: TranslatedString; justification: Justification; - metadata: FormMetadata; + metadata: FormMetadata<any>; state: AmlExchangeBackend.AmlState; threshold: AmountJson; }; @@ -112,7 +111,7 @@ export function getEventsFromAmlHistory( export function CaseDetails({ account }: { account: string }) { const [selected, setSelected] = useState<AbsoluteTime>(AbsoluteTime.now()); - const [showForm, setShowForm] = useState<{ justification: Justification, metadata: FormMetadata }>() + const [showForm, setShowForm] = useState<{ justification: Justification, metadata: FormMetadata<any> }>() const { i18n } = useTranslationContext(); const details = useCaseDetails(account) diff --git a/packages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx b/packages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx index 0efc68632..bd25ce958 100644 --- a/packages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx +++ b/packages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx @@ -18,7 +18,6 @@ export function ShowConsolidated({ const cons = getConsolidated(history, until); const form: FlexibleForm<Consolidated> = { - versionId: "1", behavior: (form) => { return { aml: { @@ -93,10 +92,10 @@ export function ShowConsolidated({ return ( <Fragment> <h1 class="text-base font-semibold leading-7 text-black"> - Consolidated information + Consolidated information {until.t_ms === "never" ? "" - : `after ${format(until.t_ms, "dd MMMM yyyy")}` } + : `after ${format(until.t_ms, "dd MMMM yyyy")}`} </h1> <NiceForm key={`${String(Date.now())}`} |