{"version":3,"sources":["reducer/index.ts","components/ErrorBoundary/ErrorBoundary.tsx","components/Button/Button.tsx","utils/localStorage.ts","utils/email.ts","reducer/constants.ts","components/Email/Email.tsx","components/EmailCodeInput/EmailCodeInput.tsx","hooks/useWindowDimensions.ts","utils/network.ts","utils/cookie.ts","components/EmailCode/EmailCode.tsx","components/EmailDoneModalContainer/EmailDoneModalContainer.tsx","components/ModalRefCode/ModalRefCode.tsx","components/ModalWallet/ModalWallet.tsx","utils/wallet.ts","utils/time.ts","components/Header/Header.tsx","components/EmailDone/EmailDone.tsx","components/RefCode/RefCode.tsx","constants/address.ts","components/App/App.tsx","index.tsx"],"names":["Actions","ErrorBoundary","error","console","message","this","props","children","React","Component","Button","onClick","disabled","maxWidth","height","className","cn","style","undefined","EMAIL","ACCESS_TOKEN","ACCESS_TOKEN_EXPIRES","setAccessToken","token","expires","localStorage","setItem","Date","now","clearAccessToken","removeItem","getAccessToken","a","getItem","refreshAccessToken","tokens","access","ENDPOINT","credentialConfig","withCredentials","authConfig","headers","Authorization","responseWrapper","f","needErrorMessage","response","data","errorMessage","responseError","sendEmailCode","email","axios","get","verifyEmailCode","code","sendRefCode","accessToken","patch","referrer","addWallet","wallet","getUserInformation","post","isEmail","length","toLowerCase","match","initialState","userInfo","remoteConfig","loginEnabled","referralFirstLogin","currentAddress","chain","web3","Web3","givenProvider","tokenContract","stakingContract","StateContext","createContext","DispatchContext","reducer","state","action","type","payload","AddUserInfo","AddEmail","SetConfig","SetCurrentAddress","SetChain","SetWeb3","SetTokenContract","SetStakingContract","Email","dispatch","useContext","useState","isDataLoading","setIsDataLoading","navigate","useNavigate","isLoading","setIsLoading","handleApprove","onMount","information","useEffect","src","value","onChange","e","newEmail","target","trim","setEmailToStorage","onKeyDown","key","placeholder","EmailCodeInput","acceptOnlyNumber","hasError","needChangeColorOnError","firstInputRef","useRef","digits","useDigitInput","acceptedCharacters","current","childNodes","focus","Array","fill","map","_","i","ref","autoFocus","getWindowDimensions","window","width","innerWidth","innerHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","addEventListener","removeEventListener","obj","setCookie","name","maxAge","document","cookie","getCodeLength","split","filter","v","EmailCode","setCode","currentEmail","setCurrentEmail","isEmailResent","setIsEmailResent","timer","setTimer","isError","setIsError","handleResend","setTimeout","handleVerifyCode","refresh","first","body","backgroundColor","emailInStorage","marginTop","useMemo","Math","max","EmailDoneModalContainer","visible","onClose","isOpen","onRequestClose","overlayClassName","ModalRefCode","refCode","referred","isCopied","setIsCopied","navigator","clipboard","writeText","ModalWallet","title","currentWallet","setCurrentWallet","utils","isAddress","getShortAddress","address","slice","HOUR","DAY","getPaddedTime","time","getTimeLeft","seconds","d","floor","h","m","s","NETWORK","idToNetwork","networkToId","Object","fromEntries","entries","reverse","networkInfo","chainName","chainId","toHex","rpcUrls","blockExplorerUrls","nativeCurrency","symbol","decimals","changeNetworkAtMetamask","networkName","ethereum","open","location","host","request","method","params","Header","onConnect","onDisconnect","isLogoutClicked","setIsLogoutClicked","hasModal","setHasModal","EmailDone","modalType","setModalType","msUntilEvent","setMsUntilEvent","intervalId","setIntervalId","fatConfig","start","newMsUntilEvent","clearInterval","newIntervalId","setInterval","updateUserInfo","handleClosetModal","fatSum","toLocaleString","href","id","RefCode","refCodeCookie","nameEQ","ca","c","charAt","substring","indexOf","getCookie","handleOpenNextScreen","providerOptions","walletconnect","package","WalletConnectProvider","options","rpc","web3Modal","Web3Modal","network","cacheProvider","App","URLSearchParams","search","currentProvider","close","clearCachedProvider","subscribeProvider","newProvider","on","accounts","hexChainId","hexToNumber","connect","provider","newWeb3","eth","getAccounts","getChainId","Contract","ERC20","ADDRESSES","STEP_APP_STAKING","path","element","to","replace","firebaseConfig","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","AppContainer","useReducer","app","initializeApp","getRemoteConfig","settings","minimumFetchIntervalMillis","defaultConfig","LoginEnabled","ReferralFirstLogin","fetchAndActivate","then","getValue","asBoolean","Provider","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.cd68c2dd.chunk.js","sourcesContent":["import Web3 from \"web3\";\nimport { Contract } from \"web3-eth-contract\";\nimport { UserInformationType } from \"../utils/types\";\n\n// eslint-disable-next-line no-shadow\nexport enum Actions {\n AddEmail = \"ADD_EMAIL\",\n AddUserInfo = \"ADD_USER_INFO\",\n SetConfig = \"SET_CONFIG\",\n SetCurrentAddress = \"SET_CURRENT_ADDRESS\",\n SetChain = \"SET_CHAIN\",\n SetWeb3 = \"SET_WEB3\",\n SetTokenContract = \"SET_TOKEN_CONTRACT\",\n SetStakingContract = \"SET_STAKING_CONTRACT\",\n}\n\nexport type ActionType =\n | {\n type: Actions.AddEmail;\n payload: string;\n }\n | {\n type: Actions.AddUserInfo;\n payload: UserInformationType;\n }\n | {\n type: Actions.SetCurrentAddress;\n payload: string | undefined;\n }\n | {\n type: Actions.SetChain;\n payload: string | undefined;\n }\n | {\n type: Actions.SetWeb3;\n payload: Web3;\n }\n | {\n type: Actions.SetTokenContract;\n payload: Contract;\n }\n | {\n type: Actions.SetStakingContract;\n payload: Contract;\n }\n | {\n type: Actions.SetConfig;\n payload: Record;\n };\n\nexport interface ReducerState {\n email?: string;\n userInfo?: UserInformationType;\n remoteConfig: {\n loginEnabled?: boolean;\n referralFirstLogin?: boolean;\n };\n currentAddress?: string;\n chain?: string;\n web3?: Web3;\n tokenContract?: Contract;\n stakingContract?: Contract;\n}\n\nconst reducer = (state: ReducerState, action: ActionType) => {\n const { type, payload } = action;\n switch (type) {\n case Actions.AddUserInfo:\n return {\n ...state,\n userInfo: payload,\n };\n case Actions.AddEmail:\n return {\n ...state,\n email: payload,\n };\n case Actions.SetConfig:\n return {\n ...state,\n remoteConfig: payload,\n };\n case Actions.SetCurrentAddress:\n return {\n ...state,\n currentAddress: action.payload,\n };\n case Actions.SetChain:\n return {\n ...state,\n chain: action.payload,\n };\n case Actions.SetWeb3:\n return {\n ...state,\n web3: action.payload,\n };\n case Actions.SetTokenContract:\n return {\n ...state,\n tokenContract: action.payload,\n };\n case Actions.SetStakingContract:\n return {\n ...state,\n stakingContract: action.payload,\n };\n default:\n return state;\n }\n};\n\nexport default reducer;\n","import React from \"react\";\n\ninterface Props {\n children: any;\n}\n\nclass ErrorBoundary extends React.Component {\n componentDidCatch(error: Error) {\n console.error(error.message);\n }\n\n render() {\n const { children } = this.props;\n\n return children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from \"react\";\n\nimport \"./Button.scss\";\nimport cn from \"classnames\";\n\ninterface ButtonProps {\n onClick?: () => void;\n disabled?: boolean;\n children: React.ReactNode;\n maxWidth?: number;\n height?: number;\n className?: string;\n}\n\nconst Button = ({ onClick, disabled, children, maxWidth, height, className }: ButtonProps) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import { refreshAccessToken } from \"./email\";\n\nconst EMAIL = \"email\";\nconst ACCESS_TOKEN = \"access-token\";\nconst ACCESS_TOKEN_EXPIRES = \"access-token-expires\";\n\nexport const setAccessToken = (token: string, expires: number) => {\n localStorage.setItem(ACCESS_TOKEN, token);\n localStorage.setItem(ACCESS_TOKEN_EXPIRES, `${Date.now() + expires * 1000}`);\n};\n\nexport const clearAccessToken = () => {\n localStorage.removeItem(ACCESS_TOKEN);\n localStorage.removeItem(ACCESS_TOKEN_EXPIRES);\n};\n\nexport const getAccessToken = async () => {\n const expires = +(localStorage.getItem(ACCESS_TOKEN_EXPIRES) ?? 0);\n if (Date.now() > expires) {\n clearAccessToken();\n\n const tokens = await refreshAccessToken();\n if (tokens) {\n setAccessToken(tokens.access.token, tokens.access.expires);\n return tokens.access.token;\n }\n\n return undefined;\n }\n\n return localStorage.getItem(ACCESS_TOKEN);\n};\n\nexport const setEmailToStorage = (email: string) => {\n localStorage.setItem(EMAIL, email);\n};\nexport const getEmailInStorage = () => {\n return localStorage.getItem(EMAIL) as string | undefined;\n};\nexport const clearEmailInStorage = () => {\n localStorage.removeItem(EMAIL);\n};\n","import axios from \"axios\";\nimport { UserInformationType } from \"./types\";\nimport { getAccessToken } from \"./localStorage\";\n\n// const ENDPOINT = \"https://api.step.app/dev/v1\";\nconst ENDPOINT = \"https://api.step.app/v1\";\n\nconst credentialConfig = {\n withCredentials: true,\n};\n\nconst authConfig = (token: string) => ({\n headers: { Authorization: `Bearer ${token}` },\n});\n\nconst responseWrapper = async (f: Promise, needErrorMessage?: boolean) => {\n try {\n const response = await f;\n return response.data;\n } catch (e: any) {\n const errorMessage = e?.response?.data?.message ?? \"Error\";\n if (needErrorMessage) {\n return { responseError: errorMessage };\n }\n }\n};\n\nexport const sendEmailCode = async (email: string) =>\n responseWrapper(axios.get(`${ENDPOINT}/auth/otp-code?email=${email}`));\n\nexport const verifyEmailCode = async (email: string, code: string) =>\n responseWrapper(axios.get(`${ENDPOINT}/auth/token?email=${email}&code=${code}`, credentialConfig));\n\nexport const sendRefCode = async (code: string) => {\n const accessToken = await getAccessToken();\n return responseWrapper(axios.patch(`${ENDPOINT}/user/me`, { referrer: code }, authConfig(accessToken)));\n};\n\nexport const addWallet = async (wallet: string) => {\n const accessToken = await getAccessToken();\n return responseWrapper(axios.patch(`${ENDPOINT}/user/me`, { wallet }, authConfig(accessToken)));\n};\n\nexport const joinWhitelist = async (wallet: string, amount: number) => {\n const accessToken = await getAccessToken();\n return responseWrapper(\n axios.patch(`${ENDPOINT}/user/me`, { whitelist: { wallet, amount } }, authConfig(accessToken))\n );\n};\n\nexport const getUserInformation: () => Promise = async () => {\n const accessToken = await getAccessToken();\n return responseWrapper(axios.get(`${ENDPOINT}/user/me`, authConfig(accessToken)));\n};\n\nexport const refreshAccessToken = async () => {\n // const refreshToken = getCookie(\"refresh\");\n return responseWrapper(axios.post(`${ENDPOINT}/auth/token/refresh`, {}, credentialConfig));\n};\n\nexport const isEmail = (email?: string) => {\n const re =\n // eslint-disable-next-line\n /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\n return !!(email?.length && email.toLowerCase().match(re));\n};\n","import React from \"react\";\nimport Web3 from \"web3\";\n\nimport { ActionType, ReducerState } from \"./index\";\n\nexport const initialState: ReducerState = {\n email: undefined,\n userInfo: undefined,\n remoteConfig: {\n loginEnabled: true,\n referralFirstLogin: false,\n },\n currentAddress: undefined,\n chain: undefined,\n web3: new Web3(Web3.givenProvider),\n tokenContract: undefined,\n stakingContract: undefined,\n};\n\nexport const StateContext = React.createContext(initialState);\nexport const DispatchContext = React.createContext>(() => null);\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport Button from \"../Button/Button\";\nimport { getUserInformation, isEmail, sendEmailCode } from \"../../utils/email\";\nimport { DispatchContext, StateContext } from \"../../reducer/constants\";\nimport { Actions } from \"../../reducer\";\nimport { setEmailToStorage } from \"../../utils/localStorage\";\n\nimport \"./Email.scss\";\n\nconst Email = () => {\n const dispatch = useContext(DispatchContext);\n const { email, userInfo, remoteConfig } = useContext(StateContext);\n const [isDataLoading, setIsDataLoading] = useState(true);\n const navigate = useNavigate();\n\n const [isLoading, setIsLoading] = useState(false);\n const handleEmailChange = (e: React.ChangeEvent) => {\n const newEmail = e.target.value.trim();\n dispatch({ type: Actions.AddEmail, payload: newEmail });\n setEmailToStorage(newEmail);\n };\n\n const handleApprove = async () => {\n if (email) {\n try {\n setIsLoading(true);\n const res = await sendEmailCode(email);\n if (res) {\n setIsLoading(false);\n navigate(remoteConfig.referralFirstLogin ? \"/ref-code\" : \"/email-code\");\n }\n } catch (e) {\n setIsLoading(false);\n }\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && isEmail(email) && !isLoading) {\n handleApprove();\n }\n };\n\n const onMount = async () => {\n if (!userInfo) {\n try {\n const information = await getUserInformation();\n dispatch({ type: Actions.AddUserInfo, payload: information });\n setIsDataLoading(false);\n\n if (information?.email) {\n navigate(\"/dashboard\");\n }\n } catch (e) {\n setIsDataLoading(false);\n }\n } else {\n setIsDataLoading(false);\n }\n };\n\n useEffect(() => {\n onMount();\n }, []);\n\n if (isDataLoading) {\n return (\n
\n \n
Loading...
\n
\n );\n }\n\n return (\n
\n \n {remoteConfig.loginEnabled ? (\n <>\n
So, let’s start from e-mail
\n \n \n \n ) : (\n
Registration is temporary closed.
\n )}\n
\n );\n};\n\nexport default Email;\n","import React, { useEffect, useRef } from \"react\";\n\nimport \"./EmailCodeInput.scss\";\nimport useDigitInput from \"react-digit-input\";\nimport cn from \"classnames\";\n\ninterface EmailCodeInputProps {\n value: string;\n disabled: boolean;\n length: number;\n acceptOnlyNumber: boolean;\n hasError?: boolean;\n needChangeColorOnError?: boolean;\n onChange: React.Dispatch>;\n}\n\nconst EmailCodeInput = ({\n value,\n disabled,\n onChange,\n length,\n acceptOnlyNumber,\n hasError = false,\n needChangeColorOnError = true,\n}: EmailCodeInputProps) => {\n const firstInputRef = useRef(null);\n const digits = useDigitInput({\n acceptedCharacters: acceptOnlyNumber ? /^[0-9]$/ : /^[a-zA-Z0-9]$/,\n length,\n value,\n onChange,\n });\n\n useEffect(() => {\n if (hasError) {\n // @ts-ignore\n firstInputRef.current?.childNodes[0].focus();\n }\n }, [hasError]);\n\n return (\n \n {new Array(length).fill(0).map((_, i) => (\n
\n \n
\n ))}\n \n );\n};\n\nexport default EmailCodeInput;\n","import { useState, useEffect } from \"react\";\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n\n return { width, height };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return windowDimensions;\n}\n","import Web3 from \"web3\";\n\n// export type NetworkType = \"avalanche\";\nexport type NetworkType = \"step_network\";\n\nexport const NETWORK: Record = {\n // avalanche: \"avalanche\",\n step_network: \"step_network\",\n};\n\nexport const networkNames = {\n // [NETWORK.avalanche]: \"Avalanche\",\n [NETWORK.step_network]: \"Step Network\",\n};\n\nconst inverse = (obj: Record) => Object.fromEntries(Object.entries(obj).map((a) => a.reverse()));\n\nexport const idToNetwork: Record = {\n // 43114: NETWORK.avalanche,\n // 43113: NETWORK.avalanche,\n 1234: NETWORK.step_network,\n};\n\nexport const networkToId = inverse(idToNetwork);\n\nexport const networkInfo = {\n // [NETWORK.avalanche]: {\n // chainName: \"Avalanche C-Chain\",\n // chainId: Web3.utils.toHex(networkToId[NETWORK.avalanche]),\n // rpcUrls: [\"https://api.avax.network/ext/bc/C/rpc\"],\n // blockExplorerUrls: [\"https://snowtrace.io\"],\n // nativeCurrency: {\n // name: \"AVAX\",\n // symbol: \"AVAX\",\n // decimals: 18,\n // },\n // },\n [NETWORK.step_network]: {\n chainName: \"Step Network\",\n chainId: Web3.utils.toHex(networkToId[NETWORK.step_network]),\n rpcUrls: [\"https://rpc.step.network/\"],\n blockExplorerUrls: [\"https://stepscan.io/\"],\n nativeCurrency: {\n name: \"FITFI\",\n symbol: \"FITFI\",\n decimals: 18,\n },\n },\n};\n\nexport const changeNetworkAtMetamask = async (networkName: NetworkType) => {\n const metamaskDeepLink = \"https://metamask.app.link/dapp/\";\n if (!window.ethereum) {\n window.open(metamaskDeepLink + window.location.host);\n return;\n }\n try {\n await window.ethereum.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId: Web3.utils.toHex(networkToId[networkName]) }],\n });\n } catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n // @ts-ignore\n if (switchError.code === 4902) {\n try {\n await window.ethereum.request({\n method: \"wallet_addEthereumChain\",\n params: [networkInfo[networkName]],\n });\n } catch (addError) {\n console.error(addError);\n }\n }\n }\n};\n\nexport const getShortAddress = (address: string | null) =>\n address ? `${address.slice(0, 6)}...${address.slice(address.length - 3)}` : \"\";\n","export const setCookie = (name: string, value: string, maxAge: number) => {\n document.cookie = `${name}=${value || \"\"}; max-age=${maxAge}; path=/; secure; SameSite=none`;\n};\n\nexport const getCookie = (name: string) => {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; ++i) {\n let c = ca[i];\n while (c.charAt(0) === \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n};\n\nexport const eraseCookie = (name: string) => {\n document.cookie = `${name}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; max-age=0;`;\n};\n","import React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport cn from \"classnames\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport EmailCodeInput from \"../EmailCodeInput/EmailCodeInput\";\nimport { sendEmailCode, verifyEmailCode } from \"../../utils/email\";\nimport { getEmailInStorage, setAccessToken } from \"../../utils/localStorage\";\nimport { StateContext } from \"../../reducer/constants\";\nimport useWindowDimensions from \"../../hooks/useWindowDimensions\";\n\nimport \"./EmailCode.scss\";\nimport { setCookie } from \"../../utils/cookie\";\n\nconst SECOND = 1000;\nconst EMAIL_RESENT_INTERVAL = 30;\nconst INPUT_LENGTH = 6;\n\nconst getCodeLength = (code: string) => code.split(\"\").filter((v) => v !== \" \").length;\n\nconst EmailCode = () => {\n const { email, remoteConfig } = useContext(StateContext);\n const navigate = useNavigate();\n const [code, setCode] = React.useState(\"\");\n const [currentEmail, setCurrentEmail] = useState(undefined);\n const [isEmailResent, setIsEmailResent] = useState(false);\n const [timer, setTimer] = useState(0);\n const [isError, setIsError] = useState(false);\n const { width, height } = useWindowDimensions();\n\n const handleResend = async () => {\n if (!currentEmail) {\n return;\n }\n setIsEmailResent(true);\n setTimer(EMAIL_RESENT_INTERVAL);\n setCode(\"\");\n await sendEmailCode(currentEmail);\n };\n\n useEffect(() => {\n if (timer === 0) {\n setIsEmailResent(false);\n } else {\n setTimeout(() => setTimer(timer - 1), SECOND);\n }\n }, [timer]);\n\n const handleVerifyCode = async () => {\n if (!currentEmail) {\n return;\n }\n const response = await verifyEmailCode(currentEmail, code);\n if (response) {\n if (response?.refresh) {\n setCookie(\"refresh\", response.refresh.token, response.refresh.expires);\n }\n setAccessToken(response.access.token, response.access.expires);\n if (remoteConfig.referralFirstLogin) {\n navigate(\"/dashboard\");\n } else if (response.first) {\n navigate(\"/ref-code\");\n } else {\n navigate(\"/dashboard\");\n }\n } else {\n setIsError(true);\n setCode(\"\");\n }\n };\n\n useEffect(() => {\n if (isError) {\n setTimeout(() => setIsError(false), 3000);\n }\n }, [isError]);\n\n useEffect(() => {\n if (getCodeLength(code) === INPUT_LENGTH) {\n handleVerifyCode();\n }\n }, [code]);\n\n useEffect(() => {\n document.body.style.backgroundColor = isError ? \"#600B10\" : \"#F9D549\";\n }, [isError]);\n\n useEffect(() => {\n if (email) {\n setCurrentEmail(email);\n } else {\n const emailInStorage = getEmailInStorage();\n if (emailInStorage) {\n setCurrentEmail(emailInStorage);\n } else {\n navigate(\"/email\");\n }\n }\n }, []);\n\n const marginTop = useMemo(\n () => (width > 600 ? Math.max(height - 582 - 100, 50) : Math.max(height - 350 - 100, 50)),\n [width, height]\n );\n\n return (\n
\n \n
\n {isError\n ? \"The code is wrong, please try one more time\"\n : \"Cool, we’ve sent you a code to your e-mail. Please check it.\"}\n
\n \n {isEmailResent ? (\n
\n Please wait {timer} seconds to resend email\n
\n ) : (\n
\n DIDN’T GET A PASSWORD\n
\n )}\n
\n );\n};\n\nexport default EmailCode;\n","import React from \"react\";\nimport Modal from \"react-modal\";\nimport cn from \"classnames\";\n\nimport \"./EmailDoneModalContainer.scss\";\n\ninterface EmailDoneModalContainerProps {\n visible: boolean;\n onClose: () => void;\n children: React.ReactNode;\n className?: string;\n}\n\nconst EmailDoneModalContainer = ({ visible, onClose, children, className }: EmailDoneModalContainerProps) => {\n return (\n \n
\n CLOSE\n
\n <>{children}\n \n );\n};\n\nexport default EmailDoneModalContainer;\n","import React, { useState } from \"react\";\n\nimport EmailDoneModalContainer from \"../EmailDoneModalContainer/EmailDoneModalContainer\";\nimport Button from \"../Button/Button\";\n\nimport \"./ModalRefCode.scss\";\n\ninterface ModalRefCodeProps {\n refCode: string;\n visible: boolean;\n referred: number;\n onClose: () => void;\n}\n\nconst ModalRefCode = ({ visible, onClose, refCode, referred }: ModalRefCodeProps) => {\n const [isCopied, setIsCopied] = useState(false);\n\n const handleCopyGenUrl = () => {\n navigator.clipboard.writeText(refCode);\n setIsCopied(true);\n };\n\n const handleCopyFullGenUrl = () => {\n navigator.clipboard.writeText(`https://app.step.app?r=${refCode}`);\n setIsCopied(true);\n };\n\n return (\n \n
\n
Referrals invited for now:
\n
{referred}
\n
\n
\n
\n Be one of the top referrers and get access to a limited edition NFT\n
\n
\n
REF CODE: {refCode}
\n
{isCopied ? \"COPIED\" : \"COPY\"}
\n
\n \n
\n
\n );\n};\n\nexport default ModalRefCode;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport Web3 from \"web3\";\n\nimport Button from \"../Button/Button\";\nimport EmailDoneModalContainer from \"../EmailDoneModalContainer/EmailDoneModalContainer\";\nimport { addWallet, getUserInformation } from \"../../utils/email\";\nimport { DispatchContext } from \"../../reducer/constants\";\nimport { Actions } from \"../../reducer\";\n\nimport \"./ModalWallet.scss\";\n\ninterface ModalWalletProps {\n wallet?: string;\n visible: boolean;\n onClose: () => void;\n title?: string;\n}\n\nconst ModalWallet = ({ wallet, visible, onClose, title = \"Enter your wallet:\" }: ModalWalletProps) => {\n const dispatch = useContext(DispatchContext);\n const [currentWallet, setCurrentWallet] = useState(wallet);\n const [isError, setIsError] = useState(false);\n\n const handleEmailChange = (e: React.ChangeEvent) => {\n setCurrentWallet(e.target.value.trim());\n };\n\n useEffect(() => {\n if (wallet) {\n setCurrentWallet(wallet);\n }\n }, [wallet]);\n\n const handleApprove = async () => {\n if (currentWallet && Web3.utils.isAddress(currentWallet)) {\n setIsError(false);\n const response = await addWallet(currentWallet);\n if (response) {\n dispatch({ type: Actions.AddUserInfo, payload: await getUserInformation() });\n onClose();\n } else {\n setCurrentWallet(\"\");\n setIsError(true);\n }\n } else {\n setCurrentWallet(\"\");\n setIsError(true);\n }\n };\n\n useEffect(() => {\n if (isError) {\n setTimeout(() => {\n setIsError(false);\n }, 5000);\n }\n }, [isError]);\n\n return (\n \n
{title}
\n
\n \n \n
\n
\n );\n};\n\nexport default ModalWallet;\n","export const NETWORK_TYPE = \"bsc\";\nexport const NETWORK_TYPE_CODE = 56;\n\nexport const getShortAddress = (address: string | null) =>\n address ? `${address.slice(0, 5)}...${address.slice(address.length - 5)}` : \"\";\n","import BN from \"bn.js\";\n\nconst SECOND = 1;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\n\nconst getPaddedTime = (time: number) => (time > 9 ? time : `0${time}`);\n\nexport const getTimeLeft = (seconds: number) => {\n const d = Math.floor(seconds / DAY);\n const h = Math.floor((seconds - d * DAY) / HOUR);\n const m = Math.floor((seconds - d * DAY - h * HOUR) / MINUTE);\n const s = Math.floor((seconds - d * DAY - h * HOUR - m * MINUTE) / SECOND);\n\n return `${getPaddedTime(d)}:${getPaddedTime(h)}:${getPaddedTime(m)}:${getPaddedTime(s)}`;\n};\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { NavLink, useNavigate } from \"react-router-dom\";\n\nimport { clearAccessToken, clearEmailInStorage } from \"../../utils/localStorage\";\nimport { eraseCookie } from \"../../utils/cookie\";\n\nimport \"./Header.scss\";\nimport { StateContext } from \"../../reducer/constants\";\nimport { changeNetworkAtMetamask, getShortAddress, NETWORK } from \"../../utils/network\";\nimport ModalWallet from \"../ModalWallet/ModalWallet\";\n\ninterface Props {\n onConnect: () => void;\n onDisconnect: () => void;\n}\n\nconst Header = ({ onConnect, onDisconnect }: Props) => {\n const { chain, currentAddress, userInfo } = useContext(StateContext);\n const navigate = useNavigate();\n const [isLogoutClicked, setIsLogoutClicked] = useState(false);\n const [hasModal, setHasModal] = useState(false);\n\n const handleLogoutClicked = () => {\n setIsLogoutClicked(true);\n };\n const handleLogoutUnclicked = () => {\n setIsLogoutClicked(false);\n };\n const handleLogout = () => {\n clearAccessToken();\n clearEmailInStorage();\n eraseCookie(\"refresh\");\n navigate(\"/email\");\n };\n\n const handleConnect = async () => {\n if (currentAddress) {\n await changeNetworkAtMetamask(NETWORK.step_network);\n } else {\n onConnect();\n }\n };\n\n useEffect(() => {\n if (userInfo && currentAddress && currentAddress !== userInfo.wallet) {\n setHasModal(true);\n }\n }, [currentAddress]);\n\n return (\n
\n \n
\n {/*
window.open(\"/\", \"_self\")} className=\"header__link\"> */}\n {/* HOME */}\n {/*
*/}\n {/* join the whitelist */}\n {/*
*/}\n {/*
*/}\n {/* {currentAddress && chain === NETWORK.step_network ? ( */}\n {/*
*/}\n {/* {getShortAddress(currentAddress)} */}\n {/*
*/}\n {/* ) : ( */}\n {/*
*/}\n {/* CONNECT */}\n {/*
*/}\n {/* )} */}\n\n {isLogoutClicked ? (\n
\n
ARE YOU SURE?
\n
\n YES\n
\n
\n NO\n
\n
\n ) : (\n
\n
\n LOGOUT\n
\n
\n )}\n
\n setHasModal(false)}\n title=\"Update wallet?\"\n />\n
\n );\n};\n\nexport default Header;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { NavLink, useNavigate } from \"react-router-dom\";\n\nimport FatAction from \"../FatAction/FatAction\";\nimport { EmailModalType } from \"../../utils/types\";\nimport ModalRefCode from \"../ModalRefCode/ModalRefCode\";\nimport ModalWallet from \"../ModalWallet/ModalWallet\";\nimport { getShortAddress } from \"../../utils/wallet\";\nimport { DispatchContext, StateContext } from \"../../reducer/constants\";\nimport { getUserInformation } from \"../../utils/email\";\nimport { Actions } from \"../../reducer\";\nimport { getTimeLeft } from \"../../utils/time\";\nimport Header from \"../Header/Header\";\n\nimport \"./EmailDone.scss\";\n\ninterface Props {\n onConnect: () => void;\n onDisconnect: () => void;\n}\n\nconst EmailDone = ({ onConnect, onDisconnect }: Props) => {\n const { userInfo } = useContext(StateContext);\n const dispatch = useContext(DispatchContext);\n const navigate = useNavigate();\n const [modalType, setModalType] = useState(undefined);\n const [msUntilEvent, setMsUntilEvent] = useState(0);\n // eslint-disable-next-line no-undef\n const [intervalId, setIntervalId] = useState(undefined);\n\n useEffect(() => {\n if (userInfo?.fatConfig?.start) {\n const newMsUntilEvent = userInfo.fatConfig.start * 1000 - Date.now();\n if (intervalId) {\n setIntervalId(undefined);\n clearInterval(intervalId);\n setMsUntilEvent(newMsUntilEvent);\n\n const newIntervalId = setInterval(() => {\n setMsUntilEvent((v) => (v ? Math.max(v - 1000, 0) : newMsUntilEvent));\n }, 1000);\n\n setIntervalId(newIntervalId);\n } else {\n const newIntervalId = setInterval(() => {\n setMsUntilEvent((v) => (v ? Math.max(v - 1000, 0) : newMsUntilEvent));\n }, 1000);\n\n setIntervalId(newIntervalId);\n }\n }\n\n return () => {\n if (intervalId) {\n clearInterval(intervalId);\n }\n };\n }, [userInfo]);\n\n const updateUserInfo = async () => {\n const information = await getUserInformation();\n dispatch({ type: Actions.AddUserInfo, payload: information });\n };\n\n useEffect(() => {\n document.addEventListener(\"visibilitychange\", updateUserInfo);\n\n return () => {\n document.removeEventListener(\"visibilitychange\", updateUserInfo);\n };\n }, [dispatch]);\n\n const handleOpenRefCodeModal = () => {\n setModalType(\"ref-code\");\n };\n\n const handleOpenWalletModal = () => {\n setModalType(\"wallet\");\n };\n\n const handleClosetModal = () => {\n setModalType(undefined);\n };\n\n const onMount = async () => {\n document.body.style.backgroundColor = \"#F9D549\";\n\n if (!userInfo) {\n const information = await getUserInformation();\n dispatch({ type: Actions.AddUserInfo, payload: information });\n\n if (!information?.email) {\n navigate(\"/email\");\n }\n }\n };\n\n useEffect(() => {\n onMount();\n }, []);\n\n if (!userInfo) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n
\n
\n
\n {/*
FAT:
*/}\n
{userInfo.fatSum.toLocaleString()} FAT
\n {/*
+{userInfo.fatDaily.toLocaleString()} PER DAY
*/}\n
Referees: {userInfo.referred.toLocaleString()}
\n
Your wallet: {getShortAddress(userInfo.wallet)}
\n {msUntilEvent > 0 && (\n
\n {getTimeLeft(Math.floor(msUntilEvent / 1000))} BEFORE START\n
\n )}\n
\n
\n \n Claim FAT On-Chain\n \n\n {/*
*/}\n {/* */}\n {/* */}\n {/*
*/}\n
\n
\n \n \n
\n );\n};\n\nexport default EmailDone;\n","import React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport EmailCodeInput from \"../EmailCodeInput/EmailCodeInput\";\nimport { sendRefCode } from \"../../utils/email\";\n\nimport \"./RefCode.scss\";\nimport useWindowDimensions from \"../../hooks/useWindowDimensions\";\nimport { getCookie } from \"../../utils/cookie\";\nimport { StateContext } from \"../../reducer/constants\";\n\nconst getCodeLength = (code: string) => code.split(\"\").filter((v) => v !== \" \").length;\n\nconst INPUT_LENGTH = 8;\n\nconst RefCode = () => {\n const { remoteConfig } = useContext(StateContext);\n const [code, setCode] = React.useState(\"\");\n const navigate = useNavigate();\n const { width, height } = useWindowDimensions();\n const [isError, setIsError] = useState(false);\n\n useEffect(() => {\n const refCodeCookie = getCookie(\"r\");\n if (refCodeCookie) {\n setCode(refCodeCookie);\n }\n }, []);\n\n const handleOpenNextScreen = () => {\n navigate(remoteConfig.referralFirstLogin ? \"/email-code\" : \"/dashboard\");\n };\n\n const handleVerifyCode = async () => {\n const response = await sendRefCode(code);\n if (response) {\n handleOpenNextScreen();\n } else {\n setIsError(true);\n setCode(\"\");\n }\n };\n\n useEffect(() => {\n if (isError) {\n setTimeout(() => setIsError(false), 1000);\n }\n }, [isError]);\n\n useEffect(() => {\n if (getCodeLength(code) === INPUT_LENGTH) {\n handleVerifyCode();\n }\n }, [code]);\n\n useEffect(() => {\n document.body.style.backgroundColor = \"#F9D549\";\n }, []);\n\n const marginTop = useMemo(\n () => (width > 600 ? Math.max(height - 582 - 100, 50) : Math.max(height - 350 - 100, 50)),\n [width, height]\n );\n\n return (\n
\n \n
Enter the ref code if you have it
\n \n
\n SKIP THIS STEP\n
\n
\n );\n};\n\nexport default RefCode;\n","export default {\n MOCK_TOKEN: \"0x9c9e77BCb667D41ae1e63677f70Efd4681faC9d4\",\n STEP_APP_STAKING: \"0x1611018A75e19851e3686dDF167FD357Dde252E0\",\n FAT_CLAIM_1: \"0x1C4D6EC5B97c1D8AA15FdAE225cCE9cF5D7DFa95\",\n FAT_CLAIM_2: \"0x0Ecf66E74f08D35bCaa5f35bb96f1db2D6b7BFc3\",\n // MOCK_TOKEN: \"0x56768D2DD02D64094d7BA2f0D8e47FeF65cc6de6\",\n // STEP_APP_STAKING: \"0xA13F939Af56E79ABf81A07b256788629484e9e22\",\n};\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { Routes, Route, Navigate } from \"react-router-dom\";\nimport Web3Modal, { IProviderOptions } from \"web3modal\";\nimport WalletConnectProvider from \"@walletconnect/web3-provider\";\nimport Web3 from \"web3\";\n\nimport Email from \"../Email/Email\";\nimport EmailCode from \"../EmailCode/EmailCode\";\nimport EmailDone from \"../EmailDone/EmailDone\";\nimport RefCode from \"../RefCode/RefCode\";\nimport { setCookie } from \"../../utils/cookie\";\nimport { changeNetworkAtMetamask, idToNetwork, NETWORK, networkInfo } from \"../../utils/network\";\nimport { DispatchContext, StateContext } from \"../../reducer/constants\";\nimport { Actions } from \"../../reducer\";\n\nimport ERC20 from \"../../constants/ERC20.json\";\nimport STEP_APP_STAKING from \"../../constants/StepAppStaking.json\";\nimport ADDRESSES from \"../../constants/address\";\n\nimport \"./App.scss\";\n\nconst getRefCode = () => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(\"r\");\n};\n\nconst providerOptions: IProviderOptions = {\n walletconnect: {\n package: WalletConnectProvider,\n options: {\n rpc: {\n // 43113: \"https://api.avax-test.network/ext/bc/C/rpc\",\n // 43114: networkInfo[NETWORK.avalanche].rpcUrls[0],\n 1234: networkInfo[NETWORK.step_network].rpcUrls[0],\n },\n },\n },\n};\nconst web3Modal = new Web3Modal({ network: NETWORK.step_network, cacheProvider: true, providerOptions });\n\nconst App = () => {\n const [refCode, _] = useState(getRefCode());\n const { web3 } = useContext(StateContext);\n const dispatch = useContext(DispatchContext);\n\n const onDisconnect = async () => {\n // @ts-ignore\n if (web3 && web3.currentProvider && web3.currentProvider.close) {\n // @ts-ignore\n await web3.currentProvider.close();\n }\n dispatch({ type: Actions.SetCurrentAddress, payload: undefined });\n await web3Modal.clearCachedProvider();\n };\n const subscribeProvider = async (newProvider: any) => {\n if (!newProvider.on) {\n return;\n }\n newProvider.on(\"close\", () => {\n onDisconnect();\n });\n newProvider.on(\"accountsChanged\", async (accounts: string[]) => {\n dispatch({ type: Actions.SetCurrentAddress, payload: accounts[0] });\n });\n newProvider.on(\"chainChanged\", async (hexChainId: string) => {\n const chainId = Web3.utils.hexToNumber(hexChainId);\n dispatch({ type: Actions.SetChain, payload: idToNetwork[chainId] });\n });\n };\n const onConnect = async () => {\n const provider = await web3Modal.connect();\n await subscribeProvider(provider);\n\n const newWeb3: Web3 = new Web3(provider);\n dispatch({ type: Actions.SetWeb3, payload: newWeb3 });\n\n await changeNetworkAtMetamask(NETWORK.step_network);\n\n const accounts = await newWeb3.eth.getAccounts();\n dispatch({ type: Actions.SetCurrentAddress, payload: accounts[0] });\n const chainId = await newWeb3.eth.getChainId();\n dispatch({ type: Actions.SetChain, payload: idToNetwork[chainId] });\n\n dispatch({\n type: Actions.SetTokenContract,\n payload: new newWeb3.eth.Contract(ERC20 as any, ADDRESSES.MOCK_TOKEN),\n });\n dispatch({\n type: Actions.SetStakingContract,\n payload: new newWeb3.eth.Contract(STEP_APP_STAKING as any, ADDRESSES.STEP_APP_STAKING),\n });\n };\n\n useEffect(() => {\n if (refCode) {\n setCookie(\"r\", refCode, 60 * 60);\n }\n }, [refCode]);\n\n return (\n
\n \n } />\n } />\n } />\n } />\n } />\n \n
\n );\n};\n\nexport default App;\n","import React, { useEffect, useReducer } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { HashRouter } from \"react-router-dom\";\nimport { initializeApp } from \"firebase/app\";\nimport { getValue, getRemoteConfig, fetchAndActivate } from \"firebase/remote-config\";\n\nimport ErrorBoundary from \"./components/ErrorBoundary/ErrorBoundary\";\nimport App from \"./components/App/App\";\nimport { initialState, StateContext, DispatchContext } from \"./reducer/constants\";\nimport reducer, { Actions } from \"./reducer\";\n\nimport \"./index.scss\";\n\nconst firebaseConfig = {\n apiKey: \"AIzaSyD8XRCLUrS4ypRFN6Oubg0nfxNrECVmbWQ\",\n authDomain: \"step-app-2bacf.firebaseapp.com\",\n databaseURL: \"https://step-app-2bacf-default-rtdb.europe-west1.firebasedatabase.app\",\n projectId: \"step-app-2bacf\",\n storageBucket: \"step-app-2bacf.appspot.com\",\n messagingSenderId: \"547422727598\",\n appId: \"1:547422727598:web:e49a576bd8d0272d05ec3f\",\n measurementId: \"G-YY40ZNM5SD\",\n};\n\nconst AppContainer = () => {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n useEffect(() => {\n const app = initializeApp(firebaseConfig);\n const remoteConfig = getRemoteConfig(app);\n remoteConfig.settings.minimumFetchIntervalMillis = 3600000;\n\n remoteConfig.defaultConfig = {\n LoginEnabled: true,\n ReferralFirstLogin: false,\n };\n\n fetchAndActivate(remoteConfig).then((v) => {\n const loginEnabled = getValue(remoteConfig, \"LoginEnabled\");\n const referralFirstLogin = getValue(remoteConfig, \"ReferralFirstLogin\");\n\n dispatch({\n type: Actions.SetConfig,\n payload: {\n loginEnabled: loginEnabled.asBoolean(),\n referralFirstLogin: referralFirstLogin.asBoolean(),\n },\n });\n });\n }, []);\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}