annotate GeoQuiz/BuyPremiumModalView.swift @ 30:eb23effeede7

add DatasetView
author Dennis C. M. <dennis@denniscm.com>
date Thu, 10 Nov 2022 11:51:52 +0100
parents 425078c01194
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // BuyPremiumModalView.swift
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 9/10/22.
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct BuyPremiumModalView: View {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
11 @ObservedObject var storeController: StoreController
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
12
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13 @Environment(\.dismiss) var dismiss
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 var body: some View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
16 NavigationStack {
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
17 ZStack {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
18 ScrollView(showsIndicators: false) {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
19 VStack(alignment: .center, spacing: 20) {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
20 VStack(spacing: 20) {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
21 Text("Unlock all games 🤩")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
22 .font(.largeTitle.bold())
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
23
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
24 Text("Unlock three more game modes to become a geography master and support the future development of GeoQuiz.")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
25 .foregroundColor(.secondary)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
26 .multilineTextAlignment(.center)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
27 .frame(maxWidth: 400)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
28 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
29 .padding()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
30
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
31 ScrollView(.horizontal, showsIndicators: false) {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
32 HStack(spacing: 20) {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
33 Group {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
34 Image("GuessTheCapital")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
35 .resizable()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
36
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
37 Image("GuessTheCountry")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
38 .resizable()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
39
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
40 Image("GuessThePopulation")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
41 .resizable()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
42 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
43 .scaledToFit()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
44 .cornerRadius(25)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
45 .frame(height: 500)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
46 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
47 .padding()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
48 }
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
50 VStack(spacing: 10) {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
51 Text("A one-time payment.")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
52 .font(.title)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
53 .fontWeight(.semibold)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
54
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
55 Text("No subscriptions.")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
56 .font(.title2)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
57 .fontWeight(.semibold)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
58 .foregroundColor(.secondary)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
59
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
60 VStack {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
61 if let package = storeController.offerings?.current?.lifetime {
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
62 Button {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
63 storeController.buy(package)
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
64 } label: {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
65 Text("Buy for \(package.storeProduct.localizedPriceString)")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
66 .font(.headline)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
67 .padding()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
68 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
69 .buttonStyle(.borderedProminent)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
70 .padding(.top)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
71 } else {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
72 ProgressView()
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
73 }
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 }
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
75
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
76 Button("Restore purchases", action: storeController.restorePurchase)
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
77 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
78 .padding()
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
79
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
80 VStack {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
81 Text("GeoQuiz is an indie game")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
82 Text("I appreciate your support ❤️")
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
83 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
84 .font(.callout)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
85 .foregroundColor(.secondary)
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
86 .padding()
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
87 }
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
88 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
89
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
90 if storeController.showingActivityAlert {
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
91 ActivityAlert()
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
92 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
93 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
94 .navigationBarTitleDisplayMode(.inline)
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
95 .onAppear(perform: storeController.fetchOfferings)
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
96 .toolbar {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
97 ToolbarItem(placement: .cancellationAction) {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
98 Button {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
99 dismiss()
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
100 } label: {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
101 Label("Exit", systemImage: "multiply")
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
102 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
103 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
104 }
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
105 }
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
106 .disabled(storeController.showingActivityAlert)
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
107 .interactiveDismissDisabled(storeController.showingActivityAlert)
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
108
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
109 .alert(storeController.errorAlertTitle, isPresented: $storeController.showingErrorAlert) {
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
110 Button("OK", role: .cancel) { }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
111 } message: {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
112 Text(storeController.errorAlertMessage)
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
113 }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
114
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
115 .alert("GeoQuiz Premium is active!", isPresented: $storeController.showingSuccessAlert) {
13
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
116 Button("OK", role: .cancel) { dismiss() }
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
117 } message: {
bdfff35dd43c implement RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents: 12
diff changeset
118 Text("Thanks for supporting indie apps ❤️")
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
119 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
120 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
121 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
122
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
123 struct BuyPremiumModalView_Previews: PreviewProvider {
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
124 static var previews: some View {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
125 BuyPremiumModalView(storeController: StoreController())
11
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
126 }
039b26a99a48 implementing RevenueCat
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
127 }