diff --git a/WordPressAuthenticator.podspec b/WordPressAuthenticator.podspec index 2a914f997..6c06058e7 100644 --- a/WordPressAuthenticator.podspec +++ b/WordPressAuthenticator.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "WordPressAuthenticator" - s.version = "1.12.0" + s.version = "1.12.1" s.summary = "WordPressAuthenticator implements an easy and elegant way to authenticate your WordPress Apps." s.description = <<-DESC diff --git a/WordPressAuthenticator/Signin/LoginEmailViewController.swift b/WordPressAuthenticator/Signin/LoginEmailViewController.swift index 2e18f566f..26575fddb 100644 --- a/WordPressAuthenticator/Signin/LoginEmailViewController.swift +++ b/WordPressAuthenticator/Signin/LoginEmailViewController.swift @@ -45,7 +45,7 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { localizeControls() setupOnePasswordButtonIfNeeded() - + alternativeLoginLabel?.isHidden = showLoginOptions if !showLoginOptions { addGoogleButton() @@ -187,6 +187,9 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { let button = WPStyleGuide.wpcomSignupButton() stackView.addArrangedSubview(button) + + // Tapping the Sign up text link in "Don't have an account? _Sign up_" + // will present the 3 button view for signing up. button.on(.touchUpInside) { [weak self] (button) in guard let vc = LoginPrologueSignupMethodViewController.instantiate(from: .login) else { DDLogError("Failed to navigate to LoginPrologueSignupMethodViewController") @@ -199,7 +202,24 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { vc.dismissBlock = self.dismissBlock vc.transitioningDelegate = self vc.modalPresentationStyle = .custom - self.navigationController?.pushViewController(vc, animated: true) + + // Don't forget to handle the button taps! + vc.emailTapped = { [weak self] in + self?.performSegue(withIdentifier: .showSigninV2, sender: self) + } + vc.googleTapped = { [weak self] in + guard let toVC = SignupGoogleViewController.instantiate(from: .signup) else { + DDLogError("Failed to navigate to SignupGoogleViewController") + return + } + + self?.navigationController?.pushViewController(toVC, animated: true) + } + vc.appleTapped = { [weak self] in + self?.appleTapped() + } + + self.navigationController?.present(vc, animated: true, completion: nil) } stackView.addConstraints([ @@ -374,7 +394,7 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { loginWithUsernamePassword(immediately: true) } - + /// Configures loginFields to log into wordpress.com and /// navigates to the selfhosted username/password form. Displays the specified /// error message when the new view controller appears. @@ -452,6 +472,11 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder { loginToSelfHostedSite() } + private func appleTapped() { + AppleAuthenticator.sharedInstance.delegate = self + AppleAuthenticator.sharedInstance.showFrom(viewController: self) + } + @IBAction func handleTextFieldDidChange(_ sender: UITextField) { switch sender { @@ -533,3 +558,22 @@ extension LoginEmailViewController: GIDSignInDelegate { signInGoogleAccount(signIn, didSignInFor: user, withError: error) } } + +// MARK: - AppleAuthenticatorDelegate + +extension LoginEmailViewController: AppleAuthenticatorDelegate { + + func showWPComLogin(loginFields: LoginFields) { + self.loginFields = loginFields + performSegue(withIdentifier: .showWPComLogin, sender: self) + } + + func showApple2FA(loginFields: LoginFields) { + self.loginFields = loginFields + signInAppleAccount() + } + + func authFailedWithError(message: String) { + displayErrorAlert(message, sourceTag: .loginApple) + } +}