Fix billing connection error when querying purchases early in the process lifetime#1032
Merged
Conversation
tonidero
commented
May 30, 2023
| val mapOfActiveSubscriptions = | ||
| activeSubsPurchases.toMapOfGooglePurchaseWrapper(BillingClient.ProductType.SUBS) | ||
| executeRequestOnUIThread { | ||
| withConnectedClient { |
Contributor
Author
There was a problem hiding this comment.
The only change here is wrapping the existing code inside the executeRequestOnUIThread method, which already has the logic to execute the block AFTER the billing client connection has been established. We already do this in all methods that interact with the billing client, except this one.
Codecov Report
@@ Coverage Diff @@
## main #1032 +/- ##
=======================================
Coverage 85.54% 85.54%
=======================================
Files 175 175
Lines 6122 6123 +1
Branches 857 857
=======================================
+ Hits 5237 5238 +1
Misses 550 550
Partials 335 335
|
NachoSoto
approved these changes
May 30, 2023
| } | ||
|
|
||
| @Test | ||
| fun `defers query purchases if client not connected`() { |
tonidero
added a commit
that referenced
this pull request
Jun 1, 2023
**This is an automatic release.** ### New Features * Offline entitlements support (#1030) via Toni Rico (@tonidero) ### Bugfixes * Fix billing connection error when querying purchases early in the process lifetime (#1032) via Toni Rico (@tonidero) ### Performance Improvements * Perform product entitlement mapping request after more critical requests (#1017) via Toni Rico (@tonidero) ### Dependency Updates * Bump fastlane from 2.212.2 to 2.213.0 (#1024) via dependabot[bot] (@dependabot[bot]) ### Other Changes * Get offerings response from disk cache if available (#1029) via Toni Rico (@tonidero) * Improve offline entitlements logs to mention limitations of this mode (#1039) via Toni Rico (@tonidero) * Improve error message when backend returns internal error code (#1038) via Toni Rico (@tonidero) * PurchaseTester: Add new UI to configure internal proxy behavior (#1016) via Toni Rico (@tonidero) * Updated readme to include links to migration guides (#1021) via Marcos Castany (@mcastany) * Store offerings response in SharedPreferences (#1028) via Toni Rico (@tonidero) * Refactor offerings code out of Purchases (#1027) via Toni Rico (@tonidero) --------- Co-authored-by: revenuecat-ops <ops@revenuecat.com> Co-authored-by: Toni Rico <antonio.rico.diez@revenuecat.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
With the addition of offline entitlements, we query active purchases early in the process lifetime. This sometimes resulted in the billing client connection not being established at that point in time and not calculating offline entitlements (returning an error).
This PR fixes those errors by making the queryPurchases method execute AFTER the billing client connection has been established. We already do this in all other methods that interact with the billing client except this one, so it seemed like a bug.