View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0012110 | Taler | wallet (WebExtension) | public | 2026-11-11 02:21 | 2026-11-11 02:21 |
| Reporter | bot-cg [agent] | Assigned To | Resolution deadline | ||
| Implementer | Reviewer | ||||
| Release signed by | Deployed by | ||||
| Verifier | Communicator | CM_7 | |||
| Data protection authority notification required | No | ||||
| CSIRT notification required | No | ||||
| Estimated effort (hours) | Actual effort (hours) | 0 | |||
| Fast-track | No | ||||
| Work package | none | ||||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | new | Resolution | open | ||
| Summary | 0012110: WebExtension: bank accounts learned from a withdrawal are titled with the raw payto:// URI (also pre-filled as Label when editing) (patch attached) | ||||
| Description | Bank accounts the wallet learned from a withdrawal have no label. The web wallet's Settings -> Bank accounts list then uses the raw payto URI as the account's title, e.g. "payto://x-taler-bank/bank.demo.taler.net/wc-pool-a8a089?receiver-name=wallet-compare%20pool"; the Forget dialog repeats it, and Edit pre-fills the "Label" field with it, so saving an edit stores the URI as the label. Android shows "No alias" with the account number, iOS shows "Account holder: wallet-compare pool" and the account. The web wallet's own deposit screen already names the same account "wallet-compare pool". Screenshots (all three wallets funded from the same demo-bank account): - before-web-1.png: list title = raw payto URI - before-web-2-forget-dialog.png: Forget dialog names the account by the URI - before-web-3-edit-label.png: Edit pre-fills Label with the URI - before-web-4-deposit-select.png: the deposit screen calls the same account "wallet-compare pool" - before-android-1.png, before-ios-1.png (reference) - after-web-1.png, after-web-2-forget-dialog.png: with the patch, "wallet-compare pool" Code (taler-typescript-core origin/master bf2e571a2, packages/wallet-webui/src/): - routes/ManagementRoutes.tsx:572-578: label: account.label ?? account.paytoUri - screens/BankAccountsScreen.tsx:197 (title), 242-245 (menu label), 551-553 (Forget dialog), 78 and 112 (Label pre-fill when editing) - routes/App.tsx:1485 (deposit screen): account.label ?? depositDestinationView(account.paytoUri).title - routes/deposit-model.ts:96-101: title = label || holder || account number Patch (attached, web-bank-account-readable-title.patch): BankAccountsRoute uses depositDestinationView(paytoUri, label).title for the label, i.e. the saved label, else the account holder, else the account number -- the same naming as the deposit screen. No new strings. Verification: Chrome extension build; after-web-1.png, after-web-2-forget-dialog.png. pnpm typecheck: no errors in the touched file (29 pre-existing elsewhere); prettier clean; test/screens.test 89/89 pass. Assisted by LLM | ||||
| Steps To Reproduce | 1. Withdraw from https://bank.demo.taler.net/ (the wallet remembers that bank account). 2. Settings -> Bank accounts: the account is titled with its payto:// URI. | ||||
| Tags | No tags attached. | ||||
| Attached Files | web-bank-account-readable-title.patch (1,454 bytes)
diff --git a/packages/wallet-webui/src/routes/ManagementRoutes.tsx b/packages/wallet-webui/src/routes/ManagementRoutes.tsx
index b0b452fde..e2784affe 100644
--- a/packages/wallet-webui/src/routes/ManagementRoutes.tsx
+++ b/packages/wallet-webui/src/routes/ManagementRoutes.tsx
@@ -569,13 +569,18 @@ export function BankAccountsRoute() {
const [editingId, setEditingId] = useState<string>();
const [working, setWorking] = useState(false);
const [error, setError] = useState<ErrorPresentation>();
- const accounts = query.data?.accounts.map((account) => ({
- id: account.bankAccountId,
- label: account.label ?? account.paytoUri,
- paytoUri: account.paytoUri,
- currencies: account.currencies ?? [],
- destination: depositDestinationView(account.paytoUri, account.label),
- }));
+ const accounts = query.data?.accounts.map((account) => {
+ const destination = depositDestinationView(account.paytoUri, account.label);
+ return {
+ id: account.bankAccountId,
+ // Accounts learned from a withdrawal have no label: name them like the
+ // deposit screen does (holder or account number), not by the raw URI.
+ label: destination.title,
+ paytoUri: account.paytoUri,
+ currencies: account.currencies ?? [],
+ destination,
+ };
+ });
const editing = accounts?.find((account) => account.id === editingId);
const save = async (values: BankAccountSaveValues) => {
setWorking(true);
| ||||
| related to | 0012087 | new | WebExtension: editing a saved bank account only offers the raw payto:// URI -- Android and iOS reopen the structured form (patch attached) |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-11 02:21 | bot-cg | New Issue | |
| 2026-11-11 02:21 | bot-cg | Relationship added | related to 0012087 |
| 2026-11-11 02:21 | bot-cg | File Added: before-web-1.png | |
| 2026-11-11 02:21 | bot-cg | File Added: before-web-2-forget-dialog.png | |
| 2026-11-11 02:21 | bot-cg | File Added: before-web-3-edit-label.png | |
| 2026-11-11 02:21 | bot-cg | File Added: before-web-4-deposit-select.png | |
| 2026-11-11 02:21 | bot-cg | File Added: before-android-1.png | |
| 2026-11-11 02:21 | bot-cg | File Added: before-ios-1.png | |
| 2026-11-11 02:21 | bot-cg | File Added: after-web-1.png | |
| 2026-11-11 02:21 | bot-cg | File Added: after-web-2-forget-dialog.png | |
| 2026-11-11 02:21 | bot-cg | File Added: web-bank-account-readable-title.patch |