Mercurial > public > simoleon
annotate Simoleon/UI/ConversionBox.swift @ 156:84137052813d
Refactor code
author | Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com> |
---|---|
date | Sat, 28 Aug 2021 11:15:25 +0100 |
parents | |
children | 0c589138a6f3 |
rev | line source |
---|---|
156
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 //// |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 //// ConversionBox.swift |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 //// Simoleon |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 //// |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 //// Created by Dennis Concepción Martín on 18/07/2021. |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 //// |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 //import SwiftUI |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 //struct ConversionBox: View { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 // var currencyDetails: CurrencyDetailsModel |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 // @State var currencyPair: CurrencyPairModel |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 // var body: some View { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 // VStack(alignment: .leading) { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 // Text("\(baseName) (\(currencyPair.baseSymbol))") |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 // .font(.callout) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 // .fontWeight(.semibold) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 // .padding(.top, 40) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 // ZStack(alignment: .trailing) { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 // TextField("Enter amount", text: $amount) { startedEditing in |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 // if startedEditing { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 // withAnimation { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 // amountIsEditing = true |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 // onCommit: { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 // withAnimation { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 // amountIsEditing = false |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 // .keyboardType(.decimalPad) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 // .font(Font.title.weight(.semibold)) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 // .lineLimit(1) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 // .accessibilityIdentifier("ConversionTextField") |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 // Divider() |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 // let quoteName = currencyDetails[currencyPair.quoteSymbol]!.name |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 // Text("\(quoteName) (\(currencyPair.quoteSymbol))") |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 // .font(.callout) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 // .fontWeight(.semibold) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 // .padding(.top, 10) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 // if showingConversion { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 // Text("\(makeConversion(), specifier: "%.2f")") |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 // .font(Font.title.weight(.semibold)) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 // .lineLimit(1) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 // .padding(.top, 5) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 // } else { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 // ProgressView() |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 // .padding(.top, 5) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
56 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
57 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
58 // .onAppear(perform: request) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
59 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
60 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
61 // /* |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
62 // if the amount can be converted to Double: |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
63 // * Return amount |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
64 // else: |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
65 // * Return zero |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
66 // */ |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
67 // func makeConversion() -> Double { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
68 // if let amountToConvert = Double(amount) { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
69 // return amountToConvert * price // Conversion |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
70 // } else { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
71 // return 0 |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
72 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
73 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
74 //} |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
75 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
76 // |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
77 //struct ConversionBox_Previews: PreviewProvider { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
78 // static var previews: some View { |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
79 // let fileController = File() |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
80 // let currencyDetails: [String: CurrencyDetailsModel] = try! fileController.read(json: "CurrencyDetails.json") |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
81 // ConversionBox(currencyPair: CurrencyPair(), currencyDetails: currencyDetails) |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
82 // } |
84137052813d
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
83 //} |