{"version":3,"file":"static/js/8676.chunk.js","mappings":"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","sources":["Components/AccountScreens/Login/SocialButtons/FacebookButton.tsx","Components/AccountScreens/Login/SocialButtons/AppleButton.tsx","Components/AccountScreens/Login/SocialButtons/GoogleButton.tsx","Components/AccountScreens/Login/SocialButtons/SocialButtons.tsx","Components/AccountScreens/Login/Login.tsx","Components/Shared/CodeInput/CodeInput.tsx","Components/AccountScreens/Login/LoginConfirm/LoginConfirm.tsx","Components/AccountScreens/Signup/Signup.tsx","Components/AccountScreens/AccountScreens.tsx","Components/AccountScreens/FormInputs/PhoneFormField/PhoneFormField.tsx","Components/AccountScreens/Signup/EmailInput.tsx","Helpers/PATH.resource.ts","Helpers/validators.ts"],"sourcesContent":["import React from 'react'\r\nimport { useLogin } from 'react-facebook'\r\n\r\n// ASSETS\r\nimport facebookIcon from '../../../../assets/loginIcons/f_logo_RGB-Blue_58.png'\r\n\r\n// INTERFACES\r\nimport { IUserName, LoginProviders } from '../../../../interfaces/interfaces'\r\n\r\ninterface IFacebookButtonProps {\r\n loginSuccess: (\r\n loginProvider: LoginProviders,\r\n accessToken?: string,\r\n name?: IUserName\r\n ) => void\r\n}\r\n\r\nconst FacebookButton: React.FC = ({\r\n loginSuccess,\r\n}: IFacebookButtonProps): React.JSX.Element => {\r\n const { login } = useLogin() //, status, isLoading, error\r\n return (\r\n {\r\n void login({ scope: 'email' })\r\n .then((response) => {\r\n void loginSuccess(\r\n LoginProviders.facebook,\r\n response.authResponse.accessToken\r\n )\r\n })\r\n .catch((error) => {\r\n console.error(error)\r\n })\r\n }}\r\n >\r\n \r\n \"Facebook\"\r\n \r\n Continue with Facebook\r\n \r\n )\r\n}\r\n\r\nexport default FacebookButton\r\n","import { IUserName, LoginProviders } from '../../../../interfaces/interfaces'\r\nimport appleIcon from '../../../../assets/loginIcons/apple.png'\r\nimport AppleLogin from 'react-apple-login'\r\nimport React from 'react'\r\n\r\ninterface IAppleCredentialResponse {\r\n error: string\r\n authorization: { id_token: string }\r\n user?: { name: IUserName }\r\n}\r\n\r\ninterface IAppleButtonProps {\r\n loginSuccess: (\r\n loginProvider: LoginProviders,\r\n accessToken?: string,\r\n name?: IUserName\r\n ) => void\r\n}\r\n\r\nexport default function AppleButton(props: IAppleButtonProps) {\r\n const loginUrl = `https://${window.location.host}/auth/login`\r\n return (\r\n {\r\n if (credentialResponse.error) {\r\n return\r\n }\r\n props.loginSuccess(\r\n LoginProviders.apple,\r\n credentialResponse.authorization.id_token,\r\n credentialResponse.user?.name\r\n )\r\n }}\r\n render={(renderProps) => (\r\n \r\n \r\n \"Apple\"\r\n \r\n Continue with Apple\r\n \r\n )}\r\n usePopup={true}\r\n />\r\n )\r\n}\r\n","import {\r\n GoogleCredentialResponse,\r\n GoogleLogin,\r\n GoogleOAuthProvider,\r\n} from '@react-oauth/google'\r\nimport React from 'react'\r\nimport { LoginProviders } from '../../../../interfaces/interfaces'\r\n\r\ninterface IGoogleButtonProps {\r\n loginSuccess: (loginProvider: LoginProviders, accessToken?: string) => void\r\n}\r\n\r\nexport default function GoogleButton(props: IGoogleButtonProps) {\r\n const handleGoogleLoginSuccess = (\r\n credentialResponse: GoogleCredentialResponse\r\n ): void => {\r\n props.loginSuccess(LoginProviders.google, credentialResponse.credential)\r\n }\r\n\r\n if (process.env.REACT_APP_GOOGLE_CLIENT_ID) {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return <>\r\n }\r\n}\r\n","import './social-buttons.css'\r\nimport React, { useContext } from 'react'\r\n\r\n// COMPONENTS\r\nimport FacebookButton from './FacebookButton'\r\nimport AppleButton from './AppleButton'\r\nimport GoogleButton from './GoogleButton'\r\n\r\nimport { notIosApp } from '../../../../Helpers/IOS'\r\n\r\nimport {\r\n IUserName,\r\n LoginDetails,\r\n LoginMethod,\r\n LoginProviders,\r\n} from '../../../../interfaces/interfaces'\r\nimport { FacebookProvider } from 'react-facebook'\r\nimport { GlobalContext } from '../../../../Context/GlobalContext'\r\n\r\nexport interface ISocialProps {\r\n loginSuccess: (props: LoginDetails) => void\r\n}\r\n\r\nconst SocialButtons: React.FC = (\r\n props: ISocialProps\r\n): React.JSX.Element => {\r\n const global = useContext(GlobalContext)\r\n const handleLoginSuccess = (\r\n loginProvider: LoginProviders,\r\n accessToken?: string,\r\n name?: IUserName\r\n ): void => {\r\n if (!accessToken) {\r\n return\r\n }\r\n\r\n props.loginSuccess({\r\n loginProvider: loginProvider,\r\n loginMethod: LoginMethod.thirdPartyProvider,\r\n accessToken: accessToken,\r\n name: name,\r\n })\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n {!global.partnerId && (\r\n <>\r\n {notIosApp() && (\r\n <>\r\n \r\n {process.env.REACT_APP_FACEBOOK_APP_ID && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default SocialButtons\r\n","import './login.css'\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nimport { simpleValidateEmail } from '../../../Helpers/validators'\r\nimport Button from '../../Shared/Button/Button'\r\nimport {\r\n ICheckUserDetails,\r\n LoginDetails,\r\n LoginMethod,\r\n} from '../../../interfaces/interfaces'\r\nimport SocialButtons from './SocialButtons/SocialButtons'\r\nimport EmailInput from '../Signup/EmailInput'\r\nimport PhoneFormField, {\r\n isPhoneValid,\r\n} from '../FormInputs/PhoneFormField/PhoneFormField'\r\n\r\ninterface ILoginProps {\r\n loginMethod: LoginMethod\r\n onChangeLoginMethod: (newLoginMethod?: LoginMethod) => void\r\n checkUserCallback: (props: ICheckUserDetails) => void\r\n login: (props: LoginDetails) => void\r\n}\r\n\r\nconst phoneID = 'phoneNumber'\r\n\r\nconst Login: React.FC = ({\r\n loginMethod,\r\n onChangeLoginMethod,\r\n checkUserCallback,\r\n login,\r\n}: ILoginProps): React.JSX.Element => {\r\n const [userDetails, setUserDetails] = useState({\r\n loginMethod: LoginMethod.phoneNumber,\r\n phoneNumber: '',\r\n code: '',\r\n country: undefined,\r\n })\r\n const [isFormValid, setIsFormValid] = useState(false)\r\n\r\n useEffect((): void => {\r\n switch (loginMethod) {\r\n case LoginMethod.email:\r\n setUserDetails({\r\n loginMethod: loginMethod,\r\n email: '',\r\n code: '',\r\n })\r\n break\r\n default:\r\n setUserDetails({\r\n loginMethod: LoginMethod.phoneNumber,\r\n phoneNumber: '',\r\n code: '',\r\n country: undefined,\r\n })\r\n break\r\n }\r\n\r\n setIsFormValid(false)\r\n }, [loginMethod])\r\n\r\n const checkUser = (): void => {\r\n if (userDetails.loginMethod === LoginMethod.thirdPartyProvider) {\r\n return\r\n }\r\n\r\n const request = {\r\n userDetails: {\r\n ...userDetails,\r\n email: userDetails.email?.toLowerCase(),\r\n },\r\n doesUserExist: false,\r\n } as ICheckUserDetails\r\n\r\n checkUserCallback(request)\r\n }\r\n\r\n const handleKeyPress = (e: React.KeyboardEvent): void => {\r\n if (e.key === 'Enter') {\r\n checkUser()\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {userDetails.loginMethod === LoginMethod.email && (\r\n \r\n ) => {\r\n const { name, value } = e.target\r\n setIsFormValid(simpleValidateEmail(value))\r\n setUserDetails({\r\n ...userDetails,\r\n [name]: value,\r\n })\r\n }}\r\n />\r\n )}\r\n {userDetails.loginMethod === LoginMethod.phoneNumber && (\r\n <>\r\n {\r\n setIsFormValid(isPhoneValid(value))\r\n setUserDetails({\r\n ...userDetails,\r\n country: country,\r\n [name]: value,\r\n })\r\n }}\r\n />\r\n \r\n )}\r\n \r\n
\r\n
\r\n
Or use
\r\n
\r\n
\r\n onChangeLoginMethod()}\r\n />\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default Login\r\n","import React, { useState, useEffect, useRef } from 'react'\r\nimport { Tick } from '../../../assets/svg/Svg-Exports'\r\n\r\n// delete this component when issues with the main one are resolved\r\ninterface ICodeInput {\r\n charsPerEntry: number\r\n onEntryAction: (code: string, isValid: boolean) => void\r\n identifier: string\r\n labelText: string\r\n placeholderChars: string\r\n validationCheck: (val: string) => boolean\r\n}\r\n\r\nconst CodeInput: React.FC = ({\r\n charsPerEntry = 1,\r\n onEntryAction,\r\n identifier,\r\n labelText,\r\n placeholderChars,\r\n validationCheck,\r\n}: ICodeInput): React.JSX.Element => {\r\n const [codeValue, setCodeValue] = useState('')\r\n const [isValid, setIsValid] = useState(false)\r\n const codeInputRef = useRef(null)\r\n\r\n useEffect(() => {\r\n if (codeInputRef.current) {\r\n codeInputRef.current.focus()\r\n }\r\n }, [])\r\n\r\n const checkAndSetValidity = (value: string): void => {\r\n if (validationCheck) {\r\n if (validationCheck(value)) {\r\n setIsValid(true)\r\n } else {\r\n setIsValid(false)\r\n }\r\n } else {\r\n setIsValid(true)\r\n }\r\n }\r\n\r\n const onInputEntry = (e: React.ChangeEvent): void => {\r\n const { value } = e.target\r\n\r\n if (value.length === charsPerEntry) {\r\n checkAndSetValidity(value)\r\n\r\n setCodeValue(value)\r\n } else {\r\n setIsValid(false)\r\n onEntryAction(codeValue, false)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isValid) {\r\n onEntryAction(codeValue, isValid)\r\n } else {\r\n setIsValid(false)\r\n }\r\n }, [codeValue, isValid, onEntryAction])\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
{isValid && }
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default CodeInput\r\n","import { AxiosResponse } from 'axios'\r\nimport React, { useCallback, useEffect, useState } from 'react'\r\nimport Identification from '../../../../axios/IdentificationAPI'\r\nimport { numericValidator } from '../../../../Helpers/validators'\r\nimport CodeInput from '../../../Shared/CodeInput/CodeInput'\r\nimport {\r\n IUserData,\r\n LoginDetails,\r\n LoginMethod,\r\n} from '../../../../interfaces/interfaces'\r\nimport './LoginConfirm.css'\r\nimport Button from '../../../Shared/Button/Button'\r\n\r\ninterface ILoginConfirmProps {\r\n loginProps: IUserData\r\n onCancel: () => void\r\n setLoading: (isLoading: boolean) => void\r\n setFormError: (errorMessage: string | undefined) => void\r\n login: (props: LoginDetails) => void\r\n createValidationCooldown: () => void\r\n resendTimeout: number\r\n}\r\n\r\nconst LoginConfirm: React.FC = ({\r\n loginProps,\r\n onCancel,\r\n setLoading,\r\n setFormError,\r\n login,\r\n createValidationCooldown,\r\n resendTimeout,\r\n}: ILoginConfirmProps): React.JSX.Element => {\r\n const [codeValue, setCodeValue] = useState('')\r\n const [isValid, setIsValid] = useState(false)\r\n\r\n const sendConfirmation = useCallback(async (): Promise => {\r\n setFormError(undefined)\r\n let response: AxiosResponse | undefined = undefined\r\n\r\n if (resendTimeout > 0) {\r\n return\r\n }\r\n\r\n setLoading(true)\r\n\r\n try {\r\n if (\r\n loginProps.loginMethod === LoginMethod.email &&\r\n loginProps.email\r\n ) {\r\n response = await Identification.sendEmailConfirmNo(\r\n loginProps.email?.toLowerCase()\r\n )\r\n } else if (loginProps.phoneNumber) {\r\n const phoneNumber = loginProps.phoneNumber\r\n response = await Identification.sendSMSConfirmNo(phoneNumber)\r\n }\r\n\r\n if (response) {\r\n if (!response.data || !response.data.success) {\r\n if (response.data && response.data.friendlyErrorMessage) {\r\n setFormError(response.data.friendlyErrorMessage)\r\n\r\n return\r\n }\r\n\r\n throw new Error(\r\n `An error occured while confirming user via ${loginProps.loginMethod}`\r\n )\r\n }\r\n }\r\n } catch (ex) {\r\n console.error(ex)\r\n setFormError('Failed to send a confirmation message')\r\n } finally {\r\n setLoading(false)\r\n createValidationCooldown()\r\n }\r\n }, [loginProps])\r\n\r\n useEffect((): void => {\r\n sendConfirmation()\r\n }, [])\r\n\r\n const checkCode = (): void => {\r\n setFormError(undefined)\r\n\r\n if (!isValid) {\r\n setFormError('Please enter a valid code')\r\n\r\n return\r\n }\r\n\r\n const propsWithCode: IUserData = {\r\n ...loginProps,\r\n code: codeValue,\r\n }\r\n\r\n login(propsWithCode)\r\n }\r\n\r\n const updateCode = (code: string, isValid: boolean): void => {\r\n setCodeValue(code)\r\n setIsValid(isValid)\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

\r\n To keep your account secure, please enter the 6 digit code\r\n we sent to:\r\n

\r\n

\r\n {loginProps?.loginMethod === LoginMethod.email\r\n ? loginProps.email\r\n : loginProps?.phoneNumber}\r\n

\r\n \r\n

{`You will be able to resend code in 3 minutes.`}

\r\n
\r\n 0}\r\n />\r\n \r\n
\r\n {\r\n \r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default LoginConfirm\r\n","import React, { useState, useEffect } from 'react'\r\nimport { Tick } from '../../../assets/svg/Svg-Exports'\r\n\r\nimport { alphaValidator, validateEmail } from '../../../Helpers/validators'\r\nimport Button from '../../Shared/Button/Button'\r\nimport Identification from '../../../axios/IdentificationAPI'\r\nimport Cookies from 'js-cookie'\r\nimport { CHECK_TIMESTAMP } from '../../../Helpers/AUTH.resource'\r\n\r\nimport './Signup.css'\r\nimport EmailInput from './EmailInput'\r\nimport {\r\n ICheckUserDetails,\r\n IUserData,\r\n LoginMethod,\r\n MessageType,\r\n} from '../../../interfaces/interfaces'\r\nimport Alert from '../../Shared/Alert/Alert'\r\nimport PhoneFormField, {\r\n isPhoneValid,\r\n} from '../FormInputs/PhoneFormField/PhoneFormField'\r\n\r\ninterface ISignupProps {\r\n checkUserCallback: IUserData\r\n setLoading: (isLoading: boolean) => void\r\n onSuccess: (jwt: string) => void\r\n checkUser: (\r\n props: ICheckUserDetails\r\n ) => Promise\r\n setFormError: (message: string) => void\r\n onCancel: () => void\r\n}\r\n\r\ninterface ISignupForm {\r\n email: string\r\n phone: string\r\n firstName: string\r\n lastName: string\r\n confirmPhone?: string\r\n confirmEmail?: string\r\n type: LoginMethod\r\n}\r\n\r\ntype SignupState = {\r\n [Property in keyof T as Exclude]: boolean\r\n}\r\n\r\nconst validateField = (\r\n name: string,\r\n value: string,\r\n form: ISignupForm\r\n): { [name: string]: boolean } => {\r\n let isFieldValid: boolean | null = false\r\n\r\n switch (name) {\r\n case 'email':\r\n isFieldValid = validateEmail(value)\r\n break\r\n case 'confirmEmail':\r\n isFieldValid = value.toLowerCase() === form.email.toLowerCase()\r\n break\r\n case 'phone':\r\n isFieldValid = isPhoneValid(value)\r\n break\r\n case 'confirmPhone':\r\n isFieldValid = value === form.phone\r\n break\r\n case 'firstName':\r\n case 'lastName':\r\n isFieldValid = alphaValidator(value) && value.length > 1\r\n break\r\n }\r\n\r\n return { [name]: isFieldValid }\r\n}\r\n\r\nconst defaultFormState = {} as SignupState\r\n\r\nconst Signup: React.FC = ({\r\n checkUserCallback,\r\n setLoading,\r\n onSuccess,\r\n checkUser,\r\n setFormError,\r\n onCancel,\r\n}: ISignupProps): React.JSX.Element => {\r\n const [form, setForm] = useState({} as ISignupForm)\r\n const [formState, setFormState] =\r\n useState>(defaultFormState)\r\n const [errorMessage, setErrorMessage] = useState(\r\n undefined\r\n )\r\n const [isFormValid, setIsFormValid] = useState(false)\r\n\r\n const checkFormValid = (): boolean => {\r\n const isValid = Object.values(formState).every(\r\n (value) => value === true\r\n )\r\n\r\n return isValid\r\n }\r\n\r\n useEffect(() => {\r\n let isValidCopy = {} as SignupState\r\n\r\n for (const key in form) {\r\n if (key === 'type') {\r\n return\r\n }\r\n\r\n const val = form[key as keyof ISignupForm]\r\n\r\n if (val) {\r\n isValidCopy = {\r\n ...isValidCopy,\r\n ...validateField(key, val, form),\r\n }\r\n }\r\n }\r\n\r\n if (isValidCopy) {\r\n setFormState(isValidCopy)\r\n }\r\n }, [form])\r\n\r\n useEffect(() => {\r\n const isValidForm = checkFormValid()\r\n setIsFormValid(isValidForm)\r\n }, [formState])\r\n\r\n useEffect(() => {\r\n let formData = {} as ISignupForm\r\n\r\n if (\r\n checkUserCallback.loginMethod === LoginMethod.email &&\r\n checkUserCallback.email\r\n ) {\r\n formData = {\r\n firstName: '',\r\n lastName: '',\r\n type: checkUserCallback.loginMethod,\r\n email: checkUserCallback.email,\r\n confirmEmail: '',\r\n phone: '',\r\n }\r\n } else if (\r\n checkUserCallback.loginMethod === LoginMethod.phoneNumber &&\r\n checkUserCallback.phoneNumber\r\n ) {\r\n formData = {\r\n firstName: '',\r\n lastName: '',\r\n type: checkUserCallback.loginMethod,\r\n email: '',\r\n phone: checkUserCallback.phoneNumber,\r\n confirmPhone: '',\r\n }\r\n } else if (\r\n checkUserCallback.loginMethod === LoginMethod.thirdPartyProvider\r\n ) {\r\n formData = {\r\n firstName: checkUserCallback.name?.firstName ?? '',\r\n lastName: checkUserCallback.name?.lastName ?? '',\r\n type: checkUserCallback.loginMethod,\r\n email: checkUserCallback.email ?? '',\r\n phone: checkUserCallback.phoneNumber ?? '',\r\n confirmPhone: '',\r\n }\r\n }\r\n\r\n setForm(formData)\r\n\r\n let newFormState = {} as SignupState\r\n\r\n if (checkUserCallback.loginMethod === LoginMethod.phoneNumber) {\r\n newFormState = {\r\n phone: true,\r\n email: false,\r\n confirmPhone: false,\r\n firstName: false,\r\n lastName: false,\r\n }\r\n } else if (checkUserCallback.loginMethod === LoginMethod.email) {\r\n newFormState = {\r\n phone: false,\r\n email: true,\r\n confirmEmail: false,\r\n firstName: false,\r\n lastName: false,\r\n }\r\n }\r\n\r\n setFormState({ ...formState, ...newFormState })\r\n }, [checkUserCallback.loginMethod])\r\n\r\n const handlePhoneChange = (name: string, value: string): void => {\r\n const updatedValidity = validateField(name, value, form)\r\n\r\n setForm({\r\n ...form,\r\n [name]: value,\r\n })\r\n setFormState({ ...formState, ...updatedValidity })\r\n }\r\n\r\n const handleInput = (e: React.ChangeEvent): void => {\r\n const { name, value } = e.target\r\n const updatedValidity = validateField(name, value, form)\r\n\r\n setForm({\r\n ...form,\r\n [name]: value,\r\n })\r\n setFormState({ ...formState, ...updatedValidity })\r\n }\r\n\r\n const onSignup = async (): Promise => {\r\n if (!isFormValid) {\r\n return\r\n }\r\n\r\n setLoading(true)\r\n Cookies.remove('_cjItemC1')\r\n\r\n setLoading(true)\r\n let request: ICheckUserDetails\r\n\r\n switch (form.type) {\r\n case LoginMethod.email:\r\n request = {\r\n userDetails: {\r\n loginMethod: form.type,\r\n email: form.email,\r\n code: '',\r\n },\r\n doesUserExist: false,\r\n }\r\n break\r\n case LoginMethod.phoneNumber:\r\n request = {\r\n userDetails: {\r\n loginMethod: form.type,\r\n phoneNumber: form.phone,\r\n code: '',\r\n },\r\n doesUserExist: false,\r\n }\r\n break\r\n default:\r\n return\r\n }\r\n\r\n try {\r\n const response = await checkUser(request)\r\n\r\n if (response?.doesUserExist) {\r\n setFormError('User already exists.')\r\n\r\n return\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n\r\n try {\r\n const transformPhoneNum = form.phone\r\n\r\n await Identification.registerUser(\r\n form.firstName,\r\n form.lastName,\r\n form.email.toLowerCase(),\r\n transformPhoneNum\r\n )\r\n .then((response) => {\r\n if (response.data.success) {\r\n void CHECK_TIMESTAMP(true).then((jwt) => {\r\n if (!jwt) {\r\n throw new Error(\r\n 'Refresh token could not be created.'\r\n )\r\n }\r\n\r\n onSuccess(jwt)\r\n })\r\n } else if (response.data.errorMessage) {\r\n console.error(response.data.errorMessage)\r\n } else if (response.data.friendlyErrorMessage) {\r\n setErrorMessage(response.data.friendlyErrorMessage)\r\n }\r\n })\r\n .catch((ex) => {\r\n console.error('er', ex)\r\n })\r\n } catch (ex) {\r\n console.error('err', ex)\r\n } finally {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n
false}>\r\n \r\n {errorMessage && (\r\n \r\n )}\r\n {checkUserCallback.loginMethod === LoginMethod.email &&\r\n form.email &&\r\n form.email.length > 0 && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n {(checkUserCallback.loginMethod === LoginMethod.phoneNumber ||\r\n checkUserCallback.loginMethod ===\r\n LoginMethod.thirdPartyProvider) && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n {formState.firstName && }\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {formState.lastName && }\r\n
\r\n
\r\n
\r\n\r\n {checkUserCallback.loginMethod === LoginMethod.email && (\r\n \r\n )}\r\n {checkUserCallback.loginMethod === LoginMethod.phoneNumber && (\r\n \r\n )}\r\n\r\n undefined}\r\n btnStyle=\"secondary\"\r\n btnSize=\"large\"\r\n />\r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Signup\r\n","import { AxiosResponse } from 'axios'\r\nimport React, { useState, useCallback, useEffect } from 'react'\r\n\r\nimport { SET_WITH_EXPIRY } from '../../Helpers/AUTH.resource'\r\nimport { PATH_VALUES } from '../../Helpers/PATH.resource'\r\n\r\nimport Loader from '../Shared/Loader/Loader'\r\nimport Login from './Login/Login'\r\nimport LoginConfirm from './Login/LoginConfirm/LoginConfirm'\r\nimport Signup from './Signup/Signup'\r\nimport './accountscreens.css'\r\nimport {\r\n ICheckUserDetails,\r\n LoginDetails,\r\n LoginMethod,\r\n AccountPages,\r\n MessageType,\r\n} from '../../interfaces/interfaces'\r\nimport Alert from '../Shared/Alert/Alert'\r\nimport NavBarGeneral from '../NavBarGeneral/NavBarGeneral'\r\nimport IdentificationAPI from '../../axios/IdentificationAPI'\r\n\r\nconst cooldownSeconds = 15\r\n\r\ninterface IUserCheckRequest {\r\n emailAddress?: string\r\n phone?: string\r\n}\r\n\r\ninterface IAccountScreens {\r\n onSuccess: (jwt: string) => void\r\n onClose?: () => void\r\n embeded?: boolean\r\n}\r\n\r\nconst AccountScreens: React.FC = ({\r\n onSuccess,\r\n onClose,\r\n embeded,\r\n}: IAccountScreens): React.JSX.Element => {\r\n const [currentPage, setCurrentPage] = useState(\r\n AccountPages.login\r\n )\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [validationProps, setValidationProps] = useState()\r\n const [loginMethod, setLoginMethod] = useState(\r\n LoginMethod.phoneNumber\r\n )\r\n const [formError, setFormError] = useState()\r\n const [resendTimeout, setResendTimeout] = useState(0)\r\n\r\n useEffect((): void => {\r\n setFormError(undefined)\r\n }, [currentPage])\r\n\r\n const headerText = useCallback((): string => {\r\n let header = ''\r\n\r\n switch (currentPage) {\r\n case AccountPages.login:\r\n header = 'Continue with...'\r\n break\r\n case AccountPages.signUp:\r\n header = 'Confirm...'\r\n break\r\n case AccountPages.validationMethod:\r\n header = 'Confirm...'\r\n break\r\n }\r\n\r\n return header\r\n }, [currentPage])\r\n\r\n const changeLoginMethod = (newLoginMethod?: LoginMethod): void => {\r\n if (newLoginMethod) {\r\n setLoginMethod(newLoginMethod)\r\n } else {\r\n setLoginMethod(\r\n loginMethod === LoginMethod.email\r\n ? LoginMethod.phoneNumber\r\n : LoginMethod.email\r\n )\r\n }\r\n }\r\n\r\n const checkUserAfterLogin = async (\r\n props: ICheckUserDetails\r\n ): Promise => {\r\n const newProps: ICheckUserDetails | undefined =\r\n await checkUserDetails(props)\r\n\r\n if (!newProps) {\r\n return\r\n }\r\n\r\n setValidationProps(newProps)\r\n\r\n if (newProps.doesUserExist) {\r\n setCurrentPage(AccountPages.validationMethod)\r\n } else {\r\n setCurrentPage(AccountPages.signUp)\r\n }\r\n }\r\n\r\n useEffect((): (() => void) => {\r\n const timer =\r\n resendTimeout &&\r\n setInterval(() => setResendTimeout(resendTimeout - 1), 12000)\r\n\r\n return (): void => clearInterval(timer)\r\n }, [resendTimeout])\r\n\r\n /**\r\n * Checks to see if the user already has an account\r\n * Will only be used for email and phone numbers\r\n * @param props The props will change depending on the login method used\r\n * @returns\r\n */\r\n const checkUserDetails = async (\r\n props: ICheckUserDetails\r\n ): Promise => {\r\n const request: IUserCheckRequest = {}\r\n\r\n try {\r\n if (!props) {\r\n throw new Error('Login details have not been set')\r\n }\r\n\r\n switch (props.userDetails.loginMethod) {\r\n case LoginMethod.email:\r\n request.emailAddress = props.userDetails.email\r\n break\r\n\r\n case LoginMethod.phoneNumber:\r\n if (props.userDetails.phoneNumber) {\r\n request.phone = props.userDetails.phoneNumber\r\n break\r\n } else {\r\n setFormError('Please enter a phone number')\r\n break\r\n }\r\n\r\n default:\r\n throw new Error(\r\n 'Checking existing users is only done for email/phone number login methods.'\r\n )\r\n }\r\n\r\n const response = await IdentificationAPI.checkUser(request)\r\n\r\n if (response) {\r\n if (response.success) {\r\n props.doesUserExist = response.exists\r\n }\r\n\r\n return props\r\n }\r\n } catch (ex) {\r\n console.error(ex)\r\n }\r\n }\r\n\r\n const login = async (props: LoginDetails): Promise => {\r\n setIsLoading(true)\r\n\r\n try {\r\n let response: AxiosResponse | undefined = undefined\r\n\r\n switch (props.loginMethod) {\r\n case LoginMethod.email:\r\n if (props.email && props.code) {\r\n response = await IdentificationAPI.verifyEmailCode(\r\n props.email,\r\n props.code\r\n )\r\n break\r\n } else {\r\n setFormError('Please enter email and code.')\r\n break\r\n }\r\n\r\n case LoginMethod.phoneNumber:\r\n if (props.phoneNumber && props.code) {\r\n const phoneNumber = props.phoneNumber\r\n response = await IdentificationAPI.verifyMobileCode(\r\n phoneNumber,\r\n props.code\r\n )\r\n break\r\n } else {\r\n setFormError('Please enter phone number and code.')\r\n break\r\n }\r\n\r\n case LoginMethod.thirdPartyProvider:\r\n const { loginProvider, accessToken, name } = props\r\n\r\n if (accessToken === undefined) {\r\n throw new Error('Invalid access token')\r\n }\r\n\r\n if (loginProvider) {\r\n response = await IdentificationAPI.socialLogin(\r\n loginProvider,\r\n accessToken,\r\n name\r\n )\r\n } else {\r\n setFormError('Something went wrong')\r\n console.error('No login provider')\r\n }\r\n\r\n break\r\n default:\r\n throw new Error('Invalid Login Method')\r\n }\r\n\r\n if (!response) {\r\n throw new Error('Invalid response')\r\n }\r\n\r\n if (response.data.jwtToken) {\r\n SET_WITH_EXPIRY(response.data.jwtToken)\r\n onSuccess(response.data.jwtToken)\r\n } else if (response.data.friendlyErrorMessage) {\r\n setFormError(response.data.friendlyErrorMessage)\r\n } else {\r\n throw new Error(\r\n 'Unable to sign in user. No jwtToken returned from response'\r\n )\r\n }\r\n } catch (ex) {\r\n setFormError('An error occurred while signing you in')\r\n } finally {\r\n setIsLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {isLoading && (\r\n \r\n )}\r\n <>\r\n {formError && (\r\n \r\n )}\r\n\r\n {\r\n {\r\n [AccountPages.login]: (\r\n \r\n ),\r\n [AccountPages.signUp]: validationProps ? (\r\n \r\n setCurrentPage(AccountPages.login)\r\n }\r\n />\r\n ) : (\r\n changeLoginMethod\r\n ),\r\n [AccountPages.validationMethod]: validationProps ? (\r\n \r\n setResendTimeout(cooldownSeconds)\r\n }\r\n resendTimeout={resendTimeout}\r\n loginProps={validationProps.userDetails}\r\n onCancel={() =>\r\n setCurrentPage(AccountPages.login)\r\n }\r\n login={login}\r\n />\r\n ) : (\r\n changeLoginMethod\r\n ),\r\n }[currentPage]\r\n }\r\n

\r\n \r\n By signing in or creating an account, you agree with\r\n our Terms & Conditions and Privacy Statement\r\n \r\n

\r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default AccountScreens\r\n","import React, { useEffect, useState } from 'react'\r\nimport './PhoneFormField.css'\r\n\r\nimport { Tick } from '../../../../assets/svg/Svg-Exports'\r\nimport { ParsedCountry, PhoneInput } from 'react-international-phone'\r\nimport 'react-international-phone/style.css'\r\nimport { PhoneNumberUtil } from 'google-libphonenumber'\r\n\r\nimport { convertPhoneNumber } from '../../../../Helpers/utils'\r\n\r\nconst phoneUtil = PhoneNumberUtil.getInstance()\r\n\r\nexport const isPhoneValid = (phone: string): boolean => {\r\n try {\r\n const isValidNum = phoneUtil.isValidNumber(\r\n phoneUtil.parseAndKeepRawInput(phone)\r\n )\r\n\r\n return isValidNum\r\n } catch (error) {\r\n return false\r\n }\r\n}\r\n\r\ninterface IPhoneFormFieldProps {\r\n labelText: string\r\n fieldID: string\r\n initialPhoneValue?: string\r\n onChangeHandler: (name: string, value: string, country?: string) => void\r\n isValid: boolean\r\n subText?: string\r\n isDisabled?: boolean\r\n country?: string\r\n}\r\n\r\nconst PhoneFormField: React.FC = ({\r\n labelText = 'Phone number',\r\n fieldID,\r\n initialPhoneValue,\r\n onChangeHandler,\r\n isValid,\r\n subText = '',\r\n isDisabled = false,\r\n country,\r\n}: IPhoneFormFieldProps): JSX.Element => {\r\n const inputID = !fieldID || fieldID === '' ? 'phone' : fieldID\r\n const [phoneValue, setPhoneValue] = useState(\r\n initialPhoneValue\r\n ) //initialPhoneValue ? initialPhoneValue : '');\r\n\r\n useEffect(() => {\r\n if (initialPhoneValue && initialPhoneValue !== phoneValue) {\r\n setPhoneValue(initialPhoneValue)\r\n }\r\n }, [initialPhoneValue, phoneValue])\r\n\r\n const onPhoneChange = (\r\n phone: string,\r\n meta: {\r\n country: ParsedCountry\r\n inputValue: string\r\n }\r\n ): void => {\r\n // convertPhoneNumber removes spaces, leading zeroes and '+'+\r\n const convertedPhoneNumber = `+${meta.country.dialCode}${convertPhoneNumber(meta.inputValue)}`\r\n setPhoneValue(convertedPhoneNumber)\r\n onChangeHandler(inputID, convertedPhoneNumber, meta.country.iso2)\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {subText &&

{subText}

}\r\n
\r\n \r\n
\r\n {isValid && }\r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default PhoneFormField\r\n","import React, { useState, useEffect } from 'react'\r\nimport { Tick } from '../../../assets/svg/Svg-Exports'\r\n\r\ninterface IEmailInputProps {\r\n emailName: string\r\n isConfirmField: boolean\r\n emailVal: string\r\n onChangeHandler: (e: React.ChangeEvent) => void\r\n isValid: boolean\r\n isDisabled?: boolean\r\n handleKeyPress?: (e: React.KeyboardEvent) => void\r\n}\r\n\r\nconst EmailInput: React.FC = ({\r\n emailName,\r\n isConfirmField,\r\n emailVal,\r\n onChangeHandler,\r\n isValid,\r\n isDisabled,\r\n handleKeyPress,\r\n}: IEmailInputProps): JSX.Element => {\r\n const [value, setValue] = useState(() => (emailVal ? emailVal : ''))\r\n\r\n useEffect(() => {\r\n if (emailVal && emailVal.length > 0) {\r\n setValue(emailVal)\r\n }\r\n }, [emailVal])\r\n\r\n const onChange = (e: React.ChangeEvent) => {\r\n const val = e.target.value\r\n setValue(val)\r\n onChangeHandler(e)\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n \r\n {\r\n
\r\n {isValid && }\r\n
\r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default EmailInput\r\n","const regexp = new RegExp('#([^\\\\s]*)', 'g')\r\n\r\nconst getOS = (): string => {\r\n const userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod']\r\n\r\n let os = ''\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS'\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS'\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows'\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android'\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux'\r\n }\r\n\r\n return os\r\n}\r\n\r\nconst removeTrailingSlash = (urlBefore: string): string => {\r\n let url = urlBefore.replace(regexp, '')\r\n\r\n if (url.includes('?')) {\r\n url = url.split('?')[0]\r\n }\r\n\r\n return url[url.length - 1] === '/' ? url.substr(0, url.length - 1) : url\r\n}\r\n\r\nexport const MEDIA_BASE_PATH = document\r\n .querySelector('[data-media-base-path]')\r\n ?.getAttribute('data-media-base-path') as string\r\n\r\nconst trimMediaUrl = (url: string): string => {\r\n if (MEDIA_BASE_PATH && url.startsWith(MEDIA_BASE_PATH)) {\r\n return url.replace(MEDIA_BASE_PATH, '')\r\n }\r\n\r\n return url\r\n}\r\n\r\nexport const PATH_VALUES = {\r\n isHome: () =>\r\n removeTrailingSlash(window.location.href) ===\r\n removeTrailingSlash(window.location.origin),\r\n\r\n pathName: window.location.pathname.substring(\r\n window.location.pathname.lastIndexOf('/') + 1\r\n ),\r\n trimMediaUrl: trimMediaUrl,\r\n params: window.location.search,\r\n baseUrl: window.location.origin,\r\n hostName: window.location.hostname,\r\n fullUrl: window.location.href,\r\n referrer: document.referrer,\r\n navigationType:\r\n window.performance &&\r\n window.performance.getEntriesByType('navigation')?.[0]?.entryType,\r\n os: getOS(),\r\n zoomLevel: Math.round(window.devicePixelRatio * 100),\r\n}\r\n","export const validateEmail = (email: string): boolean => {\r\n const re =\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n\r\n if (email.length < 3 || !re.test(String(email).toLowerCase())) {\r\n return false\r\n } else return true\r\n}\r\n\r\nexport const simpleValidateEmail = (email: string): boolean => {\r\n const re =\r\n /^[-!#$%&'*+/0-9=?A-Z^_a-z`{|}~](\\.?[-!#$%&'*+/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/\r\n\r\n return re.test(email)\r\n}\r\n\r\nexport const alphaValidator = (name: string): boolean => {\r\n const re = /^[(a-z)\\s-]+$/i\r\n\r\n return re.test(String(name))\r\n}\r\n\r\nexport const alphaNumericValidatorWDash = (name: string): boolean => {\r\n const re = /^[0-9a-zA-Z-]+$/i\r\n\r\n return re.test(String(name))\r\n}\r\n\r\nexport const numericValidator = (val: string): boolean => {\r\n const re = /^\\d+$/\r\n\r\n return re.test(String(val))\r\n}\r\n\r\nexport function isValueEmpty(v: any): boolean {\r\n return v === undefined || v === null\r\n}\r\n"],"names":["_ref","loginSuccess","login","useLogin","_jsxs","className","onClick","scope","then","response","LoginProviders","facebook","authResponse","accessToken","catch","error","console","children","_jsx","src","facebookIcon","alt","AppleButton","props","loginUrl","concat","window","location","host","AppleLogin","clientId","redirectURI","encodeURI","designProp","width","height","scale","border_radius","callback","credentialResponse","_credentialResponse$u","apple","authorization","id_token","user","name","render","renderProps","disabled","appleIcon","usePopup","GoogleButton","handleGoogleLoginSuccess","google","credential","GoogleOAuthProvider","process","GoogleLogin","shape","text","containerProps","logo_alignment","onSuccess","global","useContext","GlobalContext","handleLoginSuccess","loginProvider","loginMethod","LoginMethod","thirdPartyProvider","_Fragment","partnerId","notIosApp","FacebookProvider","version","appId","FacebookButton","onChangeLoginMethod","checkUserCallback","userDetails","setUserDetails","useState","phoneNumber","code","country","undefined","isFormValid","setIsFormValid","useEffect","email","checkUser","_userDetails$email","request","_objectSpread","toLowerCase","doesUserExist","EmailInput","isDisabled","emailName","isConfirmField","emailVal","isValid","handleKeyPress","e","key","onChangeHandler","value","target","simpleValidateEmail","PhoneFormField","fieldID","initialPhoneValue","labelText","isPhoneValid","Button","buttonTxt","btnStyle","btnSize","buttonAction","SocialButtons","charsPerEntry","onEntryAction","identifier","placeholderChars","validationCheck","codeValue","setCodeValue","setIsValid","codeInputRef","useRef","current","focus","htmlFor","ref","placeholder","onChange","length","checkAndSetValidity","maxLength","Tick","loginProps","onCancel","setLoading","setFormError","createValidationCooldown","resendTimeout","sendConfirmation","useCallback","async","_loginProps$email","Identification","sendEmailConfirmNo","sendSMSConfirmNo","data","success","friendlyErrorMessage","Error","ex","CodeInput","numericValidator","updateCode","checkCode","propsWithCode","validateField","form","isFieldValid","validateEmail","phone","alphaValidator","defaultFormState","setForm","formState","setFormState","errorMessage","setErrorMessage","isValidCopy","val","isValidForm","Object","values","every","formData","firstName","lastName","type","confirmEmail","confirmPhone","_checkUserCallback$na","_checkUserCallback$na2","_checkUserCallback$na3","_checkUserCallback$na4","_checkUserCallback$em","_checkUserCallback$ph","newFormState","handlePhoneChange","updatedValidity","handleInput","onSubmit","Alert","MessageType","info","message","subText","autoComplete","Cookies","remove","transformPhoneNum","registerUser","CHECK_TIMESTAMP","jwt","onClose","embeded","currentPage","setCurrentPage","AccountPages","isLoading","setIsLoading","validationProps","setValidationProps","setLoginMethod","formError","setResendTimeout","headerText","header","signUp","validationMethod","changeLoginMethod","newLoginMethod","timer","setInterval","clearInterval","checkUserDetails","emailAddress","IdentificationAPI","exists","verifyEmailCode","verifyMobileCode","socialLogin","jwtToken","SET_WITH_EXPIRY","NavBarGeneral","headingLabel","Loader","position","messages","Login","newProps","Signup","LoginConfirm","href","PATH_VALUES","baseUrl","rel","phoneUtil","PhoneNumberUtil","getInstance","isValidNumber","parseAndKeepRawInput","inputID","phoneValue","setPhoneValue","PhoneInput","defaultCountry","forceDialCode","disableDialCodeAndPrefix","disableFormatting","showDisabledDialCodeAndPrefix","onPhoneChange","meta","convertedPhoneNumber","dialCode","convertPhoneNumber","inputValue","iso2","inputProps","setValue","id","autoFocus","onKeyDown","regexp","RegExp","removeTrailingSlash","urlBefore","url","replace","includes","split","substr","MEDIA_BASE_PATH","_document$querySelect","document","querySelector","getAttribute","isHome","origin","pathName","pathname","substring","lastIndexOf","trimMediaUrl","startsWith","params","search","hostName","hostname","fullUrl","referrer","navigationType","performance","_window$performance$g","getEntriesByType","_window$performance$g2","entryType","os","getOS","userAgent","navigator","platform","indexOf","test","zoomLevel","Math","round","devicePixelRatio","String","alphaNumericValidatorWDash","isValueEmpty","v"],"sourceRoot":""}