import { useState, useEffect } from 'react'; import { useDispatch } from 'react-redux'; import QRCode from './QRCode' import Authorization from './Authorization' import SMSCode from './SMSCode' import Registration from './Registration' import { authorizeUser } from '../../api-data' import { asyncLogin } from '../../redux/authorization/operations' import { format } from '../../helpers' const AuthPage = () => { const [isQR, setIsQR] = useState(false) const [isCode, setIsCode] = useState('') const [isChecked, setIsChecked] = useState(true); const [isReg, setIsReg] = useState(false); const [country, setCountry] = useState('Country') const [number, setNumber] = useState('') const dispatch = useDispatch() const handleIsQR = (): void => setIsQR(!isQR) const isValidCredentials = () => { const numberLength = number.split(' ').join('').trim().length if (numberLength < 13 || numberLength > 13) return false if (!country || country === 'Country') return false if(number.slice(0,1) === '+') return true return true } const handleIsValidCode = async (e: React.ChangeEvent):Promise => { if (isCode && format(e.target.value) === isCode) dispatch(asyncLogin(number, isCode, () => setIsReg(!isReg))) } const handleSendCode = async () => { const res = await authorizeUser(format(number), country) res && setIsCode(res) } const handleIsCheck = (e: React.ChangeEvent): void => { const flag = e.target.checked setIsChecked(flag); localStorage.isChecked = flag } const handleResetState = ():void => { setIsCode('') setCountry('Country') setNumber('') } useEffect(() => { const isCheckedLC = localStorage.isChecked if (isCheckedLC) { setIsChecked(isCheckedLC === 'true'?true:false) } else { localStorage.setItem('isChecked','true') } }, []) return ( isReg?: isCode ? : isQR ? : ) }; export default AuthPage;