From 2ca10b6d1c8446a6225f043a345438ce6c25668b Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 5 Nov 2026 19:27:34 +0100 Subject: [PATCH] iOS: do not flicker Cancel into Authorize later while loading The bottom slot of Authorize at Bank renders a tappable "Cancel" for the dummy placeholder transaction, which becomes "Authorize later" (or "Done") roughly 95 ms later in the same place and at the same size. Both branches already ran dismissTop, so the two buttons never differed in what they did -- only in what they said. Hide the placeholder so the slot keeps its height without offering a target before the transaction is known. Assisted by LLM --- .../WithdrawBankIntegrated/WithdrawAcceptDone.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift index 2b325ee2..90a98b5e 100755 --- a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift +++ b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift @@ -69,9 +69,18 @@ struct WithdrawAcceptDone: View { .buttonStyle(TalerButtonStyle(type: shouldConfirm ? .bordered : .prominent)) .padding(.horizontal) } else { + // A dummy transaction is the placeholder shown while + // the real one loads. Offering "Cancel" here puts a + // tappable control in the slot that becomes + // "Authorize later" some 95 ms later, in the same + // place and at the same size -- a label flicker under + // the user's finger. Both ran dismissTop, so nothing + // is lost by holding the space without offering a + // target until the transaction is known. Button("Cancel") { dismissTop(stack.push()) } .buttonStyle(TalerButtonStyle(type: .bordered)) .padding(.horizontal) + .hidden() } } } else { -- 2.47.3