gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-ios] 05/08: tosAccepted -> tosStatus


From: gnunet
Subject: [taler-taler-ios] 05/08: tosAccepted -> tosStatus
Date: Thu, 07 Dec 2023 00:44:22 +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 b38c0d54de538b7ae46775e77aeab0ef4c5816ae
Author: Marc Stibane <marc@taler.net>
AuthorDate: Thu Dec 7 00:14:22 2023 +0100

    tosAccepted -> tosStatus
---
 TalerWallet1/Views/Exchange/ExchangeRowView.swift  |   3 +-
 TalerWallet1/Views/Exchange/ManualWithdraw.swift   | 178 ++++++++++-----------
 .../Sheets/P2P_Sheets/P2pReceiveURIView.swift      |  12 +-
 .../WithdrawBankIntegrated/WithdrawURIView.swift   |  33 ++--
 4 files changed, 106 insertions(+), 120 deletions(-)

diff --git a/TalerWallet1/Views/Exchange/ExchangeRowView.swift 
b/TalerWallet1/Views/Exchange/ExchangeRowView.swift
index 15e9c2a..aa93dff 100644
--- a/TalerWallet1/Views/Exchange/ExchangeRowView.swift
+++ b/TalerWallet1/Views/Exchange/ExchangeRowView.swift
@@ -56,8 +56,7 @@ struct ExchangeRowView: View {
         }
         let manualWithdraw = LazyView {
             ManualWithdraw(stack: stack.push(),
-//                           url: nil,
-                        exchange: exchange,
+                 exchangeBaseUrl: baseURL,
                 amountToTransfer: $amountToTransfer)
         }
         let showToS = LazyView {
diff --git a/TalerWallet1/Views/Exchange/ManualWithdraw.swift 
b/TalerWallet1/Views/Exchange/ManualWithdraw.swift
index 0ad86f6..9cf3534 100644
--- a/TalerWallet1/Views/Exchange/ManualWithdraw.swift
+++ b/TalerWallet1/Views/Exchange/ManualWithdraw.swift
@@ -10,18 +10,15 @@ import SymLog
 struct ManualWithdraw: View {
     private let symLog = SymLogV(0)
     let stack: CallStack
-
-//    let url: URL?
-//    let exchange: Exchange?
-    let exchange: Exchange
+    let exchangeBaseUrl: String
     @Binding var amountToTransfer: Amount
 
     @EnvironmentObject private var controller: Controller
     @EnvironmentObject private var model: WalletModel
     @AppStorage("iconOnly") var iconOnly: Bool = false
 
-    @State var tosAccepted = false
-    @State var withdrawalAmountDetails: WithdrawalAmountDetails? = nil
+    @State private var withdrawalAmountDetails: WithdrawalAmountDetails? = nil
+    @State private var exchange: Exchange? = nil
 //    @State var ageMenuList: [Int] = []
 //    @State var selectedAge = 0
 
@@ -30,77 +27,84 @@ struct ManualWithdraw: View {
         let _ = Self._printChanges()
         let _ = symLog.vlog()       // just to get the # to compare it with 
.onAppear & onDisappear
 #endif
-        let currency = exchange.scopeInfo?.currency ?? exchange.currency ?? 
String(localized: "Unknown", comment: "unknown currency")
-        let currencyInfo = controller.info(for: currency, 
controller.currencyTicker)
-        let navTitle = String(localized: "NavTitle_Withdraw (currency)", 
defaultValue: "Withdraw \(currency)")
-//        let agePicker = AgePicker(ageMenuList: $ageMenuList, selectedAge: 
$selectedAge)
+      Group {
+        if let exchange {
+            let currency = exchange.scopeInfo?.currency
+                        ?? exchange.currency
+                        ?? String(localized: "Unknown", comment: "unknown 
currency")
+            let currencyInfo = controller.info(for: currency, 
controller.currencyTicker)
+            let navTitle = String(localized: "NavTitle_Withdraw (currency)", 
defaultValue: "Withdraw \(currency)")
+//          let agePicker = AgePicker(ageMenuList: $ageMenuList, selectedAge: 
$selectedAge)
 
-        let someCoins = SomeCoins(details: withdrawalAmountDetails)
-//      let restrictAge: Int? = (selectedAge == 0) ? nil
-//                                                 : selectedAge
+            let someCoins = SomeCoins(details: withdrawalAmountDetails)
+//          let restrictAge: Int? = (selectedAge == 0) ? nil
+//                                                     : selectedAge
 //  let _ = print(selectedAge, restrictAge)
-        let destination = LazyView {
-            ManualWithdrawDone(stack: stack.push(),
-                            exchange: exchange,
-                    amountToTransfer: amountToTransfer)
-//                       restrictAge: restrictAge)
-        }
-        let disabled = amountToTransfer.isZero || someCoins.invalid || 
someCoins.tooMany
-        ScrollView { VStack(alignment: .trailing) {
-            Text("via \(exchange.exchangeBaseUrl.trimURL())")
-                .multilineTextAlignment(.center)
-                .accessibilityFont(.body)
-            CurrencyInputView(amount: $amountToTransfer,
-                           available: nil,
-                               title: iconOnly ? String(localized: "Amount:")
-                                               : String(localized: "Amount to 
withdraw:"),
-                      shortcutAction: nil)
-                .padding(.top)
-            QuiteSomeCoins(someCoins: someCoins,
-                       shouldShowFee: true,           // TODO: set to false if 
we never charge withdrawal fees
-                            currency: currency,
-                        currencyInfo: currencyInfo,
-                     amountEffective: withdrawalAmountDetails?.amountEffective)
-//          agePicker
-            if tosAccepted {
-                NavigationLink(destination: destination) {
-                    Text("Confirm Withdrawal")      // VIEW_WITHDRAW_ACCEPT
+            let destination = LazyView {
+                ManualWithdrawDone(stack: stack.push(),
+                                exchange: exchange,
+                        amountToTransfer: amountToTransfer)
+//                           restrictAge: restrictAge)
+            }
+            let disabled = amountToTransfer.isZero || someCoins.invalid || 
someCoins.tooMany
+            ScrollView { VStack(alignment: .trailing) {
+                Text("via \(exchange.exchangeBaseUrl.trimURL())")
+                    .multilineTextAlignment(.center)
+                    .accessibilityFont(.body)
+                CurrencyInputView(amount: $amountToTransfer,
+                               available: nil,
+                                   title: iconOnly ? String(localized: 
"Amount:")
+                                                   : String(localized: "Amount 
to withdraw:"),
+                          shortcutAction: nil)
+                    .padding(.top)
+                QuiteSomeCoins(someCoins: someCoins,
+                           shouldShowFee: true,           // TODO: set to 
false if we never charge withdrawal fees
+                                currency: currency,
+                            currencyInfo: currencyInfo,
+                         amountEffective: 
withdrawalAmountDetails?.amountEffective)
+//              agePicker
+                if exchange.tosStatus == .accepted {
+                    NavigationLink(destination: destination) {
+                        Text("Confirm Withdrawal")      // VIEW_WITHDRAW_ACCEPT
+                    }
+                    .buttonStyle(TalerButtonStyle(type: .prominent))
+                    .disabled(disabled)
+                    .padding(.top)
+                } else {
+                    ToSButtonView(stack: stack.push(),
+                        exchangeBaseUrl: exchange.exchangeBaseUrl,
+                                 viewID: VIEW_WITHDRAW_TOS,         // TODO: 
YIKES might be withdraw-exchange
+                                    p2p: false)
+                    .padding(.top)
                 }
-                .buttonStyle(TalerButtonStyle(type: .prominent))
-                .disabled(disabled)
-                .padding(.top)
-            } else {
-                ToSButtonView(stack: stack.push(),
-                    exchangeBaseUrl: exchange.exchangeBaseUrl,
-                             viewID: VIEW_WITHDRAW_TOS,
-                                p2p: false)
-                .padding(.top)
+            } } // ScrollVStack
+            .frame(maxWidth: .infinity, alignment: .leading)
+            .padding(.horizontal)
+            
.background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all))
+            .navigationTitle(navTitle)
+            .onAppear {
+                DebugViewC.shared.setViewID(VIEW_WITHDRAWAL, stack: 
stack.push())
+                symLog.log("❗️ \(navTitle) onAppear")
             }
-        } } // ScrollVStack
-        .frame(maxWidth: .infinity, alignment: .leading)
-        .padding(.horizontal)
-        .background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all))
-        .navigationTitle(navTitle)
-        .onAppear {
-            DebugViewC.shared.setViewID(VIEW_WITHDRAWAL, stack: stack.push())
-            symLog.log("❗️ \(navTitle) onAppear")
-        }
-        .onDisappear {
-            symLog.log("❗️ \(navTitle) onDisappear")
+            .onDisappear {
+                symLog.log("❗️ \(navTitle) onDisappear")
+            }
+        } else {
+            WithdrawProgressView(message: exchangeBaseUrl.trimURL())
+                .navigationTitle("Contacting Exchange")
         }
-        .task(id: amountToTransfer.value) { // re-run this whenever 
amountToTransfer changes
+      } .task(id: amountToTransfer.value) { // re-run this whenever 
amountToTransfer changes
+          symLog.log("getExchangeByUrl(\(exchangeBaseUrl))")
             do {
-                let amount = amountToTransfer.isZero ? Amount(currency: 
currency, cent: 100)
-                                                     : amountToTransfer
-//              if amountToTransfer.isZero {
-//                  tosAccepted = GetTosStatus(exchange.exchangeBaseUrl)
-//              } else {
-                    let details = try await 
model.loadWithdrawalDetailsForAmountM(exchange.exchangeBaseUrl,
-                                                                               
   amount: amount)
-                    tosAccepted = details.tosAccepted
-                    withdrawalAmountDetails = amountToTransfer.isZero ? nil : 
details
-//                  agePicker.setAges(ages: 
withdrawalAmountDetails?.ageRestrictionOptions)
-//              }
+                if let exc = await model.getExchangeByUrl(url: 
exchangeBaseUrl) {
+                    exchange = exc
+                    if !amountToTransfer.isZero {
+                        let details = try await 
model.loadWithdrawalDetailsForAmountM(exchangeBaseUrl,
+                                                                               
       amount: amountToTransfer)
+                        withdrawalAmountDetails = details
+//                    agePicker.setAges(ages: 
withdrawalAmountDetails?.ageRestrictionOptions)
+                    }
+                }
             } catch {    // TODO: error
                 symLog.log(error.localizedDescription)
                 withdrawalAmountDetails = nil
@@ -111,33 +115,15 @@ struct ManualWithdraw: View {
 // MARK: -
 #if DEBUG
 struct ManualWithdraw_Previews: PreviewProvider {
-  struct StateContainer : View {
-    @State private var amountToTransfer = Amount(currency: LONGCURRENCY, cent: 
510)
+    struct StateContainer : View {
+        @State private var amountToTransfer = Amount(currency: LONGCURRENCY, 
cent: 510)
 
-      var body: some View {
-        let scopeInfo = ScopeInfo(type: ScopeInfo.ScopeInfoType.exchange, url: 
DEMOEXCHANGE, currency: LONGCURRENCY)
-        let exchange = Exchange(exchangeBaseUrl: DEMOEXCHANGE,
-                                       currency: LONGCURRENCY,
-                                      paytoUris: [],
-                                      tosStatus: .pending,
-                            exchangeEntryStatus: .preset,
-                           exchangeUpdateStatus: .initial,
-                          ageRestrictionOptions: [])
-        let details = WithdrawalAmountDetails(tosAccepted: false,
-                                                amountRaw: Amount(currency: 
LONGCURRENCY, cent: 510),
-                                          amountEffective: Amount(currency: 
LONGCURRENCY, cent: 500),
-                                                 numCoins: 6,
-//                                              paytoUris: [],
-                                   withdrawalAccountsList: [],
-                                    ageRestrictionOptions: [],
-                                                scopeInfo: scopeInfo)
-        ManualWithdraw(stack: CallStack("Preview"),
-//                         url: nil,
-                    exchange: exchange,
-            amountToTransfer: $amountToTransfer,
-     withdrawalAmountDetails: details)
+        var body: some View {
+            ManualWithdraw(stack: CallStack("Preview"),
+                 exchangeBaseUrl: DEMOEXCHANGE,
+                amountToTransfer: $amountToTransfer)
+        }
     }
-  }
 
     static var previews: some View {
         StateContainer()
diff --git a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pReceiveURIView.swift 
b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pReceiveURIView.swift
index 4a39eca..05da8fb 100644
--- a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pReceiveURIView.swift
+++ b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pReceiveURIView.swift
@@ -19,7 +19,8 @@ struct P2pReceiveURIView: View {
     @EnvironmentObject private var model: WalletModel
     @AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic
 
-    @State private var peerPushCreditResponse: PreparePeerPushCreditResponse?
+    @State private var peerPushCreditResponse: PreparePeerPushCreditResponse? 
= nil
+    @State private var exchange: Exchange? = nil
 
     var body: some View {
         let badURL = "Error in URL: \(url)"
@@ -41,7 +42,7 @@ struct P2pReceiveURIView: View {
                 }
                 .listStyle(myListStyle.style).anyView
                 .navigationTitle(navTitle)
-                let tosAccepted = true  // TODO: 
https://bugs.gnunet.org/view.php?id=7869
+                let tosAccepted = exchange?.tosStatus == .accepted
                 if tosAccepted {
                     NavigationLink(destination: LazyView {
                         P2pAcceptDone(stack: stack.push(),
@@ -54,7 +55,7 @@ struct P2pReceiveURIView: View {
                     .padding(.horizontal)
                 } else {
                     ToSButtonView(stack: stack.push(),
-                        exchangeBaseUrl: nil,
+                        exchangeBaseUrl: 
peerPushCreditResponse.exchangeBaseUrl,
                                  viewID: SHEET_RCV_P2P_TOS,
                                     p2p: true)
                 }
@@ -71,8 +72,9 @@ struct P2pReceiveURIView: View {
         .task {
             do { // TODO: cancelled
                 symLog.log(".task")
-                let ppCreditResponse = try await 
model.preparePeerPushCreditM(url.absoluteString)
-                peerPushCreditResponse = ppCreditResponse
+                let ppResponse = try await 
model.preparePeerPushCreditM(url.absoluteString)
+                exchange = await model.getExchangeByUrl(url: 
ppResponse.exchangeBaseUrl)
+                peerPushCreditResponse = ppResponse
             } catch {    // TODO: error
                 symLog.log(error.localizedDescription)
                 peerPushCreditResponse = nil
diff --git 
a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawURIView.swift 
b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawURIView.swift
index 56773b4..9ae8592 100644
--- a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawURIView.swift
+++ b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawURIView.swift
@@ -21,14 +21,13 @@ struct WithdrawURIView: View {
     @EnvironmentObject private var model: WalletModel
     @AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic
 
-    // the exchange used for this withdrawal.
-    @State private var exchangeBaseUrl: String? = nil
-    @State private var withdrawalAmountDetails: WithdrawalAmountDetails?
+    @State private var withdrawalAmountDetails: WithdrawalAmountDetails? = nil
+    @State private var exchange: Exchange? = nil
 
     var body: some View {
         let badURL = "Error in URL: \(url)"
         VStack {
-            if let withdrawalAmountDetails, let exchangeBaseUrl {
+            if let withdrawalAmountDetails, let exchange {
                 List {
                     let raw = withdrawalAmountDetails.amountRaw
                     let effective = withdrawalAmountDetails.amountEffective
@@ -45,7 +44,7 @@ struct WithdrawURIView: View {
                               bottomAbbrev: String(localized: "Effective:"),
                               bottomAmount: effective,
                                      large: false, pending: false, incoming: 
true,
-                                   baseURL: exchangeBaseUrl)
+                                   baseURL: exchange.exchangeBaseUrl)
                     let someCoins = SomeCoins(details: withdrawalAmountDetails)
                     QuiteSomeCoins(someCoins: someCoins,
                                shouldShowFee: true,       // TODO: set to 
false if we never charge withdrawal fees
@@ -55,11 +54,10 @@ struct WithdrawURIView: View {
                 }
                 .listStyle(myListStyle.style).anyView
                 .navigationTitle(navTitle)
-                let tosAccepted = withdrawalAmountDetails.tosAccepted
-                if tosAccepted {
+                if exchange.tosStatus == .accepted {
                     NavigationLink(destination: LazyView {
                         WithdrawAcceptDone(stack: stack.push(),
-                                 exchangeBaseUrl: exchangeBaseUrl,
+                                 exchangeBaseUrl: exchange.exchangeBaseUrl,
                                              url: url)
                     }) {
                         Text("Confirm Withdrawal")      // 
SHEET_WITHDRAW_ACCEPT
@@ -68,12 +66,12 @@ struct WithdrawURIView: View {
                     .padding(.horizontal)
                 } else {
                     ToSButtonView(stack: stack.push(),
-                        exchangeBaseUrl: exchangeBaseUrl,
+                        exchangeBaseUrl: exchange.exchangeBaseUrl,
                                  viewID: SHEET_WITHDRAW_TOS,
                                     p2p: false)
                 }
             } else {
-                // Yikes no details or no baseURL
+                // Yikes no details or no exchange
                 WithdrawProgressView(message: url.host ?? badURL)
                     .navigationTitle("Contacting Exchange")
             }
@@ -86,15 +84,16 @@ struct WithdrawURIView: View {
             do { // TODO: cancelled
                 symLog.log(".task")
                 let withdrawUriInfo = try await 
model.loadWithdrawalDetailsForUriM(url.absoluteString)
-                exchangeBaseUrl = withdrawUriInfo.defaultExchangeBaseUrl ??
-                                  
withdrawUriInfo.possibleExchanges.first?.exchangeBaseUrl
-                if let exchangeBaseUrl {
-                    let amount = withdrawUriInfo.amount
-                    let details = try await 
model.loadWithdrawalDetailsForAmountM(exchangeBaseUrl, amount: amount)
+                let amount = withdrawUriInfo.amount
+                let baseUrl = withdrawUriInfo.defaultExchangeBaseUrl
+                           ?? 
withdrawUriInfo.possibleExchanges.first?.exchangeBaseUrl
+                if let baseUrl, let exc = await model.getExchangeByUrl(url: 
baseUrl) {
+                    exchange = exc
+                    let details = try await 
model.loadWithdrawalDetailsForAmountM(baseUrl, amount: amount)
                     withdrawalAmountDetails = details
-//                  agePicker.setAges(ages: details?.ageRestrictionOptions)
+//                    agePicker.setAges(ages: details?.ageRestrictionOptions)
                 } else {    // TODO: error
-                    symLog.log("no exchangeBaseUrl")
+                    symLog.log("no exchangeBaseUrl or no exchange")
                     withdrawalAmountDetails = nil
                 }
             } catch {    // TODO: error

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]