From 6c2d6e9ad96b0eeb3f88b4b54bb75f87ba244e87 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 20 Feb 2024 17:33:43 -0300 Subject: fix #8451 --- .../paths/instance/accounts/create/CreatePage.tsx | 22 ++++++++++--- .../src/paths/instance/accounts/create/index.tsx | 6 ++-- .../paths/instance/accounts/update/UpdatePage.tsx | 36 +++++++++++++--------- 3 files changed, 41 insertions(+), 23 deletions(-) (limited to 'packages/merchant-backoffice-ui/src/paths') diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx index 6e4786a47..8539e6783 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/CreatePage.tsx @@ -36,7 +36,7 @@ import { undefinedIfEmpty } from "../../../../utils/table.js"; type Entity = MerchantBackend.BankAccounts.AccountAddDetails & { repeatPassword: string }; interface Props { - onCreate: (d: Entity) => Promise; + onCreate: (d: MerchantBackend.BankAccounts.AccountAddDetails) => Promise; onBack?: () => void; } @@ -44,7 +44,7 @@ const accountAuthType = ["none", "basic"]; function isValidURL(s: string): boolean { try { - const u = new URL(s) + const u = new URL("/", s) return true; } catch (e) { return false; @@ -88,8 +88,22 @@ export function CreatePage({ onCreate, onBack }: Props): VNode { const submitForm = () => { if (hasErrors) return Promise.reject(); - delete state.repeatPassword - return onCreate(state as any); + const credit_facade_url = !state.credit_facade_url ? undefined : new URL("/", state.credit_facade_url).href + const credit_facade_credentials: MerchantBackend.BankAccounts.FacadeCredentials | undefined = + credit_facade_url == undefined ? undefined : + state.credit_facade_credentials?.type === "basic" ? { + type: "basic", + password: state.credit_facade_credentials.password, + username: state.credit_facade_credentials.username, + } : { + type: "none" + } + + return onCreate({ + payto_uri: state.payto_uri!, + credit_facade_credentials, + credit_facade_url, + }); }; return ( diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx index 7d33d25ce..b458efe31 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/create/index.tsx @@ -24,11 +24,9 @@ import { Fragment, h, VNode } from "preact"; import { useState } from "preact/hooks"; import { NotificationCard } from "../../../../components/menu/index.js"; import { MerchantBackend } from "../../../../declaration.js"; -import { useWebhookAPI } from "../../../../hooks/webhooks.js"; +import { useBankAccountAPI } from "../../../../hooks/bank.js"; import { Notification } from "../../../../utils/types.js"; import { CreatePage } from "./CreatePage.js"; -import { useOtpDeviceAPI } from "../../../../hooks/otp.js"; -import { useBankAccountAPI } from "../../../../hooks/bank.js"; export type Entity = MerchantBackend.BankAccounts.AccountAddDetails; interface Props { @@ -53,7 +51,7 @@ export default function CreateValidator({ onConfirm, onBack }: Props): VNode { }) .catch((error) => { setNotif({ - message: i18n.str`could not create device`, + message: i18n.str`could not create account`, type: "ERROR", description: error.message, }); diff --git a/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx index e0e0ba7ed..9514ed0dc 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/accounts/update/UpdatePage.tsx @@ -49,8 +49,14 @@ export function UpdatePage({ account, onUpdate, onBack }: Props): VNode { const [state, setState] = useState>(account); + // @ts-expect-error "unedit" is fine since is part of the accountAuthType values + if (state.credit_facade_credentials?.type === "unedit") { + // we use this to set creds to undefined but server don't get this type + state.credit_facade_credentials = undefined + } + const errors: FormErrors = { - credit_facade_url: !state.credit_facade_url ? i18n.str`required` : !isValidURL(state.credit_facade_url) ? i18n.str`invalid url` : undefined, + credit_facade_url: !state.credit_facade_url ? undefined : !isValidURL(state.credit_facade_url) ? i18n.str`invalid url` : undefined, credit_facade_credentials: undefinedIfEmpty({ username: state.credit_facade_credentials?.type !== "basic" ? undefined @@ -73,19 +79,19 @@ export function UpdatePage({ account, onUpdate, onBack }: Props): VNode { const submitForm = () => { if (hasErrors) return Promise.reject(); - const creds: typeof state.credit_facade_credentials = - state.credit_facade_credentials?.type === "basic" ? { - type: "basic", - password: state.credit_facade_credentials.password, - username: state.credit_facade_credentials.username, - } : state.credit_facade_credentials?.type === "none" ? { - type: "none" - } : undefined; - - return onUpdate({ - credit_facade_credentials: creds, - credit_facade_url: state.credit_facade_url, - }); + const credit_facade_url = !state.credit_facade_url ? undefined : new URL("/", state.credit_facade_url).href + + const credit_facade_credentials: MerchantBackend.BankAccounts.FacadeCredentials | undefined = + credit_facade_url == undefined || state.credit_facade_credentials === undefined ? undefined : + state.credit_facade_credentials.type === "basic" ? { + type: "basic", + password: state.credit_facade_credentials.password, + username: state.credit_facade_credentials.username, + } : { + type: "none" + }; + + return onUpdate({ credit_facade_credentials, credit_facade_url }); }; return ( @@ -187,7 +193,7 @@ export function UpdatePage({ account, onUpdate, onBack }: Props): VNode { function isValidURL(s: string): boolean { try { - const u = new URL(s) + const u = new URL("/", s) return true; } catch (e) { return false; -- cgit v1.2.3