Mercurial > public > simoleon
comparison Simoleon/Conversion.swift @ 24:bda6a55d027a
Add Conversion to Favourites
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Tue, 20 Jul 2021 10:24:21 +0100 |
parents | 699b5bb619db |
children | 933d9ab04374 |
comparison
equal
deleted
inserted
replaced
23:699b5bb619db | 24:bda6a55d027a |
---|---|
7 | 7 |
8 import SwiftUI | 8 import SwiftUI |
9 import Alamofire | 9 import Alamofire |
10 | 10 |
11 struct Conversion: View { | 11 struct Conversion: View { |
12 @Environment(\.managedObjectContext) private var viewContext | 12 var fetchUserSettings: Bool |
13 @FetchRequest(sortDescriptors: []) private var userSettings: FetchedResults<UserSettings> | 13 @State var currencyPair: String |
14 | 14 |
15 @State private var currencyPair = "USD/GBP" | |
16 @State private var amountToConvert = "1000" | 15 @State private var amountToConvert = "1000" |
17 @State private var price: Double = 1.00 | 16 @State private var price: Double = 1.00 |
18 @State private var showingConversion = false | 17 @State private var showingConversion = false |
19 @State private var showingCurrencySelector = false | 18 @State private var showingCurrencySelector = false |
20 @State private var isEditing = false | 19 @State private var isEditing = false |
21 | 20 |
21 @Environment(\.managedObjectContext) private var viewContext | |
22 @FetchRequest(sortDescriptors: []) private var userSettings: FetchedResults<UserSettings> | |
22 let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json") | 23 let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json") |
23 | 24 |
24 var body: some View { | 25 var body: some View { |
25 ScrollView(showsIndicators: false) { | 26 ScrollView(showsIndicators: false) { |
26 VStack(alignment: .leading) { | 27 VStack(alignment: .leading) { |
44 isEditing: $isEditing | 45 isEditing: $isEditing |
45 ) | 46 ) |
46 } | 47 } |
47 .padding() | 48 .padding() |
48 .onAppear { | 49 .onAppear { |
49 fetchUserSettings() | 50 if fetchUserSettings { |
51 fetchingUserSettings() | |
52 } | |
53 | |
50 request(currencyPair) | 54 request(currencyPair) |
51 } | 55 } |
52 .onChange(of: showingCurrencySelector, perform: { showingCurrencySelector in | 56 .onChange(of: showingCurrencySelector, perform: { showingCurrencySelector in |
53 if !showingCurrencySelector { | 57 if !showingCurrencySelector { |
54 request(currencyPair) | 58 request(currencyPair) |
67 isEditing = false | 71 isEditing = false |
68 }) | 72 }) |
69 } | 73 } |
70 } | 74 } |
71 } | 75 } |
72 .if(UIDevice.current.userInterfaceIdiom == .phone) { content in | 76 .if(UIDevice.current.userInterfaceIdiom == .phone && fetchUserSettings) { content in |
73 NavigationView { content } | 77 NavigationView { content } |
74 } | 78 } |
75 } | 79 } |
76 | 80 |
77 private func request(_ currencyPair: String) { | 81 private func request(_ currencyPair: String) { |
90 | 94 |
91 /* | 95 /* |
92 1) Fetch default currency from User Settings | 96 1) Fetch default currency from User Settings |
93 2) Change State var currencyPair | 97 2) Change State var currencyPair |
94 */ | 98 */ |
95 private func fetchUserSettings() { | 99 private func fetchingUserSettings() { |
96 if let userSettings = userSettings.first { | 100 if let userSettings = userSettings.first { |
97 self.currencyPair = userSettings.defaultCurrency ?? "USD/GBP" | 101 self.currencyPair = userSettings.defaultCurrency ?? "USD/GBP" |
98 } | 102 } |
99 } | 103 } |
100 } | 104 } |
101 | 105 |
102 | 106 |
103 struct Conversion_Previews: PreviewProvider { | 107 struct Conversion_Previews: PreviewProvider { |
104 static var previews: some View { | 108 static var previews: some View { |
105 Conversion() | 109 Conversion(fetchUserSettings: true, currencyPair: "USD/GBP") |
106 } | 110 } |
107 } | 111 } |