commit 2f2f820ed0dded72a110c4f9c315ad554801a2c3
parent eb07572d543644af5c17d59deefe7658ddbf2adb
Author: Marc Stibane <marc@taler.net>
Date: Wed, 20 Nov 2024 07:26:50 +0100
cleanup
Diffstat:
11 files changed, 72 insertions(+), 80 deletions(-)
diff --git a/TalerWallet1/Backend/WalletBackendRequest.swift b/TalerWallet1/Backend/WalletBackendRequest.swift
@@ -32,9 +32,9 @@ struct ScopeInfo: Codable, Hashable {
case madeUp // => type unknown, currency name taken from amount
}
var type: ScopeInfoType
+ var currency: String // 3-char ISO 4217 code for global currency. Regional MUST be >= 4 letters
var noFees: Bool? // only for "global". Regional have this field per Exchange
var url: String? // only for "exchange" and "auditor"
- var currency: String // 3-char ISO 4217 code for global currency. Regional MUST be >= 4 letters
public static func zero() -> ScopeInfo {
ScopeInfo(type: .madeUp, currency: UNKNOWN)
diff --git a/TalerWallet1/Controllers/Controller.swift b/TalerWallet1/Controllers/Controller.swift
@@ -228,8 +228,8 @@ class Controller: ObservableObject {
}
@MainActor
- func getInfo(from exchangeBaseUrl: String, model: WalletModel) async throws -> CurrencyInfo? {
- let exchange = try await model.getExchangeByUrl(url: exchangeBaseUrl)
+ func getInfo(from baseUrl: String, model: WalletModel) async throws -> CurrencyInfo? {
+ let exchange = try await model.getExchangeByUrl(url: baseUrl)
let scope = exchange.scopeInfo
if let info = info(for: scope) {
return info
diff --git a/TalerWallet1/Model/Model+Deposit.swift b/TalerWallet1/Model/Model+Deposit.swift
@@ -102,10 +102,10 @@ struct CheckDepositResponse: Codable {
/// A request to get an exchange's deposit contract terms.
fileprivate struct CheckDeposit: WalletBackendFormattedRequest {
typealias Response = CheckDepositResponse
- func operation() -> String { "prepareDeposit" } // checkDeposit
- func args() -> Args { Args(depositPaytoUri: depositPaytoUri, amount: amount,
+ func operation() -> String { "checkDeposit" }
+ func args() -> Args { Args(depositPaytoUri: depositPaytoUri,
+ amount: amount,
clientCancellationId: "cancel") }
-
var depositPaytoUri: String
var amount: Amount
struct Args: Encodable {
@@ -114,6 +114,15 @@ fileprivate struct CheckDeposit: WalletBackendFormattedRequest {
var clientCancellationId: String?
}
}
+extension WalletModel {
+ /// check fees for deposit. No Networking
+ nonisolated func checkDeposit4711(_ depositPaytoUri: String, amount: Amount, viewHandles: Bool = false)
+ async throws -> CheckDepositResponse {
+ let request = CheckDeposit(depositPaytoUri: depositPaytoUri, amount: amount)
+ let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
+ return response
+ }
+}
// MARK: -
struct DepositGroupResult: Decodable {
var depositGroupId: String
@@ -123,8 +132,8 @@ struct DepositGroupResult: Decodable {
fileprivate struct CreateDepositGroup: WalletBackendFormattedRequest {
typealias Response = DepositGroupResult
func operation() -> String { "createDepositGroup" }
- func args() -> Args { Args(depositPaytoUri: depositPaytoUri, amount: amount) }
-
+ func args() -> Args { Args(depositPaytoUri: depositPaytoUri,
+ amount: amount) }
var depositPaytoUri: String
var amount: Amount
struct Args: Encodable {
@@ -132,21 +141,12 @@ fileprivate struct CreateDepositGroup: WalletBackendFormattedRequest {
var amount: Amount
}
}
-// MARK: -
extension WalletModel {
- /// check fees for deposit. No Networking
- nonisolated func checkDeposit(_ depositPaytoUri: String, amount: Amount, viewHandles: Bool = false)
- async throws -> CheckDepositResponse {
- let request = CheckDeposit(depositPaytoUri: depositPaytoUri, amount: amount)
- let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
- return response
- }
-
/// deposit coins. Networking involved
nonisolated func createDepositGroup(_ depositPaytoUri: String, amount: Amount, viewHandles: Bool = false)
async throws -> DepositGroupResult {
- let request = CreateDepositGroup(depositPaytoUri: depositPaytoUri, amount: amount)
- let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
- return response
+ let request = CreateDepositGroup(depositPaytoUri: depositPaytoUri, amount: amount)
+ let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
+ return response
}
}
diff --git a/TalerWallet1/Model/Model+P2P.swift b/TalerWallet1/Model/Model+P2P.swift
@@ -87,14 +87,11 @@ struct InitiatePeerPushDebitResponse: Codable {
fileprivate struct InitiatePeerPushDebit: WalletBackendFormattedRequest {
typealias Response = InitiatePeerPushDebitResponse
func operation() -> String { "initiatePeerPushDebit" }
- func args() -> Args { Args(//exchangeBaseUrl: baseURL,
- restrictScope: scope,
- partialContractTerms: terms) }
+ func args() -> Args { Args(restrictScope: scope,
+ partialContractTerms: terms) }
var scope: ScopeInfo
-// var baseURL: String?
var terms: PeerContractTerms
struct Args: Encodable {
-// var exchangeBaseUrl: String?
var restrictScope: ScopeInfo
var partialContractTerms: PeerContractTerms
}
@@ -121,10 +118,10 @@ struct CheckPeerPullCreditResponse: Codable {
fileprivate struct CheckPeerPullCredit: WalletBackendFormattedRequest {
typealias Response = CheckPeerPullCreditResponse
func operation() -> String { "checkPeerPullCredit" }
- func args() -> Args { Args(amount: amount, restrictScope: scope,
- exchangeBaseUrl: scope?.url,
- clientCancellationId: "cancel") }
-
+ func args() -> Args { Args(amount: amount,
+ restrictScope: scope,
+ exchangeBaseUrl: scope?.url,
+ clientCancellationId: "cancel") }
var amount: Amount
var scope: ScopeInfo?
struct Args: Encodable {
@@ -155,7 +152,6 @@ fileprivate struct InitiatePeerPullCredit: WalletBackendFormattedRequest {
func operation() -> String { "initiatePeerPullCredit" }
func args() -> Args { Args(exchangeBaseUrl: exchangeBaseUrl,
partialContractTerms: partialContractTerms) }
-
var exchangeBaseUrl: String?
var partialContractTerms: PeerContractTerms
struct Args: Encodable {
diff --git a/TalerWallet1/Model/Model+Withdraw.swift b/TalerWallet1/Model/Model+Withdraw.swift
@@ -68,9 +68,9 @@ struct WithdrawUriInfoResponse: Decodable {
fileprivate struct GetWithdrawalDetailsForURI: WalletBackendFormattedRequest {
typealias Response = WithdrawUriInfoResponse
func operation() -> String { "getWithdrawalDetailsForUri" }
- func args() -> Args { Args(talerWithdrawUri: talerWithdrawUri) }
+ func args() -> Args { Args(talerWithdrawUri: talerUri) }
- var talerWithdrawUri: String
+ var talerUri: String
struct Args: Encodable {
var talerWithdrawUri: String
}
@@ -141,9 +141,10 @@ struct ExchangeTermsOfService: Decodable {
fileprivate struct GetExchangeTermsOfService: WalletBackendFormattedRequest {
typealias Response = ExchangeTermsOfService
func operation() -> String { "getExchangeTos" }
- func args() -> Args { Args(exchangeBaseUrl: exchangeBaseUrl, acceptedFormat: acceptedFormat, acceptLanguage: acceptLanguage) }
-
- var exchangeBaseUrl: String
+ func args() -> Args { Args(exchangeBaseUrl: baseUrl,
+ acceptedFormat: acceptedFormat,
+ acceptLanguage: acceptLanguage) }
+ var baseUrl: String
var acceptedFormat: [String]?
var acceptLanguage: String?
struct Args: Encodable {
@@ -156,9 +157,9 @@ fileprivate struct GetExchangeTermsOfService: WalletBackendFormattedRequest {
fileprivate struct SetExchangeTOSAccepted: WalletBackendFormattedRequest {
struct Response: Decodable {} // no result - getting no error back means success
func operation() -> String { "setExchangeTosAccepted" }
- func args() -> Args { Args(exchangeBaseUrl: exchangeBaseUrl, etag: etag) }
+ func args() -> Args { Args(exchangeBaseUrl: baseUrl, etag: etag) }
- var exchangeBaseUrl: String
+ var baseUrl: String
var etag: String
struct Args: Encodable {
@@ -176,10 +177,10 @@ struct AcceptWithdrawalResponse: Decodable {
fileprivate struct AcceptBankIntegratedWithdrawal: WalletBackendFormattedRequest {
typealias Response = AcceptWithdrawalResponse
func operation() -> String { "acceptBankIntegratedWithdrawal" }
- func args() -> Args { Args(talerWithdrawUri: talerWithdrawUri, exchangeBaseUrl: exchangeBaseUrl, amount: amount, restrictAge: restrictAge) }
+ func args() -> Args { Args(talerWithdrawUri: talerUri, exchangeBaseUrl: baseUrl, amount: amount, restrictAge: restrictAge) }
- var talerWithdrawUri: String
- var exchangeBaseUrl: String
+ var talerUri: String
+ var baseUrl: String
var amount: Amount?
var restrictAge: Int?
@@ -248,7 +249,7 @@ extension WalletModel {
nonisolated func getWithdrawalDetailsForUri(_ talerUri: String,
viewHandles: Bool = false)
async throws -> WithdrawUriInfoResponse {
- let request = GetWithdrawalDetailsForURI(talerWithdrawUri: talerUri)
+ let request = GetWithdrawalDetailsForURI(talerUri: talerUri)
let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
return response
}
@@ -263,35 +264,35 @@ extension WalletModel {
return response
}
- nonisolated func loadExchangeTermsOfService(_ exchangeBaseUrl: String,
- acceptedFormat: [String],
- acceptLanguage: String,
- viewHandles: Bool = false)
+ nonisolated func loadExchangeTermsOfService(_ baseUrl: String,
+ acceptedFormat: [String],
+ acceptLanguage: String,
+ viewHandles: Bool = false)
async throws -> ExchangeTermsOfService {
- let request = GetExchangeTermsOfService(exchangeBaseUrl: exchangeBaseUrl,
- acceptedFormat: acceptedFormat,
- acceptLanguage: acceptLanguage)
+ let request = GetExchangeTermsOfService(baseUrl: baseUrl,
+ acceptedFormat: acceptedFormat,
+ acceptLanguage: acceptLanguage)
let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
return response
}
- nonisolated func setExchangeTOSAccepted(_ exchangeBaseUrl: String,
- etag: String,
- viewHandles: Bool = false)
+ nonisolated func setExchangeTOSAccepted(_ baseUrl: String,
+ etag: String,
+ viewHandles: Bool = false)
async throws -> Decodable {
- let request = SetExchangeTOSAccepted(exchangeBaseUrl: exchangeBaseUrl, etag: etag)
+ let request = SetExchangeTOSAccepted(baseUrl: baseUrl, etag: etag)
let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
return response
}
- nonisolated func acceptBankIntWithdrawal(_ exchangeBaseUrl: String,
- withdrawURL: String,
- amount: Amount?,
- restrictAge: Int?,
- viewHandles: Bool = false)
+ nonisolated func acceptBankIntWithdrawal(_ baseUrl: String,
+ withdrawURL: String,
+ amount: Amount?,
+ restrictAge: Int?,
+ viewHandles: Bool = false)
async throws -> AcceptWithdrawalResponse? {
- let request = AcceptBankIntegratedWithdrawal(talerWithdrawUri: withdrawURL, exchangeBaseUrl: exchangeBaseUrl,
- amount: amount, restrictAge: restrictAge)
+ let request = AcceptBankIntegratedWithdrawal(talerUri: withdrawURL, baseUrl: baseUrl,
+ amount: amount, restrictAge: restrictAge)
let response = try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles)
return response
}
diff --git a/TalerWallet1/Model/WalletModel.swift b/TalerWallet1/Model/WalletModel.swift
@@ -215,11 +215,11 @@ fileprivate struct InitRequest: WalletBackendFormattedRequest {
}
extension WalletModel {
- /// initalize Wallet-Core. Will do networking
+ /// initalize Wallet-Core. Might do networking
func initWalletCoreT(setTesting: Bool, viewHandles: Bool = false) async throws -> VersionInfo {
// T for any Thread
let dbPath = try dbPath()
- logger.debug("dbPath: \(dbPath)")
+// logger.debug("dbPath: \(dbPath)")
let request = InitRequest(persistentStoragePath: dbPath, setTesting: setTesting)
let response = try await sendRequest(request, 0, viewHandles: viewHandles) // no Delay
return response.versionInfo
diff --git a/TalerWallet1/Views/Actions/Banking/DepositAmountV.swift b/TalerWallet1/Views/Actions/Banking/DepositAmountV.swift
@@ -48,12 +48,13 @@ struct DepositAmountV: View {
@MainActor
private func newBalance() async {
+ // runs whenever the user changes the exchange via ScopePicker, or on new currencyInfo
symLog.log("❗️ task \(balanceIndex)")
if let balance {
- let scopeInfo = balance.scopeInfo
- amountToTransfer.setCurrency(scopeInfo.currency)
+ let scope = balance.scopeInfo
+ amountToTransfer.setCurrency(scope.currency)
do {
- amountAvailable = try await model.getMaxDepositAmount(scopeInfo)
+ amountAvailable = try await model.getMaxDepositAmount(scope)
} catch {
// TODO: Error
amountAvailable = balance.available
@@ -73,7 +74,7 @@ struct DepositAmountV: View {
let scrollView = ScrollView {
if count > 0 {
ScopePicker(value: $balanceIndex,
- onlyNonZero: true)
+ onlyNonZero: true) // can only send what exists
{ index in
balanceIndex = index
balance = controller.balances[index]
diff --git a/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift b/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift
@@ -24,6 +24,7 @@ struct RequestPayment: View {
@State private var currencyInfo: CurrencyInfo = CurrencyInfo.zero(UNKNOWN)
@State private var amountToTransfer = Amount.zero(currency: EMPTYSTRING) // Update currency when used
+ @MainActor
private func viewDidLoad() async {
if let selectedBalance {
balance = selectedBalance
@@ -33,6 +34,7 @@ struct RequestPayment: View {
balance = (controller.balances.count > 0) ? controller.balances[0] : nil
}
}
+
private func navTitle(_ currency: String, _ condition: Bool = false) -> String {
condition ? String(localized: "NavTitle_Request_Currency)",
defaultValue: "Request \(currency)",
diff --git a/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift b/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift
@@ -28,6 +28,7 @@ struct SendAmountV: View {
@MainActor
private func viewDidLoad() async {
+ let balances = controller.balances
if let selectedBalance {
if selectedBalance.available.isZero {
// find another balance
@@ -39,10 +40,10 @@ struct SendAmountV: View {
balance = Balance.firstNonZero(controller.balances)
}
if let balance {
- balanceIndex = controller.balances.firstIndex(of: balance) ?? 0
+ balanceIndex = balances.firstIndex(of: balance) ?? 0
} else {
balanceIndex = 0
- balance = (controller.balances.count > 0) ? controller.balances[0] : nil
+ balance = (balances.count > 0) ? balances[0] : nil
}
}
@@ -75,7 +76,8 @@ struct SendAmountV: View {
let _ = symLog.log("count = \(count)")
let scrollView = ScrollView {
if count > 0 {
- ScopePicker(value: $balanceIndex, onlyNonZero: true) // can only send what exists
+ ScopePicker(value: $balanceIndex,
+ onlyNonZero: true) // can only send what exists
{ index in
balanceIndex = index
balance = controller.balances[index]
@@ -90,20 +92,13 @@ struct SendAmountV: View {
amountToTransfer: $amountToTransfer,
amountAvailable: $amountAvailable,
summary: $summary)
- } else { // no balance - Yikes
+ } else { // TODO: Error no balance - Yikes
Text("No balance. There seems to be a problem with the database...")
}
} // ScrollView
.navigationTitle(navTitle)
.frame(maxWidth: .infinity, alignment: .leading)
.background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all))
-// .onAppear {
-// DebugViewC.shared.setViewID(VIEW_P2P_SEND, stack: stack.push())
-// symLog.log("❗️ \(navTitle) onAppear")
-// }
-// .onDisappear {
-// symLog.log("❗️ \(navTitle) onDisappear")
-// }
.task { await viewDidLoad() }
.task(id: balanceIndex + (1000 * controller.currencyTicker)) { await newBalance() }
diff --git a/TalerWallet1/Views/Balances/BalancesPendingRowV.swift b/TalerWallet1/Views/Balances/BalancesPendingRowV.swift
@@ -86,7 +86,7 @@ fileprivate struct BalancesPendingRowV_Previews: PreviewProvider {
var body: some View {
let flags: [BalanceFlag] = [.incomingConfirmation]
- let scopeInfo = ScopeInfo(type: ScopeInfo.ScopeInfoType.exchange, url: DEMOEXCHANGE, currency: DEMOCURRENCY)
+ let scopeInfo = ScopeInfo(type: ScopeInfo.ScopeInfoType.exchange, currency: DEMOCURRENCY, url: DEMOEXCHANGE)
let balance = Balance(scopeInfo: scopeInfo,
available: Amount(currency: DEMOCURRENCY, cent:1000),
pendingIncoming: Amount(currency: DEMOCURRENCY, cent: 555),
diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift b/TalerWallet1/Views/Transactions/TransactionRowView.swift
@@ -149,9 +149,6 @@ struct TransactionRowView: View {
if topString != nil { centerTop }
HStack(spacing: -4) {
Spacer(minLength: 2)
-#if DEBUG
- .border(green)
-#endif
amountV
#if DEBUG
.border(green)