diff Simoleon/SettingsView.swift @ 156:84137052813d

Refactor code
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Sat, 28 Aug 2021 11:15:25 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Simoleon/SettingsView.swift	Sat Aug 28 11:15:25 2021 +0100
@@ -0,0 +1,174 @@
+////
+////  SettingsView.swift
+////  Simoleon
+////
+////  Created by Dennis Concepción Martín on 19/07/2021.
+////
+//
+//import SwiftUI
+//import Purchases
+//
+//struct SettingsView: View {
+//    @Environment(\.managedObjectContext) private var viewContext
+//    @FetchRequest(sortDescriptors: []) private var defaultCurrency: FetchedResults<DefaultCurrency>
+//    @State private var selectedDefaultCurrency = ""
+//    @State private var showingSubscriptionPaywall = false
+//    @State private var entitlementIsActive = false
+//    @State private var alertTitle = ""
+//    @State private var alertMessage = ""
+//    @State private var showingAlert = false
+//    @State private var searchCurrency = ""
+//    let file = File()
+//    
+//    /*
+//     If searched currency string is empty:
+//     * Show all currencies
+//     else:
+//     * Show filtered list of currencies containing searched currency string
+//     */
+//    var searchResults: [String] {
+//        let currencyPairsSupported: [String] = try! file.read(json: "CurrencyPairsSupported.json")
+//        if searchCurrency.isEmpty {
+//            return currencyPairsSupported.sorted()
+//        } else {
+//            return currencyPairsSupported.filter { $0.contains(searchCurrency.uppercased()) }
+//        }
+//    }
+//    
+//    var body: some View {
+//        List {
+//            Section(header: Text("Preferences")) {
+//                if entitlementIsActive {
+//                    Picker("Default currency", selection: $selectedDefaultCurrency) {
+//                        SearchBar(placeholder: "Search...", text: $searchCurrency)
+//                            .padding(5)
+//                        
+//                        ForEach(searchResults, id: \.self) { currencyPairsSupported in
+//                            Text(currencyPairsSupported)
+//                                .tag(currencyPairsSupported)
+//                        }
+//                    }
+//                } else {
+//                    LockedCurrencyPicker()
+//                        .contentShape(Rectangle())
+//                        .onTapGesture { showingSubscriptionPaywall = true }
+//                }
+//            }
+//            
+//            Section(header: Text("Stay in touch")) {
+//                Link(destination: URL(string: "https://itunes.apple.com/app/id1576390953?action=write-review")!) {
+//                    HStack {
+//                        Image(systemName: "heart.fill")
+//                            .foregroundColor(Color(.systemRed))
+//                            .imageScale(.large)
+//
+//                        Text("Rate Simoleon")
+//                    }
+//                }
+//                
+//                Link(destination: URL(string: "https://twitter.com/dennisconcep")!) {
+//                    HStack {
+//                        Image("TwitterLogo")
+//                            .resizable()
+//                            .frame(width: 30, height: 30)
+//                        
+//                        Text("Developer's Twitter")
+//                    }
+//                }
+//                
+//                Link(destination: URL(string: "https://dennistech.io/contact")!) {
+//                    HStack {
+//                        Image(systemName: "envelope.fill")
+//                            .foregroundColor(Color(.systemIndigo))
+//                            .imageScale(.large)
+//                        
+//                        Text("Contact")
+//                    }
+//                }
+//            }
+//            
+//            Section(header: Text("About")) {
+//                Link(destination: URL(string: "https://dennistech.io")!) {
+//                    Text("Website")
+//                }
+//                
+//                Link(destination: URL(string: "https://dennistech.io/simoleon-privacy-policy")!) {
+//                    Text("Privacy Policy")
+//                }
+//                
+//                Link(destination: URL(string: "https://dennistech.io/simoleon-terms-of-use")!) {
+//                    Text("Terms of Use")
+//                }
+//            }
+//        }
+//        .alert(isPresented: $showingAlert) {
+//            Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok")))
+//        }
+//        .onAppear {
+//            checkEntitlement()
+//            /*
+//             if selectedDefaultCurrency is empty:
+//             * View is appearing for the first time
+//             * Set initial default curency for picker
+//             else:
+//             * View is appearing after user selected another default currency
+//             * Save it to core data
+//             */
+////            if selectedDefaultCurrency == "" {
+////                selectedDefaultCurrency = defaultCurrency.first?.pair ?? "USD/GBP"
+////            } else {
+////                setCoreData()
+////            }
+//        }
+//        .listStyle(InsetGroupedListStyle())
+//        .navigationTitle("Settings")
+//        .sheet(isPresented: $showingSubscriptionPaywall, onDismiss: checkEntitlement) {
+//            SubscriptionPaywall(showingSubscriptionPaywall: $showingSubscriptionPaywall)
+//        }
+//        .if(UIDevice.current.userInterfaceIdiom == .phone) { content in
+//            NavigationView { content }
+//        }
+//    }
+//     
+//    // Save default currency to core data
+////    private func setCoreData() {
+////        if defaultCurrency.isEmpty {  // If it's empty -> add record
+////            let defaultCurrency = DefaultCurrency(context: viewContext)
+////            defaultCurrency.pair = selectedDefaultCurrency
+////            
+////            do {
+////                try viewContext.save()
+////            } catch {
+////                print(error.localizedDescription)
+////            }
+////        } else {  // If not, update record
+////            defaultCurrency.first?.pair = selectedDefaultCurrency
+////            try? viewContext.save()
+////        }
+////    }
+//    
+//    // Check if user subscription is active
+//    private func checkEntitlement() {
+//        #if SCREENSHOTS
+//        entitlementIsActive = true
+//        #else
+//        Purchases.shared.purchaserInfo { (purchaserInfo, error) in
+//            if purchaserInfo?.entitlements["all"]?.isActive == true {
+//                entitlementIsActive = true
+//            }
+//            
+//            if let error = error as NSError? {
+//                alertTitle = error.localizedDescription
+//                alertMessage = error.localizedFailureReason ?? ""
+//                showingAlert = true
+//            }
+//        }
+//        #endif
+//    }
+//}
+//
+//struct SettingsView_Previews: PreviewProvider {
+//    static var previews: some View {
+//        SettingsView()
+//    }
+//}