While implementing react-intl-tel-input in my react JS it give me errors

Viewed 381

Hello I have started learning ReactJS and from last 1 week i stuck with a problem. I am using React with Firebase Phone Authentication. I want to use react-intl-tel-input for taking Phone input. I have installed the npm package and write the code as told in documentation. after running the code it takes the input correctly but after clicking on verify it say this number is not register but this number work perfectly with tag but not with this

please have a look on my code

import React from 'react'
import firebase from './firebase'
import 'firebase/auth';
import "./App.css";
import { getDatabase, ref, child, get } from "firebase/database";
import IntlTelInput from 'react-intl-tel-input';
import 'react-intl-tel-input/dist/main.css';


class Login extends React.Component {

  state = {};

  handlePhoneChange = (status, phoneNumber, country) => {
    console.log({ phoneNumber });
    this.setState({ phoneNumber });
  };

  handleChange = (e) => {
    console.log (e)
    const { name, value } = e.target
    this.setState({
      [name]: value
     
    })
    console.log (value)
    this.setState({ phoneNumber: value }, () => {
      console.log(this.state.phoneNumber);
    });
  }
  configureCaptcha = () =>{
    window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', {
      'size': 'invisible',
      'callback': (response) => {

        // reCAPTCHA solved, allow signInWithPhoneNumber.

        this.onSignInSubmit();
        console.log("Recaptca varified")
      },
      //  defaultCountry: "IN"
     }
    );
  }
  onSignInSubmit = (e) => {
    e.preventDefault()
    this.configureCaptcha()
    const phoneNumber = this.state.mobile
    console.log(phoneNumber)
    const appVerifier = window.recaptchaVerifier;
    const dbRef = ref(getDatabase());
    get(child(dbRef, `Users/${phoneNumber}`)).then((snapshot) => {
      if (snapshot.exists()) {
        firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)

          .then((confirmationResult) => {

            window.confirmationResult = confirmationResult;

            alert('An OTP has been sent to your registered mobile number')
            localStorage.setItem("Phone_No", phoneNumber)
            console.log(localStorage.getItem('Phone_No'));

          }).catch((error) => {

            console.error(error);
            alert("Oops! Some error occured. Please try again.")
          });
      }
      else {
        alert('Sorry, this mobile number is not registered with us. Please use your registered mobile number.');
      }

    })
  }
  onSubmitOTP = (e) => {
    e.preventDefault()
    const code = this.state.otp
    console.log(code)
    window.confirmationResult.confirm(code).then((result) => {
      // User signed in successfully.
      const Users = result.user;
      console.log(JSON.stringify(Users))
      this.props.history.push("/home");
    }).catch((error) => {
      alert("You have entered wrong code")
    });
  }

  render() {
    return (
      <>
      <main>
        <div className="img">
          <img src="./55k-logo.png" alt="Company Logo" style={{ height: "80px", width: "200px" }} />
          <br />
        </div>
        <fieldset>

          <div className="Main-header">
            <h1>Sign-In</h1>
            <p>Limtless Water. From Unlimited Air.</p>
            <form onSubmit={this.onSignInSubmit}>
              <div id="sign-in-button"></div>

               <label>Mobile Number</label> <br />  
               <IntlTelInput
              containerClassName="intl-tel-input"
              inputClassName="form-control"
              name="mobile"
              placeholder="Enter Your Number"
              input
              type="tel"
              value={this.state.phoneNumber}
              onPhoneNumberChange={this.handlePhoneChange}
            />

             {/* <input type="tel" id="phone" name="mobile" placeholder="Enter Your Number" required onChange={this.handleChange} /> */}
              <div className="buttons">
                <button type="submit">Verify</button>
              </div>
            </form>


            <div>
              <form onSubmit={this.onSubmitOTP}>
                <label >Code</label> <br />
               <input type="text" name="otp" placeholder="Enter six digit code" required onChange={this.handleChange} />
                <div className="buttons" >
                  <button type="submit">Continue</button>
                </div>

              </form>

            </div>

          </div>

        </fieldset>
      </main>
    </>
    )
  }
}
export default Login;

after running the code i got this message but my number is registered

But my code work perfectly with this <input type="tel" id="phone" name="mobile" placeholder="Enter Your Number" required onChange={this.handleChange} /> but i don't want to take input with normal input tag because here user have to type country code manually

0 Answers
Related