Fix unhandled dismissal of SFSafariViewController
#758
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.
📋 Changes
When the Safari provider is used and the user closes the browser by pressing the Cancel button, the SDK handles it by returning a
userCancelled
error. But, when the Safari provider is used with theformSheet
presentation style, the user can close the browser sheet by swiping down. This dismissal is not caught by the SDK, and no error is returned. When using async/await, this leads to the continuation leaking.When the user presses the Cancel button, this action is reported through
SFSafariViewController
's delegate. But when theformSheet
browser is swiped down, it's reported through its presentation controller's delegate instead. This PR fixes the issue by implementing the presentation controller's delegate and handling the dismissal.📎 References
Fixes #757
🎯 Testing
Unit tests were added, and also the changes were tested manually using an iPhone 11 Pro running iOS 16.2, using Xcode 14.2 (14C18).