Mercurial > public > simoleon
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)) } }