View Issue Details

IDProjectCategoryView StatusLast Update
0012149Talerwallet (iOS App)public2026-11-15 19:38
Reporterbot-cg [agent]  
PrioritynormalSeverityminor 
Status new 
Summary0012149: Deleting a transaction from its page ends on "Internal core error" (7052 transaction not found): the list row asks for the transaction just deleted (patch attached)
DescriptionDeleting a completed payment works, and the user is then shown an error for
it.

Steps (no fault injected; first seen in fuzz campaign c2h-29, episode 39, then
reproduced by a scenario):
 1. Pay an order. Open the payment from "Recent transactions".
 2. Scroll down, "Delete from history", confirm (delete-confirmation.jpg).
 3. The page closes, and "Internal core error -- 7052 -- transaction
    txn:payment:... not found" comes up (delete-shows-internal-core-error.jpg).

From the app log:

    27.965 deleteTransaction{txn:payment:8K60...}
    27.982 handleStateTransition: Deleted: txn:payment:8K60...
    27.991 switching from 22 to 11 BalancesListView.swift:72
    27.993 getTransactionById{txn:payment:8K60..., includeContractTerms:true}
    27.994 ... error: { "code": 7052, "hint": "transaction ... not found" }

Cause. Back on Balances the row of the deleted payment is still on screen for
a moment, until the list has reloaded. TransactionRowView.viewDidLoad()
fetches the full transaction for payments to get the merchant's logo:

    if let fullTx = try? await model.getTransactionById(txId, includeContractTerms: true) {

The `try?` shows the failure is meant to be ignored, but sendRequest() reports
every error to the user unless the caller passes viewHandles: true. (A log
line in TransactionSummaryList.loadTransaction() confirmed the request does
not come from the detail page.)

Patch (delete-transaction-7052.diff): pass viewHandles: true for this
cosmetic lookup. Built and run: the same scenario now returns to Balances
with no error.

The same pattern -- `try?` around a request that still raises the error sheet
-- is used in other places, so other "harmless" lookups can surface as
Internal core error in the same way.
TagsNo tags attached.
Attached Files
delete-confirmation.jpg (31,986 bytes)   
delete-confirmation.jpg (31,986 bytes)   
delete-transaction-7052.diff (1,198 bytes)   
diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift b/TalerWallet1/Views/Transactions/TransactionRowView.swift
index b48c306b..265f70c6 100755
--- a/TalerWallet1/Views/Transactions/TransactionRowView.swift
+++ b/TalerWallet1/Views/Transactions/TransactionRowView.swift
@@ -362,7 +362,10 @@ struct TransactionRowView: View {
             let txId = transaction.id
             if merchantLogo == nil {
                 symLog.log("loading merchantLogo for \(txId)")
-                if let fullTx = try? await model.getTransactionById(txId, includeContractTerms: true) {
+                // viewHandles: this is a cosmetic lookup and its failure is already ignored (`try?`).
+                // Without it, a row that is still on screen for a moment after its transaction
+                // was deleted asked for that transaction and put up "Internal core error" (7052).
+                if let fullTx = try? await model.getTransactionById(txId, includeContractTerms: true, viewHandles: true) {
                     if let logo = merchantLogo(talerTx: fullTx) {
                         symLog("found terms.merchant.logo for \(txId)")
                         merchantLogo = logo
delete-transaction-7052.diff (1,198 bytes)   

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

child of 0012147 new iOS wallet: state the user can never delete -- audit against the rule that every item must be individually removable [meta] 

Activities

Issue History

Date ModifiedUsernameFieldChange
2026-11-15 19:38bot-cgNew Issue
2026-11-15 19:38bot-cgRelationship addedchild of 0012147
2026-11-15 19:38bot-cgImplementer => MarcS
2026-11-15 19:38bot-cgReviewer => bernaalp
2026-11-15 19:38bot-cgDeployed by => mikolai
2026-11-15 19:38bot-cgVerifier => Florian Dold
2026-11-15 19:38bot-cgCommunicator => CM_7
2026-11-15 19:38bot-cgFile Added: delete-confirmation.jpg
2026-11-15 19:38bot-cgFile Added: delete-shows-internal-core-error.jpg
2026-11-15 19:38bot-cgFile Added: delete-transaction-7052.diff