summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Stibane <marc@taler.net>2023-12-07 00:11:42 +0100
committerMarc Stibane <marc@taler.net>2023-12-07 00:11:42 +0100
commite306950a195eaa278a43f03c7f0ca3f890c329d3 (patch)
tree3811dbddc89705c9a3b0266d8d71ea91cc526e7a
parentc4533fd6de6d7edf03163f58f5d55207b0aeb4d8 (diff)
downloadtaler-ios-e306950a195eaa278a43f03c7f0ca3f890c329d3.tar.gz
taler-ios-e306950a195eaa278a43f03c7f0ca3f890c329d3.tar.bz2
taler-ios-e306950a195eaa278a43f03c7f0ca3f890c329d3.zip
getExchangeByUrl
-rw-r--r--TalerWallet1/Model/Model+Exchange.swift28
-rw-r--r--TalerWallet1/Model/Model+P2P.swift2
-rw-r--r--TalerWallet1/Model/Model+Withdraw.swift2
3 files changed, 31 insertions, 1 deletions
diff --git a/TalerWallet1/Model/Model+Exchange.swift b/TalerWallet1/Model/Model+Exchange.swift
index 46aeb6c..4764116 100644
--- a/TalerWallet1/Model/Model+Exchange.swift
+++ b/TalerWallet1/Model/Model+Exchange.swift
@@ -93,6 +93,19 @@ fileprivate struct ListExchanges: WalletBackendFormattedRequest {
}
}
+/// A request to get info for one exchange.
+fileprivate struct GetExchangeByUrl: WalletBackendFormattedRequest {
+ typealias Response = Exchange
+ func operation() -> String { "getExchangeEntryByUrl" }
+ func args() -> Args { Args(exchangeBaseUrl: exchangeBaseUrl) }
+
+ var exchangeBaseUrl: String
+
+ struct Args: Encodable {
+ var exchangeBaseUrl: String
+ }
+}
+
/// A request to update a single exchange.
fileprivate struct UpdateExchange: WalletBackendFormattedRequest {
struct Response: Decodable {} // no result - getting no error back means success
@@ -158,8 +171,21 @@ extension WalletModel {
}
/// add a new exchange with URL to the wallet's list of known exchanges
+ func getExchangeByUrl(url: String)
+ async -> Exchange? {
+ do {
+ let request = GetExchangeByUrl(exchangeBaseUrl: url)
+ logger.info("query for exchange: \(url, privacy: .public)")
+ let response = try await sendRequest(request)
+ return response
+ } catch {
+ return nil
+ }
+ }
+
+ /// add a new exchange with URL to the wallet's list of known exchanges
func addExchange(url: String)
- async throws {
+ async throws {
let request = AddExchange(exchangeBaseUrl: url)
logger.info("adding exchange: \(url, privacy: .public)")
_ = try await sendRequest(request)
diff --git a/TalerWallet1/Model/Model+P2P.swift b/TalerWallet1/Model/Model+P2P.swift
index 8a0d003..bff8aeb 100644
--- a/TalerWallet1/Model/Model+P2P.swift
+++ b/TalerWallet1/Model/Model+P2P.swift
@@ -165,6 +165,8 @@ struct PreparePeerPushCreditResponse: Codable {
let contractTerms: PeerContractTerms
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 8563df4..8bd558c 100644
--- a/TalerWallet1/Model/Model+Withdraw.swift
+++ b/TalerWallet1/Model/Model+Withdraw.swift
@@ -18,8 +18,10 @@ struct AccountRestriction: Decodable {
var human_hint_i18n: String?
}
struct WithdrawalExchangeAccountDetails: Decodable {
+ var bankName: String?
var paytoUri: String
var transferAmount: Amount
+ var currencySpecification: CurrencySpecification?
var creditRestrictions: [AccountRestriction]?
}
// MARK: -