Mercurial > public > simoleon
diff Simoleon/Settings.swift @ 28:4f862c618b44
Implemented RevenueCat
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Thu, 22 Jul 2021 19:06:01 +0100 |
parents | d95582268b44 |
children | c52966834f83 |
line wrap: on
line diff
--- a/Simoleon/Settings.swift Wed Jul 21 12:36:10 2021 +0100 +++ b/Simoleon/Settings.swift Thu Jul 22 19:06:01 2021 +0100 @@ -6,20 +6,39 @@ // import SwiftUI +import Purchases struct Settings: View { + @EnvironmentObject var subscriptionController: SubscriptionController @Environment(\.managedObjectContext) private var viewContext @FetchRequest(sortDescriptors: []) private var defaultCurrency: FetchedResults<DefaultCurrency> + @State private var selectedDefaultCurrency = "" + @State private var showingSubscriptionPaywall = false + let currencyPairs: [String] = parseJson("CurrencyPairs.json") var body: some View { List { + Section(header: Text("Subscription")) { + NavigationLink("Information", destination: SubscriberInfo()) + if !subscriptionController.isActive { + Text("Subscribe") + .onTapGesture { showingSubscriptionPaywall = true } + } + } + Section(header: Text("Preferences")) { - Picker("Default currency", selection: $selectedDefaultCurrency) { - ForEach(currencyPairs.sorted(), id: \.self) { currencyPair in - Text(currencyPair) + if subscriptionController.isActive { + Picker("Default currency", selection: $selectedDefaultCurrency) { + ForEach(currencyPairs.sorted(), id: \.self) { currencyPair in + Text(currencyPair) + } } + } else { + LockedCurrencyPicker() + .contentShape(Rectangle()) + .onTapGesture { showingSubscriptionPaywall = true } } } @@ -60,15 +79,20 @@ Link("Privacy Policy", destination: URL(string: "https://dennistech.io")!) } } - .onAppear(perform: setCurrency) + .onAppear(perform: onAppear) .listStyle(InsetGroupedListStyle()) .navigationTitle("Settings") + .sheet(isPresented: $showingSubscriptionPaywall) { + Subscription(showingSubscriptionPaywall: $showingSubscriptionPaywall) + .environmentObject(subscriptionController) + } .if(UIDevice.current.userInterfaceIdiom == .phone) { content in NavigationView { content } } } - private func setCurrency() { + private func onAppear() { + // Set initial value of the picker if selectedDefaultCurrency == "" { self.selectedDefaultCurrency = defaultCurrency.first?.pair ?? "USD/GBP" } else { @@ -96,5 +120,6 @@ struct Settings_Previews: PreviewProvider { static var previews: some View { Settings() + .environmentObject(SubscriptionController()) } }