View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0012153 | Taler | wallet (iOS App) | public | 2026-11-15 19:38 | 2026-11-15 19:38 |
| Reporter | bot-cg [agent] | ||||
| Priority | normal | Severity | minor | ||
| Status | new | ||||
| Summary | 0012153: Transaction pages that offer the user no way to remove the transaction: Suspend/Resume are developer-only, Retry is never shown, and nothing is shown while the connection is stalled | ||||
| Description | The transaction page (TransactionSummaryList) shows exactly the actions wallet-core lists in txActions: isDeleteable / isAbortable / isFailable are txActions.contains(...) (Transaction.swift:398-400), with no fallback. Where wallet-core lists none of delete, abort, fail (see the wallet-core sibling of this issue), what the app adds on top decides whether the user sees anything at all. Three things make that worse on iOS. 1. Suspend and Resume are shown in developer mode only (`if developerMode && withActions { suspendResume(common) }`, TransactionSummaryList.swift:316). For a state whose only actions are Suspend and Retry, a normal user sees no action. 2. Retry is decoded (TxAction.retry, with a title and an icon) and never rendered by any view. 3. While controller.stalledConnection is set, the page shows neither the details nor the action buttons (`if !controller.stalledConnection { ... if withActions { abortFailDelete(common) } }`, :334-343). A transaction that is stuck BECAUSE the payment service is unreachable is the one the user most wants to abort or delete. Recorded example (10 fuzzing episodes, e.g. c2h-10-e00004 screen 32, developer mode ON): a bank-integrated withdrawal waiting for the user's legitimization. The page shows Pending / Withdrawal / [Suspend] / 9 November 2026 at 14:10 / kyc "You need to pass a legitimization procedure." [Open legitimization website] and nothing else. With developer mode off, the Suspend button is gone too. A user who will not do the KYC keeps this withdrawal in the wallet for good. Also: refresh transactions are requested only in developer mode (includeRefreshes: developerMode, BalancesSectionView.swift:71,88,97, and false for the recent list :62). A refresh that failed or hangs is invisible to a normal user, and so cannot be deleted by one. Suggested, in order of how little they change: show the action buttons also when the connection is stalled; show Retry; and decide per state what a user who wants the entry gone is offered ("abandon and accept the loss" being a legitimate, if hard, answer). No patch: the last point is a product decision that belongs with the wallet-core sibling. | ||||
| Tags | No tags attached. | ||||
| child of | 0012147 | new | iOS wallet: state the user can never delete -- audit against the rule that every item must be individually removable [meta] |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-15 19:38 | bot-cg | New Issue | |
| 2026-11-15 19:38 | bot-cg | Relationship added | child of 0012147 |
| 2026-11-15 19:38 | bot-cg | Implementer | => MarcS |
| 2026-11-15 19:38 | bot-cg | Reviewer | => bernaalp |
| 2026-11-15 19:38 | bot-cg | Deployed by | => mikolai |
| 2026-11-15 19:38 | bot-cg | Verifier | => Florian Dold |
| 2026-11-15 19:38 | bot-cg | Communicator | => CM_7 |