commit fcd76d6d71fd261dea51a1487250ba3049d903ca
parent 5eb9e9225c85dba6222f24224bce6ffa85eb85ce
Author: Marc Stibane <marc@taler.net>
Date: Mon, 18 Nov 2024 15:54:35 +0100
addGlobalCurrency
Diffstat:
1 file changed, 43 insertions(+), 0 deletions(-)
diff --git a/TalerWallet1/Model/Model+Exchange.swift b/TalerWallet1/Model/Model+Exchange.swift
@@ -170,6 +170,37 @@ fileprivate struct GetCurrencySpecification: WalletBackendFormattedRequest {
let currencySpecification: CurrencySpecification
}
}
+/// A request to make a currency "global"
+fileprivate struct AddGlobalCurrency: WalletBackendFormattedRequest {
+ func operation() -> String { "addGlobalCurrencyExchange" }
+ func args() -> Args { Args(currency: currency,
+ exchangeBaseUrl: baseUrl,
+ exchangeMasterPub: masterPub) }
+ var currency: String
+ var baseUrl: String
+ var masterPub: String
+ struct Args: Encodable {
+ var currency: String
+ var exchangeBaseUrl: String
+ var exchangeMasterPub: String
+ }
+ struct Response: Decodable {} // no result - getting no error back means success
+}
+fileprivate struct RmvGlobalCurrency: WalletBackendFormattedRequest {
+ func operation() -> String { "removeGlobalCurrencyExchange" }
+ func args() -> Args { Args(currency: currency,
+ exchangeBaseUrl: baseUrl,
+ exchangeMasterPub: masterPub) }
+ var currency: String
+ var baseUrl: String
+ var masterPub: String
+ struct Args: Encodable {
+ var currency: String
+ var exchangeBaseUrl: String
+ var exchangeMasterPub: String
+ }
+ struct Response: Decodable {} // no result - getting no error back means success
+}
// MARK: -
extension WalletModel {
/// ask wallet-core for its list of known exchanges
@@ -229,4 +260,16 @@ extension WalletModel {
formatter: CurrencyFormatter.formatter(currency: scope.currency,
specs: response.currencySpecification))
}
+
+ nonisolated func addGlobalCurrencyExchange(currency: String, baseUrl: String, masterPub: String, viewHandles: Bool = false)
+ async throws {
+ let request = AddGlobalCurrency(currency: currency, baseUrl: baseUrl, masterPub: masterPub)
+ _ = try await sendRequest(request, viewHandles: viewHandles)
+ }
+
+ nonisolated func rmvGlobalCurrencyExchange(currency: String, baseUrl: String, masterPub: String, viewHandles: Bool = false)
+ async throws {
+ let request = RmvGlobalCurrency(currency: currency, baseUrl: baseUrl, masterPub: masterPub)
+ _ = try await sendRequest(request, viewHandles: viewHandles)
+ }
}