Mercurial > public > simoleon
changeset 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 |
files | Simoleon.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate Simoleon/ContentView.swift Simoleon/ContentViewPad.swift Simoleon/Conversion.swift Simoleon/Favourites.swift Simoleon/Helpers/Sidebar.swift Simoleon/Settings.swift |
diffstat | 7 files changed, 20 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
Binary file Simoleon.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed
--- a/Simoleon/ContentView.swift Tue Jul 20 09:54:41 2021 +0100 +++ b/Simoleon/ContentView.swift Tue Jul 20 10:24:21 2021 +0100 @@ -11,7 +11,7 @@ @State private var tab: Tab = .convert var body: some View { TabView(selection: $tab) { - Conversion() + Conversion(fetchUserSettings: true, currencyPair: "USD/GBP") .tabItem { Label("Convert", systemImage: "arrow.counterclockwise.circle") }
--- a/Simoleon/ContentViewPad.swift Tue Jul 20 09:54:41 2021 +0100 +++ b/Simoleon/ContentViewPad.swift Tue Jul 20 10:24:21 2021 +0100 @@ -11,7 +11,7 @@ var body: some View { NavigationView { Sidebar() - Conversion() + Conversion(fetchUserSettings: true, currencyPair: "USD/GBP") } } }
--- a/Simoleon/Conversion.swift Tue Jul 20 09:54:41 2021 +0100 +++ b/Simoleon/Conversion.swift Tue Jul 20 10:24:21 2021 +0100 @@ -9,16 +9,17 @@ import Alamofire struct Conversion: View { - @Environment(\.managedObjectContext) private var viewContext - @FetchRequest(sortDescriptors: []) private var userSettings: FetchedResults<UserSettings> + var fetchUserSettings: Bool + @State var currencyPair: String - @State private var currencyPair = "USD/GBP" @State private var amountToConvert = "1000" @State private var price: Double = 1.00 @State private var showingConversion = false @State private var showingCurrencySelector = false @State private var isEditing = false + @Environment(\.managedObjectContext) private var viewContext + @FetchRequest(sortDescriptors: []) private var userSettings: FetchedResults<UserSettings> let currencyMetadata: [String: CurrencyMetadataModel] = parseJson("CurrencyMetadata.json") var body: some View { @@ -46,7 +47,10 @@ } .padding() .onAppear { - fetchUserSettings() + if fetchUserSettings { + fetchingUserSettings() + } + request(currencyPair) } .onChange(of: showingCurrencySelector, perform: { showingCurrencySelector in @@ -69,7 +73,7 @@ } } } - .if(UIDevice.current.userInterfaceIdiom == .phone) { content in + .if(UIDevice.current.userInterfaceIdiom == .phone && fetchUserSettings) { content in NavigationView { content } } } @@ -92,7 +96,7 @@ 1) Fetch default currency from User Settings 2) Change State var currencyPair */ - private func fetchUserSettings() { + private func fetchingUserSettings() { if let userSettings = userSettings.first { self.currencyPair = userSettings.defaultCurrency ?? "USD/GBP" } @@ -102,6 +106,6 @@ struct Conversion_Previews: PreviewProvider { static var previews: some View { - Conversion() + Conversion(fetchUserSettings: true, currencyPair: "USD/GBP") } }
--- a/Simoleon/Favourites.swift Tue Jul 20 09:54:41 2021 +0100 +++ b/Simoleon/Favourites.swift Tue Jul 20 10:24:21 2021 +0100 @@ -17,7 +17,9 @@ var body: some View { List { ForEach(favourite) { favourite in - CurrencyRow(currencyPair: favourite.currencyPair) + NavigationLink(destination: Conversion(fetchUserSettings: false, currencyPair: favourite.currencyPair)) { + CurrencyRow(currencyPair: favourite.currencyPair) + } } .onDelete(perform: removeFromFavourites) }
--- a/Simoleon/Helpers/Sidebar.swift Tue Jul 20 09:54:41 2021 +0100 +++ b/Simoleon/Helpers/Sidebar.swift Tue Jul 20 10:24:21 2021 +0100 @@ -10,7 +10,7 @@ struct Sidebar: View { var body: some View { List { - NavigationLink(destination: Conversion()) { + NavigationLink(destination: Conversion(fetchUserSettings: true, currencyPair: "USD/GBP")) { Label("Convert", systemImage: "arrow.counterclockwise.circle") }
--- a/Simoleon/Settings.swift Tue Jul 20 09:54:41 2021 +0100 +++ b/Simoleon/Settings.swift Tue Jul 20 10:24:21 2021 +0100 @@ -21,9 +21,6 @@ Text(currencyPair) } } - .onChange(of: selectedCurrencyPair, perform: { selectedCurrencyPair in - setDefaultCurrency() - }) } Section(header: Text("Stay in touch")) { @@ -64,6 +61,9 @@ Link("Developer's Twitter", destination: URL(string: "https://twitter.com/dennisconcep")!) } } + .onChange(of: selectedCurrencyPair, perform: { selectedCurrencyPair in + setDefaultCurrency() + }) .onAppear(perform: fetchUserSettings) .listStyle(InsetGroupedListStyle()) .navigationTitle("Settings")