diff --git a/TalerWallet1/Views/Sheets/URLSheet.swift b/TalerWallet1/Views/Sheets/URLSheet.swift index 634207ec..91c97cba 100644 --- a/TalerWallet1/Views/Sheets/URLSheet.swift +++ b/TalerWallet1/Views/Sheets/URLSheet.swift @@ -25,6 +25,7 @@ struct URLSheet: View { @State private var summary = EMPTYSTRING @State private var urlCommand: UrlCommand? @State private var passedURL: URL? + @State private var exchangeURL: URL? // consumed (set to nil) by ExchangeListView init(_ stack: CallStack, selectedBalance: Balance? = nil, urlToOpen: Binding? = nil, @@ -44,6 +45,7 @@ struct URLSheet: View { } else if let sheetURL { (urlCommand, passedURL) = controller.urlCommand(sheetURL, stack: stack.push()) } + exchangeURL = passedURL } var body: some View { @@ -54,7 +56,9 @@ struct URLSheet: View { if let urlCommand, let passedURL { switch urlCommand { case .addExchange: // TODO: just check the ToS - ExchangeListView(stack: stack.push(), url: $passedURL) + // not $passedURL: ExchangeListView clears its binding once it has read the URL, + // which would drop this sheet back to "Scanning..." for ever + ExchangeListView(stack: stack.push(), url: $exchangeURL) case .withdraw: WithdrawUriScan(stack: stack.push(), url: passedURL) case .withdrawExchange: