ErrorUtils.purchasesError(withSKError:): handle URLErrors#3346
Merged
Conversation
Fixes #3343. `SKPaymentTransaction.error` docs say: > The error property is undefined except when `transactionState` is set to `SKPaymentTransactionState.failed`. Your application can read the error property to determine why the transaction failed. For a list of error constants, see `SKErrorDomain` in StoreKit Constants. Which is why [`PurchasesOrchestrator` only considered that domain](https://github.com/RevenueCat/purchases-ios/blob/4.28.1/Sources/Purchasing/Purchases/PurchasesOrchestrator.swift#L792). This expands this handling to consider any other network error, therefore providing more precise errors. Since offline connection error detection was only in `HTTPClient`, I also moved that out and removed `NetworkError.offlineConnection`, so that we detect this when converting `NetworkError.networkError` instead.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #3346 +/- ##
=======================================
Coverage 85.97% 85.98%
=======================================
Files 237 237
Lines 17086 17086
=======================================
+ Hits 14690 14691 +1
+ Misses 2396 2395 -1
☔ View full report in Codecov by Sentry. |
joshdholtz
approved these changes
Oct 26, 2023
joshdholtz
left a comment
Member
There was a problem hiding this comment.
Woah! This looks like a whole thing 😅 I don't see anything wrong with this though 🤷♂️
NachoSoto
added a commit
that referenced
this pull request
Oct 26, 2023
**This is an automatic release.** ### New Features * `PaywallColor`: change visibility of `Color.init(light:dark:)` to `private` (#3345) via NachoSoto (@NachoSoto) ### RevenueCatUI * `Paywalls`: new `.onPurchaseCompleted` overload with `StoreTransaction` (#3323) via NachoSoto (@NachoSoto) * `Paywalls`: finished template 5 (#3340) via NachoSoto (@NachoSoto) * `Paywalls`: new `onDismiss` parameter for `presentPaywallIfNeeded` (#3342) via NachoSoto (@NachoSoto) * `Paywalls`: disable shimmering on footer loading view (#3324) via NachoSoto (@NachoSoto) ### Bugfixes * `ErrorUtils.purchasesError(withSKError:)`: handle `URLError`s (#3346) via NachoSoto (@NachoSoto) ### Other Changes * `Paywalls`: add identifier to events (#3332) via Josh Holtz (@joshdholtz) * `Paywalls`: create new event session when paywall appears (#3330) via Josh Holtz (@joshdholtz) * `HTTPClient`: verbose logs for request IDs (#3320) via NachoSoto (@NachoSoto) * `Paywalls Tester`: fix `macOS` build (#3341) via NachoSoto (@NachoSoto) * `ProductFetcherSK1`: enable `TimingUtil` log (#3327) via NachoSoto (@NachoSoto) * `Paywall Tester`: fixed paywall presentation (#3339) via NachoSoto (@NachoSoto) * `CI`: replace Carthage build jobs with `xcodebuild` (#3338) via NachoSoto (@NachoSoto) * `Integration Tests`: use repetition count from test plan (#3329) via NachoSoto (@NachoSoto) * `Integration Tests`: new logs for troubleshooting flaky tests (#3328) via NachoSoto (@NachoSoto) * `CircleCI`: change iOS 17 job to use M1 Large resource (#3322) via NachoSoto (@NachoSoto) * `Paywalls Tester`: fix release build (#3321) via NachoSoto (@NachoSoto) * `Paywalls`: enable all iOS 17 tests (#3331) via NachoSoto (@NachoSoto) * `CI`: added workaround for Snapshots in `Xcode Cloud` (#2857) via NachoSoto (@NachoSoto) * `StoreKit 1`: disabled `finishTransactions` log on observer mode (#3314) via NachoSoto (@NachoSoto) --------- Co-authored-by: NachoSoto <ignaciosoto90@gmail.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.
Fixes #3343.
SKPaymentTransaction.errordocs say:Which is why
PurchasesOrchestratoronly considered that domain.This expands this handling to consider any other network error, therefore providing more precise errors.
Since offline connection error detection was only in
HTTPClient, I also moved that out and removedNetworkError.offlineConnection, so that we detect this when convertingNetworkError.networkErrorinstead.