commit f5d91579a485d153f3c717b1a2778448cd25066e
parent d60c6d1c1666cbf7b2cef454f35869c838113890
Author: Marc Stibane <marc@taler.net>
Date: Mon, 25 Nov 2024 20:49:14 +0100
KnownBankAccounts
Diffstat:
1 file changed, 72 insertions(+), 0 deletions(-)
diff --git a/TalerWallet1/Model/Model+Deposit.swift b/TalerWallet1/Model/Model+Deposit.swift
@@ -164,3 +164,75 @@ extension WalletModel {
return response
}
}
+// MARK: -
+struct KnownBankAccountsInfo: Decodable, Hashable {
+ var paytoUri: String
+ var kycCompleted: Bool
+ var currencies: [String]
+ var alias: String?
+}
+struct KnownBankAccounts: Decodable, Hashable {
+ var accounts: [KnownBankAccountsInfo]
+}
+/// A request to list know bank accounts.
+fileprivate struct ListKnownBankAccounts: WalletBackendFormattedRequest {
+ typealias Response = KnownBankAccounts
+ func operation() -> String { "listKnownBankAccounts" }
+ func args() -> Args { Args(currency: currency) }
+ var currency: String?
+ struct Args: Encodable {
+ var currency: String?
+ }
+}
+extension WalletModel {
+ /// ask for known accounts. No networking
+ nonisolated func listKnownBankAccounts(_ currency: String? = nil, viewHandles: Bool = false)
+ async throws -> [KnownBankAccountsInfo] {
+ let request = ListKnownBankAccounts(currency: currency)
+ let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
+ return response.accounts
+ }
+}
+
+/// A request to add a known bank account.
+fileprivate struct AddKnownBankAccount: WalletBackendFormattedRequest {
+ struct Response: Decodable {} // no result - getting no error back means success
+ func operation() -> String { "addKnownBankAccount" }
+ func args() -> Args { Args(paytoUri: uri, alias: alias, replacePaytoUri: replaceUri) }
+ var uri: String
+ var alias: String
+ var replaceUri: String?
+ struct Args: Encodable {
+ var paytoUri: String // bank account that should be added
+ var alias: String // Human-readable alias / label
+ var currencies: [String]? // currencies supported by the bank (if known)
+ var replacePaytoUri: String? // account that this new account should replace
+ }
+}
+extension WalletModel {
+ /// add (or update) a known account. No networking
+ nonisolated func addKnownBankAccount(_ uri: String, alias: String, replaceUri: String? = nil, viewHandles: Bool = false)
+ async throws {
+ let request = AddKnownBankAccount(uri: uri, alias: alias, replaceUri: replaceUri)
+ _ = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
+ }
+}
+
+/// A request to forget a known bank account.
+fileprivate struct ForgetKnownBankAccount: WalletBackendFormattedRequest {
+ struct Response: Decodable {} // no result - getting no error back means success
+ func operation() -> String { "forgetKnownBankAccount" }
+ func args() -> Args { Args(paytoUri: uri) }
+ var uri: String
+ struct Args: Encodable {
+ var paytoUri: String // bank account that should be forgotten
+ }
+}
+extension WalletModel {
+ /// add a known account. No networking
+ nonisolated func forgetKnownBankAccount(_ uri: String, viewHandles: Bool = false)
+ async throws {
+ let request = ForgetKnownBankAccount(uri: uri)
+ _ = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
+ }
+}