diff Simoleon/UI/CurrencySelector.swift @ 161:3913aff613e8

Fix bug that didn't request API on symbol change
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Tue, 31 Aug 2021 10:57:34 +0100
parents 0c589138a6f3
children
line wrap: on
line diff
--- a/Simoleon/UI/CurrencySelector.swift	Sun Aug 29 19:04:34 2021 +0100
+++ b/Simoleon/UI/CurrencySelector.swift	Tue Aug 31 10:57:34 2021 +0100
@@ -8,9 +8,10 @@
 import SwiftUI
 
 struct CurrencySelector: View {
-    @ObservedObject var currencyPair: CurrencyPair
+    @ObservedObject var currencyConversion: CurrencyConversion
+    @State private var modalSelection: ModalType = .allCurrencies
     @State private var showingList = false
-    @State private var modalSelection: ModalType = .allCurrencies
+    
     let currencyPairsSupported: [String] = try! readJson(from: "CurrencyPairsSupported.json")
     
     private enum ModalType {
@@ -23,31 +24,31 @@
                 modalSelection = .allCurrencies
                 showingList = true
             }) {
-                CurrencyButton(selectedCurrency: currencyPair.baseSymbol)
+                CurrencyButton(selectedCurrency: currencyConversion.baseSymbol)
             }
             
             Button(action: {
                 modalSelection = .compatibleCurrencies
                 showingList = true
             }) {
-                CurrencyButton(selectedCurrency: currencyPair.quoteSymbol)
+                CurrencyButton(selectedCurrency: currencyConversion.quoteSymbol)
             }
         }
-        .onChange(of: currencyPair.baseSymbol) { _ in
+        .onChange(of: currencyConversion.baseSymbol) { _ in
             // If the previous quote symbol is not compatible anymore with base symbol
             // return the first symbol of the new compatible symbols list
-            let compatibleCurrencies = get(currencyType: .compatible(with: currencyPair.baseSymbol), from: currencyPairsSupported)
-            if !compatibleCurrencies.contains(currencyPair.quoteSymbol) {
-                currencyPair.quoteSymbol = compatibleCurrencies.sorted().first!
+            let compatibleCurrencies = get(currencyType: .compatible(with: currencyConversion.baseSymbol), from: currencyPairsSupported)
+            if !compatibleCurrencies.contains(currencyConversion.quoteSymbol) {
+                currencyConversion.quoteSymbol = compatibleCurrencies.sorted().first!
             }
         }
         .sheet(isPresented: $showingList) {
             if modalSelection == .allCurrencies {
                 let currencies = get(currencyType: .all, from: currencyPairsSupported)
-                CurrencyList(currencies: currencies, selectedCurrency: $currencyPair.baseSymbol)
+                CurrencyList(currencies: currencies, selection: .baseSymbol, currencyConversion: currencyConversion)
             } else {
-                let currencies = get(currencyType: .compatible(with: currencyPair.baseSymbol), from: currencyPairsSupported)
-                CurrencyList(currencies: currencies, selectedCurrency: $currencyPair.quoteSymbol)
+                let currencies = get(currencyType: .compatible(with: currencyConversion.baseSymbol), from: currencyPairsSupported)
+                CurrencyList(currencies: currencies, selection: .quoteSymbol, currencyConversion: currencyConversion)
             }
         }
     }
@@ -84,6 +85,6 @@
 
 struct CurrencySelector_Previews: PreviewProvider {
     static var previews: some View {
-        CurrencySelector(currencyPair: CurrencyPair())
+        CurrencySelector(currencyConversion: CurrencyConversion())
     }
 }