diff --git a/Auth/FirebaseAuthUI/FUIAuth.h b/Auth/FirebaseAuthUI/FUIAuth.h index ff38752a2de..db604ea8853 100644 --- a/Auth/FirebaseAuthUI/FUIAuth.h +++ b/Auth/FirebaseAuthUI/FUIAuth.h @@ -188,11 +188,15 @@ __attribute__((deprecated("Instead use authUI:didSignInWithAuthDataResult:error: @property(nonatomic, copy) NSArray> *providers; /** @property shouldHideCancelButton - @brief Whether to hide the cancel button, defaults to NO. On iOS 13, this also disables - the swipe-to-dismiss gesture. + @brief Whether to hide the cancel button, defaults to NO. */ @property(nonatomic, assign) BOOL shouldHideCancelButton; +/** @property interactiveDismissEnabled + @brief Whether or not interactive dismiss should be enabled on iOS 13 and above devices. + */ +@property(nonatomic, assign, getter=isInteractiveDismissEnabled) BOOL interactiveDismissEnabled API_AVAILABLE(ios(13)); + /** @property customStringsBundle @brief Custom strings bundle supplied by the developer. Nil when there is no custom strings bundle set. In which case the default bundle will be used. diff --git a/Auth/FirebaseAuthUI/FUIAuth.m b/Auth/FirebaseAuthUI/FUIAuth.m index 1017fc4fa80..d0d4b0db18f 100644 --- a/Auth/FirebaseAuthUI/FUIAuth.m +++ b/Auth/FirebaseAuthUI/FUIAuth.m @@ -107,6 +107,7 @@ - (instancetype)initWithAuth:(FIRAuth *)auth { self = [super init]; if (self) { _auth = auth; + _interactiveDismissEnabled = YES; } return self; } @@ -178,7 +179,7 @@ - (void)signInWithProviderUI:(id)providerUI if (self.auth.currentUser.isAnonymous && !credential) { if (result) { result(self.auth.currentUser, nil); - }; + } // Hide Auth Picker Controller which was presented modally. if (isAuthPickerShown && presentingViewController.presentingViewController) { [presentingViewController dismissViewControllerAnimated:YES completion:nil]; diff --git a/Auth/FirebaseAuthUI/FUIAuthPickerViewController.m b/Auth/FirebaseAuthUI/FUIAuthPickerViewController.m index 039914a0767..420728bec48 100644 --- a/Auth/FirebaseAuthUI/FUIAuthPickerViewController.m +++ b/Auth/FirebaseAuthUI/FUIAuthPickerViewController.m @@ -102,11 +102,13 @@ - (void)viewDidLoad { target:self action:@selector(cancelAuthorization)]; self.navigationItem.leftBarButtonItem = cancelBarButton; - } else { - if (@available(iOS 13, *)) { + } + if (@available(iOS 13, *)) { + if (!self.authUI.interactiveDismissEnabled) { self.modalInPresentation = YES; } } + self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:FUILocalizedString(kStr_Back) style:UIBarButtonItemStylePlain diff --git a/EmailAuth/FirebaseEmailAuthUI/FUIConfirmEmailViewController.m b/EmailAuth/FirebaseEmailAuthUI/FUIConfirmEmailViewController.m index 9cd3e0a624e..d121ca3a994 100755 --- a/EmailAuth/FirebaseEmailAuthUI/FUIConfirmEmailViewController.m +++ b/EmailAuth/FirebaseEmailAuthUI/FUIConfirmEmailViewController.m @@ -125,6 +125,12 @@ - (void)viewWillAppear:(BOOL)animated { style:UIBarButtonItemStylePlain target:nil action:nil]; + + if (@available(iOS 13, *)) { + if (!self.authUI.isInteractiveDismissEnabled) { + self.modalInPresentation = YES; + } + } } } diff --git a/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.h b/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.h index 35591d78ac3..f2a09781516 100644 --- a/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.h +++ b/EmailAuth/FirebaseEmailAuthUI/FUIEmailAuth.h @@ -32,7 +32,7 @@ NS_ASSUME_NONNULL_BEGIN @interface FUIEmailAuth : NSObject /** @property emailLink. - @brief The link for email link sign in. + @brief The link for email link sign in. */ @property(nonatomic, strong, readwrite, nullable) NSString *emailLink; diff --git a/EmailAuth/FirebaseEmailAuthUI/FUIEmailEntryViewController.m b/EmailAuth/FirebaseEmailAuthUI/FUIEmailEntryViewController.m index a92b7b3d280..d948610b439 100755 --- a/EmailAuth/FirebaseEmailAuthUI/FUIEmailEntryViewController.m +++ b/EmailAuth/FirebaseEmailAuthUI/FUIEmailEntryViewController.m @@ -126,6 +126,12 @@ - (void)viewWillAppear:(BOOL)animated { style:UIBarButtonItemStylePlain target:nil action:nil]; + + if (@available(iOS 13, *)) { + if (!self.authUI.isInteractiveDismissEnabled) { + self.modalInPresentation = YES; + } + } } } diff --git a/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignInViewController.m b/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignInViewController.m index 6e6401669a4..6c827b494d2 100755 --- a/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignInViewController.m +++ b/EmailAuth/FirebaseEmailAuthUI/FUIPasswordSignInViewController.m @@ -133,6 +133,12 @@ - (void)viewWillAppear:(BOOL)animated { style:UIBarButtonItemStylePlain target:nil action:nil]; + + if (@available(iOS 13, *)) { + if (!self.authUI.isInteractiveDismissEnabled) { + self.modalInPresentation = YES; + } + } } } diff --git a/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneEntryViewController.m b/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneEntryViewController.m index 09f0ac3c4b8..af15948ceb9 100755 --- a/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneEntryViewController.m +++ b/PhoneAuth/FirebasePhoneAuthUI/FUIPhoneEntryViewController.m @@ -168,6 +168,12 @@ - (void)viewWillAppear:(BOOL)animated { style:UIBarButtonItemStylePlain target:nil action:nil]; + + if (@available(iOS 13, *)) { + if (!self.authUI.isInteractiveDismissEnabled) { + self.modalInPresentation = YES; + } + } } }