[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 01/69: WithdrawExchangeV
From: |
gnunet |
Subject: |
[taler-taler-ios] 01/69: WithdrawExchangeV |
Date: |
Fri, 19 Jan 2024 09:01:34 +0100 |
This is an automated email from the git hooks/post-receive script.
marc-stibane pushed a commit to branch master
in repository taler-ios.
commit 6e44b574388ad563782c193c822ee536e2954ce4
Author: Marc Stibane <marc@taler.net>
AuthorDate: Fri Dec 8 16:45:14 2023 +0100
WithdrawExchangeV
---
TalerWallet.xcodeproj/project.pbxproj | 10 ++++-
TalerWallet1/Model/Model+P2P.swift | 1 -
TalerWallet1/Model/Model+Withdraw.swift | 25 +++++++++++
TalerWallet1/Views/Sheets/URLSheet.swift | 4 +-
TalerWallet1/Views/Sheets/WithdrawExchangeV.swift | 53 +++++++++++++++++++++++
5 files changed, 88 insertions(+), 5 deletions(-)
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index 058b9b6..4f20685 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -241,6 +241,8 @@
4EEC157629F8ECBF00D46A03 /* CodeScanner in Frameworks */ = {isa
= PBXBuildFile; productRef = 4EEC157529F8ECBF00D46A03 /* CodeScanner */; };
4EEC157829F9032900D46A03 /* Sheet.swift in Sources */ = {isa =
PBXBuildFile; fileRef = 4EEC157729F9032900D46A03 /* Sheet.swift */; };
4EEC157A29F9427F00D46A03 /* QRSheet.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EEC157929F9427F00D46A03 /* QRSheet.swift */; };
+ 4EEC3A712B2285A200D05F9D /* WithdrawExchangeV.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EEC3A702B2285A200D05F9D /*
WithdrawExchangeV.swift */; };
+ 4EEC3A722B2285A200D05F9D /* WithdrawExchangeV.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EEC3A702B2285A200D05F9D /*
WithdrawExchangeV.swift */; };
4EF840A72A0B85F400EE0D47 /* CopyShare.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EF840A62A0B85F400EE0D47 /* CopyShare.swift */;
};
4EFA39602AA7946B00742548 /* ToSButtonView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EFA395F2AA7946B00742548 /* ToSButtonView.swift
*/; };
4EFA39612AA7946B00742548 /* ToSButtonView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EFA395F2AA7946B00742548 /* ToSButtonView.swift
*/; };
@@ -411,6 +413,7 @@
4EEC157229F8242800D46A03 /* QRGeneratorView.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= QRGeneratorView.swift; sourceTree = "<group>"; };
4EEC157729F9032900D46A03 /* Sheet.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= Sheet.swift; sourceTree = "<group>"; };
4EEC157929F9427F00D46A03 /* QRSheet.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= QRSheet.swift; sourceTree = "<group>"; };
+ 4EEC3A702B2285A200D05F9D /* WithdrawExchangeV.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= WithdrawExchangeV.swift; sourceTree = "<group>"; };
4EF840A62A0B85F400EE0D47 /* CopyShare.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= CopyShare.swift; sourceTree = "<group>"; };
4EFA395F2AA7946B00742548 /* ToSButtonView.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
ToSButtonView.swift; sourceTree = "<group>"; };
AB710490285995B6008B04F0 /* taler-swift */ = {isa =
PBXFileReference; lastKnownFileType = text; path = "taler-swift"; sourceTree =
SOURCE_ROOT; };
@@ -613,7 +616,7 @@
4ECB627F2A0BA6DF004ABBB7 /* Model+P2P.swift */,
4EB0954C2989CBFE0043A8A1 /* Model+Pending.swift
*/,
4EB0952C2989CBFE0043A8A1 /* Model+Payment.swift
*/,
- E37AA6292AF197E5003850CF /* Model+Refund.swift */,
+ E37AA6292AF197E5003850CF /* Model+Refund.swift
*/,
4EB095102989CBB00043A8A1 /*
Model+Settings.swift */,
4EB095322989CBFE0043A8A1 /*
Model+Transactions.swift */,
4EB0953D2989CBFE0043A8A1 /*
Model+Withdraw.swift */,
@@ -770,9 +773,10 @@
4EEC157929F9427F00D46A03 /* QRSheet.swift */,
4E753A072A0B6A5F002D9328 /* ShareSheet.swift */,
4EB095332989CBFE0043A8A1 /* URLSheet.swift */,
+ 4EEC3A702B2285A200D05F9D /*
WithdrawExchangeV.swift */,
4EB0953B2989CBFE0043A8A1 /*
WithdrawBankIntegrated */,
4EB0952A2989CBFE0043A8A1 /* Payment */,
- E37AA62C2AF19BA6003850CF /* Refund */,
+ E37AA62C2AF19BA6003850CF /* Refund */,
4E3B4BBF2A41E64000CC88B8 /* P2P_Sheets */,
);
path = Sheets;
@@ -1126,6 +1130,7 @@
4E3EAE6F2A990778009F1BE8 /* TalerStrings.swift
in Sources */,
4E3EAE702A990778009F1BE8 /*
CurrencyInputView.swift in Sources */,
4E3EAE712A990778009F1BE8 /* URL+id+iban.swift
in Sources */,
+ 4EEC3A712B2285A200D05F9D /*
WithdrawExchangeV.swift in Sources */,
4EDBDCD92AB787CB00925C02 /* CallStack.swift in
Sources */,
4E3EAE722A990778009F1BE8 /*
RequestPayment.swift in Sources */,
4E3EAE732A990778009F1BE8 /* SettingsItem.swift
in Sources */,
@@ -1233,6 +1238,7 @@
4EB0950A2989CB7C0043A8A1 /* TalerStrings.swift
in Sources */,
4EA551252A2C923600FEC9A8 /*
CurrencyInputView.swift in Sources */,
4E363CBC2A237E0900D7E98C /* URL+id+iban.swift
in Sources */,
+ 4EEC3A722B2285A200D05F9D /*
WithdrawExchangeV.swift in Sources */,
4EDBDCDA2AB787CB00925C02 /* CallStack.swift in
Sources */,
4E9320452A1645B600A87B0E /*
RequestPayment.swift in Sources */,
4EB095502989CBFE0043A8A1 /* SettingsItem.swift
in Sources */,
diff --git a/TalerWallet1/Model/Model+P2P.swift
b/TalerWallet1/Model/Model+P2P.swift
index bff8aeb..5c4d399 100644
--- a/TalerWallet1/Model/Model+P2P.swift
+++ b/TalerWallet1/Model/Model+P2P.swift
@@ -166,7 +166,6 @@ struct PreparePeerPushCreditResponse: Codable {
let amountRaw: Amount
let amountEffective: Amount
let exchangeBaseUrl: String
-// let peerPushCreditId: String
// the dialog transaction is already created in the local DB - must either
accept or delete
let transactionId: String
}
diff --git a/TalerWallet1/Model/Model+Withdraw.swift
b/TalerWallet1/Model/Model+Withdraw.swift
index 52f8355..f141c3e 100644
--- a/TalerWallet1/Model/Model+Withdraw.swift
+++ b/TalerWallet1/Model/Model+Withdraw.swift
@@ -43,6 +43,23 @@ fileprivate struct GetWithdrawalDetailsForURI:
WalletBackendFormattedRequest {
}
}
// MARK: -
+/// The result from prepareWithdrawExchange
+struct WithdrawExchangeResponse: Decodable {
+ var exchangeBaseUrl: String
+ var amount: Amount?
+}
+/// A request to get an exchange's withdrawal details.
+fileprivate struct PrepareWithdrawExchange: WalletBackendFormattedRequest {
+ typealias Response = WithdrawExchangeResponse
+ func operation() -> String { "prepareWithdrawExchange" }
+ func args() -> Args { Args(talerUri: talerUri) }
+
+ var talerUri: String
+ struct Args: Encodable {
+ var talerUri: String
+ }
+}
+// MARK: -
/// The result from getWithdrawalDetailsForAmount
struct WithdrawalAmountDetails: Decodable {
var amountRaw: Amount // Amount that the user will transfer
to the exchange
@@ -150,6 +167,14 @@ fileprivate struct AcceptManualWithdrawal:
WalletBackendFormattedRequest {
}
// MARK: -
extension WalletModel {
+ /// load withdraw-exchange details. Networking involved
+ @MainActor
+ func loadWithdrawalExchangeForUriM(_ talerUri: String) // M
for MainActor
+ async throws -> WithdrawExchangeResponse {
+ let request = PrepareWithdrawExchange(talerUri: talerUri)
+ let response = try await sendRequest(request, ASYNCDELAY)
+ return response
+ }
/// load withdrawal details. Networking involved
@MainActor
func loadWithdrawalDetailsForUriM(_ talerWithdrawUri: String)
// M for MainActor
diff --git a/TalerWallet1/Views/Sheets/URLSheet.swift
b/TalerWallet1/Views/Sheets/URLSheet.swift
index 8e38872..83dda7b 100644
--- a/TalerWallet1/Views/Sheets/URLSheet.swift
+++ b/TalerWallet1/Views/Sheets/URLSheet.swift
@@ -26,8 +26,8 @@ struct URLSheet: View {
switch urlCommand {
case .withdraw:
WithdrawURIView(stack: stack.push(), url: urlToOpen)
-// case .withdrawExchange:
-// ManualWithdraw(stack: stack.push(), url: urlToOpen,
exchange: nil, amountToTransfer: $amountToTransfer)
+ case .withdrawExchange:
+ WithdrawExchangeV(stack: stack.push(), url: urlToOpen)
case .pay:
PaymentView(stack: stack.push(), url: urlToOpen)
case .payPull:
diff --git a/TalerWallet1/Views/Sheets/WithdrawExchangeV.swift
b/TalerWallet1/Views/Sheets/WithdrawExchangeV.swift
new file mode 100644
index 0000000..463ab76
--- /dev/null
+++ b/TalerWallet1/Views/Sheets/WithdrawExchangeV.swift
@@ -0,0 +1,53 @@
+/*
+ * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * See LICENSE.md
+ */
+import SwiftUI
+import taler_swift
+import SymLog
+
+struct WithdrawExchangeV: View {
+ private let symLog = SymLogV(0)
+ let stack: CallStack
+ let navTitle = String(localized: "Checking Link")
+ var url: URL
+
+ @EnvironmentObject private var controller: Controller
+ @EnvironmentObject private var model: WalletModel
+ @State private var exchangeBaseUrl: String?
+ @State private var amountToTransfer = Amount.zero(currency: "")
+
+ var body: some View {
+#if DEBUG
+ let _ = Self._printChanges()
+ let _ = symLog.vlog() // just to get the # to compare it with
.onAppear & onDisappear
+#endif
+ Group {
+ if let exchangeBaseUrl {
+ ManualWithdraw(stack: stack.push(),
+ exchangeBaseUrl: exchangeBaseUrl,
+ amountToTransfer: $amountToTransfer)
+ } else {
+ WithdrawProgressView(message: exchangeBaseUrl?.trimURL() ??
"No exchangeBaseUrl!")
+// ContactingExchangeV(url: url, message: nil)
+ }
+ }
+ .task {
+ do { // TODO: cancelled
+ symLog.log(".task")
+ let withdrawExchange = try await
model.loadWithdrawalExchangeForUriM(url.absoluteString)
+ let baseUrl = withdrawExchange.exchangeBaseUrl
+// let exc = await model.getExchangeByUrl(url: baseUrl)
+ exchangeBaseUrl = baseUrl
+ if let amount = withdrawExchange.amount {
+ amountToTransfer = amount
+ } else {
+
+ }
+ } catch { // TODO: error
+ symLog.log(error.localizedDescription)
+ exchangeBaseUrl = nil
+ }
+ }
+ }
+}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (a123c3a -> 4167b6d), gnunet, 2024/01/19
- [taler-taler-ios] 06/69: withdraw-exchange, gnunet, 2024/01/19
- [taler-taler-ios] 01/69: WithdrawExchangeV,
gnunet <=
- [taler-taler-ios] 04/69: AccountPicker, remove exchangePaytoUris, gnunet, 2024/01/19
- [taler-taler-ios] 03/69: CurrencyInfo from Exchange, gnunet, 2024/01/19
- [taler-taler-ios] 25/69: colors adapted for WCAG AA, gnunet, 2024/01/19
- [taler-taler-ios] 05/69: ToS language, gnunet, 2024/01/19
- [taler-taler-ios] 19/69: cleanup, gnunet, 2024/01/19
- [taler-taler-ios] 02/69: LoadingView, gnunet, 2024/01/19
- [taler-taler-ios] 12/69: PRINT_CHANGES, gnunet, 2024/01/19
- [taler-taler-ios] 07/69: Haptics, gnunet, 2024/01/19
- [taler-taler-ios] 31/69: Withdraw only once, gnunet, 2024/01/19
- [taler-taler-ios] 22/69: Summary in ThreeAmountsV, gnunet, 2024/01/19