diff Simoleon/Helpers/ConversionBox.swift @ 21:c3dda63f50ed v1.1

Added Core Data and UI changes - Implement Watchlist - Change conversion design - Improve UX
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Mon, 19 Jul 2021 19:27:12 +0100
parents 94fd7ac93060
children a8d76aa51da2
line wrap: on
line diff
--- a/Simoleon/Helpers/ConversionBox.swift	Mon Jul 19 10:12:23 2021 +0100
+++ b/Simoleon/Helpers/ConversionBox.swift	Mon Jul 19 19:27:12 2021 +0100
@@ -6,44 +6,47 @@
 //
 
 import SwiftUI
-import Introspect
 
 struct ConversionBox: View {
-    @Binding var mainCurrency: String
-    @Binding var secondaryCurrency: String
+    @Binding var currencyPair: String
     @Binding var amountToConvert: String
     @Binding var price: Double
     @Binding var showingConversion: Bool
     @Binding var showingCurrencySelector: Bool
-    @Binding var currencyPairNotFound: Bool
-    
-    @State private var showingCancelationButton = false
+    @Binding var isEditing: Bool
     
     let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json")
     
     var body: some View {
         VStack(alignment: .leading) {
-            Text("\(currencyMetadata[mainCurrency]!.name) (\(mainCurrency))")
+            let currencies = currencyPair.split(separator: "/")
+            Text("\(currencyMetadata[String(currencies[0])]!.name) (\(String(currencies[0])))")
                 .font(.callout)
                 .fontWeight(.semibold)
                 .padding(.top, 40)
             
             ZStack(alignment: .trailing) {
-                TextField("Enter amount", text: $amountToConvert)
-                    .keyboardType(.decimalPad)
-                    .font(Font.title.weight(.semibold))
-                    .lineLimit(1)
-                    .padding(.bottom, 10)
-                    .introspectTextField { textField in
-                        if !showingCurrencySelector {
-                            textField.becomeFirstResponder()
-                        }
-                    }
+                TextField("Enter amount", text: $amountToConvert) { startedEditing in
+                if startedEditing {
+                         withAnimation {
+                            isEditing = true
+                         }
+                     }
+                }
+                onCommit: {
+                     withAnimation {
+                        isEditing = false
+                     }
+                 }
+                .keyboardType(.decimalPad)
+                .font(Font.title.weight(.semibold))
+                .lineLimit(1)
+                .padding(.bottom, 10)
             }
             
             Divider()
             
-            Text("\(currencyMetadata[secondaryCurrency]!.name) (\(secondaryCurrency))")
+            Text("\(currencyMetadata[String(currencies[1])]!.name) (\(String(currencies[1])))")
                 .font(.callout)
                 .fontWeight(.semibold)
                 .padding(.top, 10)
@@ -54,13 +57,8 @@
                     .lineLimit(1)
                     .padding(.top, 5)
             } else {
-                if currencyPairNotFound {
-                    Text("The currency pair selected is not supported yet 😢")
-                        .padding(.top, 5)
-                } else {
-                    ProgressView()
-                        .padding(.top, 5)
-                }
+                ProgressView()
+                    .padding(.top, 5)
             }
         }
     }
@@ -80,6 +78,6 @@
 
 struct ConversionBox_Previews: PreviewProvider {
     static var previews: some View {
-        ConversionBox(mainCurrency: .constant("USD"), secondaryCurrency: .constant("GBP"), amountToConvert: .constant("1000"), price: .constant(1), showingConversion: .constant(true), showingCurrencySelector: .constant(false), currencyPairNotFound: .constant(false))
+        ConversionBox(currencyPair: .constant("USD/GBP"), amountToConvert: .constant("1000"), price: .constant(1), showingConversion: .constant(false), showingCurrencySelector: .constant(false), isEditing: .constant(false))
     }
 }