function()

in javascript/widgets/handler/phonesigninstart.js [299:366]


      function(error) {
        // Error occurred.
        component.dismissDialog();
        if (error['name'] && error['name'] == 'cancel') {
          return;
        }
        // Anytime an error is thrown by the backend, reset the response.
        // This is needed since a reCAPTCHA token can only be redeemed once.
        // One common scenario is the following:
        // 1. user enters an invalid phone number.
        // 2. user solves reCAPTCHA.
        // 3. Form submitted.
        // 4. Error thrown by backend due to invalid phone number.
        // 5. User updates the phone number field with the correct number.
        // 6. As reCAPTCHA response unexpired, user will submit again and get
        // a reCAPTCHA check error since the same reCAPTCHA response is sent
        // again.
        // The solution is to reset immediately after the backend throws an
        // error.
        grecaptcha.reset(firebaseui.auth.widget.handler.recaptchaWidgetId_);
        // Reset reCAPTCHA token.
        firebaseui.auth.widget.handler.recaptchaToken_ = null;
        var errorMessage =
            /** @type {string} */ ((error && error['message']) || '');
        if (error['code']) {
          // Firebase auth error.
          switch (error['code']) {
            case 'auth/too-many-requests':
              errorMessage =
                  firebaseui.auth.soy2.strings.errorTooManyRequestsPhoneNumber()
                      .toString();
              break;
            // Invalid phone number.
            case 'auth/invalid-phone-number':
            // Missing phone number (should never happen).
            case 'auth/missing-phone-number':
              // Invalid phone number provided. Show the error message inline.
              component.getPhoneNumberElement().focus();
              firebaseui.auth.ui.element.show(
                  component.getPhoneNumberErrorElement(),
                  firebaseui.auth.soy2.strings.errorInvalidPhoneNumber()
                      .toString());
              return;
            case 'auth/admin-restricted-operation':
              if (app.getConfig().isAdminRestrictedOperationConfigured()) {
                const container = component.getContainer();
                component.dispose();
                firebaseui.auth.widget.handler.handle(
                    firebaseui.auth.widget.HandlerName.UNAUTHORIZED_USER,
                    app,
                    container,
                    phoneNumberValue.getPhoneNumber(),
                    firebase.auth.PhoneAuthProvider.PROVIDER_ID);
                return;
              } else {
                errorMessage =
                    firebaseui.auth.widget.handler.common.getErrorMessage(
                        error);
              }
              break;
            default:
              errorMessage =
                  firebaseui.auth.widget.handler.common.getErrorMessage(error);
          }
        }
        // Show error message in the info bar.
        component.showInfoBar(errorMessage);
      }));