taler-typescript-core

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

commit 07fc66eff79b8cc8e2325e56ccd269ae25e7a394
parent e027520a3703ef086401492a92bb47f9d6aab788
Author: Sebastian <sebasjm@gmail.com>
Date:   Thu,  3 Apr 2025 16:10:03 -0300

fix #9589

Diffstat:
Mpackages/taler-util/src/types-taler-wallet.ts | 3+++
Mpackages/taler-wallet-webextension/src/wallet/Application.tsx | 2+-
Mpackages/taler-wallet-webextension/src/wallet/DepositPage/index.ts | 2+-
Mpackages/taler-wallet-webextension/src/wallet/DepositPage/state.ts | 2+-
Mpackages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts | 3++-
Mpackages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts | 7+++++--
Mpackages/taler-wallet-webextension/src/wallet/ManageAccount/views.tsx | 44+++++++++++++++++++++++++++++++++-----------
7 files changed, 46 insertions(+), 17 deletions(-)

diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -1223,6 +1223,9 @@ export interface WalletBankAccountInfo { /** * Did we previously complete a KYC process for this bank account? + * + * @deprecated no enough information since the kyc can be completed for one exchange but not for another + * https://bugs.gnunet.org/view.php?id=9696 */ kycCompleted: boolean; diff --git a/packages/taler-wallet-webextension/src/wallet/Application.tsx b/packages/taler-wallet-webextension/src/wallet/Application.tsx @@ -298,7 +298,7 @@ export function Application(): VNode { <WalletTemplate path="balance" goToURL={redirectToURL}> <ManageAccountPage scope={s} - onAccountAdded={(account) => + onAccountSelected={(account) => redirectTo( Pages.ctaDeposit({ scope: encodeCrockForURI(stringifyScopeInfoShort(s)), diff --git a/packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts b/packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts @@ -63,7 +63,7 @@ export namespace State { status: "manage-account"; error: undefined; scope: ScopeInfo; - onAccountAdded: (paytoUri: string) => void; + onAccountSelected: (paytoUri: string) => void; onCancel: () => void; } diff --git a/packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts b/packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts @@ -87,7 +87,7 @@ export function useComponentState({ status: "manage-account", error: undefined, scope, - onAccountAdded: (p: string) => { + onAccountSelected: (p: string) => { updateAccountFromList(p); setAddingAccount(false); hook.retry(); diff --git a/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts b/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts @@ -29,7 +29,7 @@ import { ReadyView } from "./views.js"; export interface Props { scope: ScopeInfo; - onAccountAdded: (uri: string) => void; + onAccountSelected: (uri: string) => void; onCancel: () => void; } @@ -60,6 +60,7 @@ export namespace State { onCancel: ButtonHandler; accountByType: AccountByType; deleteAccount: (a: WalletBankAccountInfo) => Promise<void>; + selectAccount: (a: WalletBankAccountInfo) => Promise<void>; } } diff --git a/packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts b/packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts @@ -29,7 +29,7 @@ import { AccountByType, Props, State } from "./index.js"; export function useComponentState({ scope, - onAccountAdded, + onAccountSelected, onCancel, }: Props): State { const api = useBackendContext(); @@ -119,7 +119,7 @@ export function useComponentState({ currencies: [scope.currency], paytoUri: normalizedPayto, }); - onAccountAdded(normalizedPayto); + onAccountSelected(normalizedPayto); } const paytoUriError = found ? "that account is already present" : undefined; @@ -157,6 +157,9 @@ export function useComponentState({ setType(v); }), }, + selectAccount: async (w) => { + onAccountSelected(w.paytoUri); + }, alias: { value: label, onInput: pushAlertOnError(async (v) => { diff --git a/packages/taler-wallet-webextension/src/wallet/ManageAccount/views.tsx b/packages/taler-wallet-webextension/src/wallet/ManageAccount/views.tsx @@ -47,6 +47,7 @@ type ComponentListByAccountType = { [type in AccountType]: (props: { list: WalletBankAccountInfo[]; onDelete: (a: WalletBankAccountInfo) => Promise<void>; + onSelect: (ac: WalletBankAccountInfo) => void; }) => VNode; }; @@ -86,6 +87,7 @@ export function ReadyView({ deleteAccount, onCancel, uri, + selectAccount, }: State.Ready): VNode { const { i18n } = useTranslationContext(); @@ -169,7 +171,14 @@ export function ReadyView({ <section> {Object.entries(accountByType).map(([type, list]) => { const Table = tableComponentByAccountType[type as AccountType]; - return <Table key={type} list={list} onDelete={deleteAccount} />; + return ( + <Table + key={type} + list={list} + onDelete={deleteAccount} + onSelect={selectAccount} + /> + ); })} </section> </Fragment> @@ -178,10 +187,12 @@ export function ReadyView({ function IbanTable({ list, + onSelect, onDelete, }: { list: WalletBankAccountInfo[]; onDelete: (ac: WalletBankAccountInfo) => void; + onSelect: (ac: WalletBankAccountInfo) => void; }): VNode { const { i18n } = useTranslationContext(); if (list.length === 0) return <Fragment />; @@ -196,9 +207,9 @@ function IbanTable({ <th> <i18n.Translate>Alias</i18n.Translate> </th> - <th> + {/* <th> <i18n.Translate>Bank Id</i18n.Translate> - </th> + </th> */} <th> <i18n.Translate>Int. Account Number</i18n.Translate> </th> @@ -215,12 +226,20 @@ function IbanTable({ {list.map((account) => { const p = parsePaytoUri(account.paytoUri) as PaytoUriIBAN; return ( - <tr key={account.label}> + <tr + key={account.label} + onClick={(e) => { + onSelect(account); + }} + style={{ + cursor: "pointer", + }} + > <td>{account.label}</td> - <td>{p.bic}</td> + {/* <td>{p.bic}</td> */} <td>{p.iban}</td> <td>{p.params["receiver-name"]}</td> - <td class="kyc"> + {/* <td class="kyc"> {account.kycCompleted ? ( <SvgIcon title={i18n.str`KYC done`} @@ -234,7 +253,7 @@ function IbanTable({ color="orange" /> )} - </td> + </td> */} <td class="actions"> <Button variant="outlined" @@ -261,6 +280,7 @@ function TalerBankTable({ }: { list: WalletBankAccountInfo[]; onDelete: (ac: WalletBankAccountInfo) => void; + onSelect: (ac: WalletBankAccountInfo) => void; }): VNode { const { i18n } = useTranslationContext(); if (list.length === 0) return <Fragment />; @@ -295,7 +315,7 @@ function TalerBankTable({ <td>{account.label}</td> <td>{p.host}</td> <td>{p.account}</td> - <td class="kyc"> + {/* <td class="kyc"> {account.kycCompleted ? ( <SvgIcon title={i18n.str`KYC done`} @@ -309,7 +329,7 @@ function TalerBankTable({ color="orange" /> )} - </td> + </td> */} <td class="actions"> <Button variant="outlined" @@ -333,9 +353,11 @@ function TalerBankTable({ function BitcoinTable({ list, onDelete, + onSelect, }: { list: WalletBankAccountInfo[]; onDelete: (ac: WalletBankAccountInfo) => void; + onSelect: (ac: WalletBankAccountInfo) => void; }): VNode { const { i18n } = useTranslationContext(); if (list.length === 0) return <Fragment />; @@ -366,7 +388,7 @@ function BitcoinTable({ <tr key={account.label}> <td>{account.label}</td> <td>{p.targetPath}</td> - <td class="kyc"> + {/* <td class="kyc"> {account.kycCompleted ? ( <SvgIcon title={i18n.str`KYC done`} @@ -380,7 +402,7 @@ function BitcoinTable({ color="orange" /> )} - </td> + </td> */} <td class="actions"> <Button variant="outlined"