-
Notifications
You must be signed in to change notification settings - Fork 316
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
Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value) #1828
Merged
joshdholtz
merged 4 commits into
main
from
delegate-set-log-before-sending-customer-info
Aug 15, 2022
Merged
Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value) #1828
joshdholtz
merged 4 commits into
main
from
delegate-set-log-before-sending-customer-info
Aug 15, 2022
Conversation
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
joshdholtz
changed the title
Log delegate set before sending custoemr info
Directly send delegate customer info when delegate is set
Aug 15, 2022
joshdholtz
changed the title
Directly send delegate customer info when delegate is set
Directly send delegate customer info when delegate is set (always get initial CustomerInfo value)
Aug 15, 2022
joshdholtz
changed the title
Directly send delegate customer info when delegate is set (always get initial CustomerInfo value)
Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value)
Aug 15, 2022
aboedo
approved these changes
Aug 15, 2022
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.
talked about it on a call, the fix is solid.
We should:
- write a ticket to make a failing test (Josh will open that ticket up)
- clean up a little bit, adding comments to explain why we're doing this force-update when setting the delegate
@aboedo Updated with new method comments! Do you mind taking another look to make sure they make sense? 😇 |
aboedo
approved these changes
Aug 15, 2022
joshdholtz
added a commit
that referenced
this pull request
Aug 15, 2022
…ds cached CustomerInfo value) (#1828) * Log delegate set before sending custoemr info * Force call delegate with customer info when being set * Committed wrong file * Moved to own method and added comments
Closed
This makes sense. I agree with @aboedo that a failing test would be nice. |
NachoSoto
added a commit
that referenced
this pull request
Aug 15, 2022
…s being sent Fixes [CSDK-399]. Follow up to #1828. Also changed the implementation to remove the `DispatchQueue.async` which wasn't necessary. I think it's reasonable to send the call on the same thread that the `delegate` was set.
Tests: #1830 |
NachoSoto
added a commit
that referenced
this pull request
Aug 15, 2022
…s being sent (#1830) Fixes [CSDK-399]. Follow up to #1828. Also changed the implementation to remove the `DispatchQueue.async` which wasn't necessary. I think it's reasonable to send the call on the same thread that the `delegate` was set. [CSDK-399]: https://revenuecats.atlassian.net/browse/CSDK-399?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
Merged
NachoSoto
added a commit
that referenced
this pull request
Aug 19, 2022
### Bugfixes * `ErrorResponse`: don't add attribute errors to message if empty (#1844) via NachoSoto (@NachoSoto) * Purchase cancellations: unify behavior between SK1 and SK2 (#1841) via NachoSoto (@NachoSoto) * StoreKit 2: `PurchasesOrchestrator`: don't log "purchased product" if it was cancelled (#1840) via NachoSoto (@NachoSoto) * `Backend`: fixed potential race conditions introduced by `OperationDispatcher.dispatchOnWorkerThread(withRandomDelay:)` (#1827) via NachoSoto (@NachoSoto) * `DeviceCache`: `Sendable` conformance and fixed thread-safety (#1823) via NachoSoto (@NachoSoto) * Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value) (#1828) via Josh Holtz (@joshdholtz) * `SystemInfo.finishTransactions`: made thread-safe (#1807) via NachoSoto (@NachoSoto) * `Purchases.shared` and `Purchases.isConfigured` are now thread-safe (#1813) via NachoSoto (@NachoSoto) * `PriceFormatterProvider: Sendable` conformance and fixed thread-safety (#1818) via NachoSoto (@NachoSoto) * `StoreKitConfigTestCase.changeStorefront`: re-enabled on iOS 16 (#1811) via NachoSoto (@NachoSoto) ### Other Changes * `DeviceCache`: no longer set cache timestamp before beginning request (#1839) via NachoSoto (@NachoSoto) * `MagicWeatherSwiftUI`: updated to use `async` APIs (#1843) via NachoSoto (@NachoSoto) * Release train (#1842) via Cesar de la Vega (@vegaro) * Adds hotfixes section to RELEASING doc (#1837) via Cesar de la Vega (@vegaro) * Update fastlane plugin (#1838) via Toni Rico (@tonidero) * Update migration doc from didReceiveUpdatedCustomerInfo to receivedUpdatedCustomerInfo (#1836) via Josh Holtz (@joshdholtz) * `PurchasesDelegate`: added test for latest cached customer info always being sent (#1830) via NachoSoto (@NachoSoto) * `CallbackCache: Sendable` conformance (#1835) via NachoSoto (@NachoSoto) * `CallbackCache`: simplified implementation using `Atomic` (#1834) via NachoSoto (@NachoSoto) * `PurchasesLogInTests`: added test to verify `logIn` updates offerings cache (#1833) via NachoSoto (@NachoSoto) * Created `PurchasesLoginTests` (#1832) via NachoSoto (@NachoSoto) * `SwiftLint`: cleaned up output (#1821) via NachoSoto (@NachoSoto) * Link to sdk reference (#1831) via aboedo (@aboedo) * `Atomic: ExpressibleByBooleanLiteral` (#1822) via NachoSoto (@NachoSoto) * `SwiftLint`: fixed build warning (#1820) via NachoSoto (@NachoSoto) * Adds an approval job that will tag the release (#1815) via Cesar de la Vega (@vegaro) * `Atomic: ExpressibleByNilLiteral` (#1804) via NachoSoto (@NachoSoto) * `PurchasesAttributionDataTests`: fixed potential race condition in flaky test (#1805) via NachoSoto (@NachoSoto) * Fixed warnings for unnecessary `try` (#1816) via NachoSoto (@NachoSoto) * Moved `AttributionFetcherError` inside `AttributionFetcher` (#1808) via NachoSoto (@NachoSoto) * Update documentation for presentCodeRedemptionSheet (#1817) via Joshua Liebowitz (@taquitos) * `Dangerfile`: added "next_release" as supported label (#1810) via NachoSoto (@NachoSoto) * PurchaseTester- Update Podfile.lock (#1814) via Joshua Liebowitz (@taquitos) * Update to latest fastlane plugin (#1802) via Toni Rico (@tonidero) * Clean up: moved `BackendIntegrationTests.xctestplan` to `TestPlans` folder (#1812) via NachoSoto (@NachoSoto) * `SK2StoreProduct`: conditionally removed `@available` workaround (#1794) via NachoSoto (@NachoSoto) * `SwiftLint`: fixed deprecation warning (#1809) via NachoSoto (@NachoSoto) * Update gems (#1791) via Joshua Liebowitz (@taquitos) * Replace usages of replace_in with replace_text_in_files action (#1803) via Toni Rico (@tonidero)
Closed
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.
Motivation
Fixes TRIAGE-55
Issue
Delegate would not always/reliably call
didReceiveUpdatedCustomerInfo
.customerInfoManager.sendCachedCustomerInfoIfAvailable
would only call the delegate when the latest customer info object was already sent.☝️ This, according to a customer bug report, appears to be a breaking change between v3 and v4. It also appears to be a difference in behavior with
Purchases.shared.customerInfoStream
as this gets the initial customer value.Example
Bonus Fix
The logs would show CusomterInfo was set to delegate before delegate was set.
Description
customerInfoManager.sendCachedCustomerInfoIfAvailable
to call send a value to the delegate when delegate is being sent