index.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { useState, useEffect } from 'react';
  2. import { useDispatch } from 'react-redux';
  3. import QRCode from './QRCode'
  4. import Authorization from './Authorization'
  5. import SMSCode from './SMSCode'
  6. import Registration from './Registration'
  7. import { authorizeUser } from '../../api-data'
  8. import {asyncLogin} from '../../redux/authorization/operations'
  9. const AuthPage = () => {
  10. const [isQR, setIsQR] = useState<boolean>(false)
  11. const [isCode, setIsCode] = useState<string>('12221')
  12. const [isChecked, setIsChecked] = useState<boolean>(true);
  13. const [isReg, setIsReg] = useState<boolean>(false);
  14. const [country, setCountry] = useState<string>('Country')
  15. const [number, setNumber] = useState<string>('+380995688412')
  16. const dispatch = useDispatch()
  17. useEffect(() => {
  18. const isCheckedLC = localStorage.isChecked
  19. isCheckedLC && setIsChecked(isCheckedLC === 'true'?true:false)
  20. }, [])
  21. const handleIsQR = (): void => setIsQR(!isQR)
  22. const handleSendCode = async (): Promise<void> => {
  23. const res = await authorizeUser(number.split(' ').join('').trim(), country)
  24. res&&setIsCode(res)
  25. }
  26. const handleIsValidCode = async (e: React.ChangeEvent<HTMLInputElement>):Promise<void> => {
  27. const value = e.target.value.trim().split(' ').join('');
  28. if (isCode && value === isCode)
  29. dispatch(await asyncLogin(number, isCode, () => setIsReg(!isReg)))
  30. }
  31. const handleIsCheck = (e: React.ChangeEvent<HTMLInputElement>): void => {
  32. const flag = e.target.checked
  33. setIsChecked(flag);
  34. localStorage.isChecked = flag
  35. }
  36. const handleResetState = ():void => {
  37. setIsCode('')
  38. setCountry('Country')
  39. setNumber('')
  40. }
  41. return (
  42. isReg?<Registration/>:
  43. isCode ? <SMSCode
  44. handleIsValidCode={handleIsValidCode}
  45. number={number}
  46. handleResetState={handleResetState}/> :
  47. isQR ? <QRCode handleIsQR={handleIsQR} /> :
  48. <Authorization handleIsQR={handleIsQR}
  49. handleSendCode={handleSendCode}
  50. handleIsCheck={handleIsCheck}
  51. setNumber={setNumber}
  52. number={number}
  53. country={country}
  54. setCountry={setCountry}
  55. isChecked={isChecked} />
  56. )
  57. };
  58. export default AuthPage;