-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use SK2 RenewalInfo to get renewal prices & currency #4608
Merged
Merged
Changes from 15 commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
1f608ee
use renewalInfo to get renewal prices
fire-at-will 4d0342f
build on non-iOS platforms
fire-at-will 1fc7513
compiler checks for iOS <=17
fire-at-will b8aaec4
this should do the trick
fire-at-will c6e7d9f
remove unused currencyCode
fire-at-will 78d03c5
add watchOS OS checks
fire-at-will 3aeb44f
add extra watchOSApplicationExtension available check
fire-at-will b15755d
a few more checks
fire-at-will d26883d
refactor to modularize code
fire-at-will 31501b9
try this
fire-at-will 9c452eb
add all platforms
fire-at-will 0725da8
move requirements to concrete type too
fire-at-will a3a26a7
push OS requirements up the call stack
fire-at-will 524bd07
remove unnecessary checks
fire-at-will 52479a1
remove watchOSApplicationExtension checks
fire-at-will 4154ddf
add tests
fire-at-will a2dcd7a
compiler check fix
fire-at-will 5635d08
get currencyCode from renewalInfo
fire-at-will 38264d5
remove extra check
fire-at-will 61c699d
update currentPrice string
fire-at-will 73ee192
Update RevenueCatUI/CustomerCenter/Data/PurchaseInformation.swift
fire-at-will 716f6a4
Update RevenueCatUI/CustomerCenter/Data/PurchaseInformation.swift
fire-at-will 2445eb1
typo fix
fire-at-will File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
48 changes: 48 additions & 0 deletions
48
RevenueCatUI/CustomerCenter/Utilities/CustomerCenterStoreKitUtilities.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
// | ||
// Copyright RevenueCat Inc. All Rights Reserved. | ||
// | ||
// Licensed under the MIT License (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// https://opensource.org/licenses/MIT | ||
// | ||
// CustomerCenterStoreKitUtilities.swift | ||
// | ||
// Created by Will Taylor on 12/18/24. | ||
|
||
import Foundation | ||
import StoreKit | ||
|
||
import RevenueCat | ||
|
||
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, visionOS 1.0, *) | ||
class CustomerCenterStoreKitUtilities: CustomerCenterStoreKitUtilitiesType { | ||
|
||
func renewalInfo( | ||
for product: RevenueCat.StoreProduct | ||
) async -> Product.SubscriptionInfo.RenewalInfo? { | ||
guard let statuses = try? await product.sk2Product?.subscription?.status, !statuses.isEmpty else { | ||
// If StoreKit.Product.subscription is nil, then the product isn't a subscription | ||
// If statuses is empty, the subscriber was never subscribed to a product in the subscription group. | ||
return nil | ||
} | ||
|
||
guard let purchaseSubscriptionStatus = statuses.first(where: { | ||
do { | ||
return try $0.transaction.payloadValue.ownershipType == .purchased | ||
} catch { | ||
return false | ||
} | ||
}) else { | ||
return nil | ||
} | ||
|
||
switch purchaseSubscriptionStatus.renewalInfo { | ||
case .unverified: | ||
return nil | ||
case .verified(let renewalInfo): | ||
return renewalInfo | ||
} | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
RevenueCatUI/CustomerCenter/Utilities/CustomerCenterStoreKitUtilitiesType.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
// | ||
// Copyright RevenueCat Inc. All Rights Reserved. | ||
// | ||
// Licensed under the MIT License (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// https://opensource.org/licenses/MIT | ||
// | ||
// CustomerCenterStoreKitUtilitiesType.swift | ||
// | ||
// Created by Will Taylor on 12/18/24. | ||
|
||
import Foundation | ||
import StoreKit | ||
|
||
import RevenueCat | ||
|
||
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, visionOS 1.0, *) | ||
protocol CustomerCenterStoreKitUtilitiesType { | ||
|
||
func renewalInfo(for product: StoreProduct) async -> StoreKit.Product.SubscriptionInfo.RenewalInfo? | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fall back to our old calculation method if the RenewalInfo method failed for some reason