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")