iap warning view

This commit is contained in:
Trey t
2022-12-21 10:19:03 -06:00
parent 340798c141
commit 49e3812659
9 changed files with 129 additions and 13 deletions

View File

@@ -19,6 +19,7 @@ public enum StoreError: Error {
class IAPManager: ObservableObject {
@Published private(set) var showIAP = false
@Published private(set) var showIAPWarning = false
@Published private(set) var subscriptions = [Product: (status: [Product.SubscriptionInfo.Status], renewalInfo: RenewalInfo)?]()
@AppStorage(UserDefaultsStore.Keys.firstLaunchDate.rawValue, store: GroupUserDefaults.groupDefaults) private var firstLaunchDate = Date()
@@ -112,6 +113,7 @@ class IAPManager: ObservableObject {
if let expireDate = expireDate {
expireOnTimer = Timer.init(fire: expireDate, interval: 0, repeats: false, block: { _ in
self.decideShowIAP()
self.decideShowIAPWarning()
})
RunLoop.main.add(expireOnTimer!, forMode: .common)
} else {
@@ -130,6 +132,7 @@ class IAPManager: ObservableObject {
await updateCustomerProductStatus()
decideShowIAP()
decideShowIAPWarning()
}
}
@@ -158,6 +161,16 @@ class IAPManager: ObservableObject {
}
}
func decideShowIAPWarning() {
DispatchQueue.main.async {
if self.currentSubscription != nil {
self.showIAPWarning = false
} else {
self.showIAPWarning = true
}
}
}
func listenForTransactions() -> Task<Void, Error> {
return Task.detached {
//Iterate through any transactions that don't come from a direct call to `purchase()`.
@@ -243,6 +256,7 @@ class IAPManager: ObservableObject {
print("purchasedSubscriptions \(purchasedSubscriptions)")
if !purchasedSubscriptions.isEmpty {
self.showIAP = false
self.showIAPWarning = false
}
for sub in purchasedSubscriptions {
@@ -280,6 +294,7 @@ class IAPManager: ObservableObject {
await transaction.finish()
decideShowIAP()
decideShowIAPWarning()
return transaction
case .userCancelled, .pending: