Mercurial > public > simoleon
annotate Simoleon/Helpers/RestoreButton.swift @ 28:4f862c618b44
Implemented RevenueCat
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Thu, 22 Jul 2021 19:06:01 +0100 |
parents | |
children | c52966834f83 |
rev | line source |
---|---|
28
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // RestoreButton.swift |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // Simoleon |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 22/07/2021. |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import SwiftUI |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 import Purchases |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 struct RestoreButton: View { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 @Binding var showingSubscriptionPaywall: Bool |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 @EnvironmentObject var subscriptionController: SubscriptionController |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 @State private var restoringPurchases = false |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 @State private var alertTitle = "" |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 @State private var alertMessage = "" |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 @State private var showingAlert = false |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 var body: some View { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 Button(action: restorePurchases) { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 if restoringPurchases { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 ProgressView() |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 } else { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 Text("Restore purchases") |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 .alert(isPresented: $showingAlert) { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok"))) |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 private func restorePurchases() { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 restoringPurchases = true |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 Purchases.shared.restoreTransactions { purchaserInfo, error in |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 if purchaserInfo?.entitlements["all"]?.isActive == true { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 subscriptionController.isActive = true |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 showingSubscriptionPaywall = false |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 } else { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 alertTitle = "No subscriptions found" |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 alertMessage = "You are not subscripted to Simoleon yet." |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 restoringPurchases = false |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 showingAlert = true |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 if let error = error as NSError? { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 alertTitle = error.localizedDescription |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 alertMessage = error.localizedFailureReason ?? "If the problem persists send an email to dmartin@dennistech.io" |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 showingAlert = true |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
56 struct RestoreButton_Previews: PreviewProvider { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
57 static var previews: some View { |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
58 RestoreButton(showingSubscriptionPaywall: .constant(true)) |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
59 } |
4f862c618b44
Implemented RevenueCat
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
60 } |