\n Sweet! Your new password has now been set and you can sign in now.\n
\n }\n />\n );\n }\n\n // Enter new password page\n return (\n \n \n \n New password\n \n \n setShowPassword(!showPassword)}\n >\n {\n showPassword ?\n :\n \n }\n \n \n }\n onChange={(e) => setPassword(e.target.value)}\n />\n \n {formFieldError.password}\n \n \n \n \n Repeat new password\n \n \n setShowConfirmPassword(!showConfirmPassword)}\n >\n {\n showConfirmPassword ?\n :\n \n }\n \n \n }\n onChange={(e) => setConfirmPassword(e.target.value)}\n />\n \n {formFieldError.confirmPassword}\n \n \n \n \n \n \n );\n}\n\nexport default ResetPassword;","export default \"data:image/gif;base64,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\"","import { useState } from 'react';\nimport { Navigate, useNavigate } from 'react-router-dom';\n\nimport {\n FormControlLabel,\n Grid,\n InputAdornment,\n IconButton,\n Button as MuiButton,\n Typography\n} from '@material-ui/core';\nimport { styled } from '@material-ui/core/styles';\n\nimport Auth from '../../auth/auth';\nimport { Button } from '../common';\nimport AuthLayout from './AuthLayout';\nimport { \n AuthFormGroup,\n AuthFormLabel,\n AuthTextField,\n AuthLink,\n AuthCheckbox,\n StyledVisibilitySvg,\n StyledInvisibilitySvg,\n} from './AuthObjects';\nimport FieldHelperText from './FieldHelperText';\n\n\nconst SignUpBox = styled('div')({\n borderTop: '2px solid #BDBEBF',\n marginTop: '32px',\n width: '100%',\n});\n\nconst SignUpText = styled(Typography)({\n fontFamily: \"'Montserrat', sans-serif\",\n fontWeight: 700,\n fontSize: '24px',\n lineHeight: '28px',\n marginTop: '32px',\n textAlign: 'center',\n});\n\nconst SignUpButton = styled(MuiButton)({\n border: '2px solid #BDBEBF',\n borderRadius: '10px',\n color: '#636364',\n fontFamily: \"'Montserrat', sans-serif\",\n fontSize: '18px',\n fontWeight: 700,\n marginTop: '24px',\n height: '64px',\n textTransform: 'none',\n});\n\nfunction SignIn() {\n const navigate = useNavigate();\n // form input\n const [email, setEmail] = useState();\n const [password, setPassword] = useState();\n const [rememberMe, setRememberMe] = useState(false);\n\n const [showPassword, setShowPassword] = useState(false);\n const [formLoading, setFormLoading] = useState(false);\n\n const [errorMessage, setErrorMessage] = useState();\n const [erroredFields, setErroredFields] = useState({});\n\n /**\n * Callback function when login succeeeded. Redirect to previous page\n * if there's any, otherwise redirect to homepage.\n */\n function onLoginSuccess() {\n navigate('/downloads');\n }\n\n /**\n * Callback function when login failed. Display error.\n * @param {String} errorMessage A general error message of the failure.\n * @param {object} erroredFields An object with the error associated with each field.\n */\n function onLoginFailure(errorMessage, erroredFields) {\n setErrorMessage(errorMessage);\n setErroredFields(erroredFields || {});\n setFormLoading(false);\n }\n\n /**\n * Callback function when field value changes. Update the field value and remove the\n * error of the field.\n * @param {String} field The filed that's updated.\n * @param {String} value The new value of the field.\n */\n function removeErroredField(field) {\n delete erroredFields[field];\n setErroredFields(erroredFields);\n }\n\n /**\n * When confirm button is clicked, verify the user email and password.\n * @param {Event} event The event for clicking confirm button.\n */\n async function onSubmit(event) {\n event.preventDefault();\n setFormLoading(true);\n Auth.login(email, password, onLoginSuccess, onLoginFailure);\n }\n\n function handleClickShowPassword() {\n setShowPassword(!showPassword);\n }\n\n function handleRememberMeClicked() {\n setRememberMe(!rememberMe);\n }\n\n if (Auth.getUser()) {\n return \n }\n\n return (\n \n \n \n Email\n \n {\n setEmail(e.target.value);\n removeErroredField(\"email\");\n }}\n />\n \n {erroredFields.email}\n \n \n \n \n Password\n \n {\n setPassword(e.target.value);\n removeErroredField(\"password\");\n }}\n endAdornment={\n \n \n {\n showPassword ?\n :\n \n }\n \n \n }\n />\n \n {erroredFields.password}\n \n \n \n \n \n {/* TODO: Enable this link when we are ready to support reseting password */}\n \n Forgot password?\n \n \n \n }\n label=\"Remember me\" />\n \n \n \n \n \n \n \n Don't have an account?\n {\n navigate('/signup');\n }}\n >\n Sign up\n \n \n \n );\n}\n\nexport default SignIn;\n","import { useState } from 'react';\nimport { Navigate, useNavigate, useSearchParams } from 'react-router-dom';\n\nimport styled from '@emotion/styled';\nimport { InputAdornment, IconButton } from \"@material-ui/core\";\n\nimport Auth from '../../auth/auth';\nimport { Button } from '../common';\nimport AuthLayout from './AuthLayout';\nimport {\n AuthFooterText,\n AuthFormGroup,\n AuthFormLabel,\n AuthLink,\n AuthTextField,\n StyledVisibilitySvg,\n StyledInvisibilitySvg,\n} from './AuthObjects';\nimport FieldHelperText from './FieldHelperText';\n\n\nconst SignUpLink = styled(AuthLink)({\n marginLeft: '4px',\n});\n\nfunction SignUp() {\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const [invitationCode, setInvitationCode] = useState(searchParams.get(\"code\") || \"\");\n const [email, setEmail] = useState(null);\n const [username, setUsername] = useState(null);\n const [password, setPassword] = useState(null);\n const [confirmPassword, setConfirmPassword] = useState(null);\n const [errorMessage, setErrorMessage] = useState(null);\n const [erroredFields, setErroredFields] = useState({});\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [formLoading, setFormLoading] = useState(false);\n\n /**\n * Handler when the signup button is clicked. Register using the form data.\n * @param {MouseEvent} e The event object for the click.\n */\n function onSignUpClick(e) {\n e.preventDefault();\n setFormLoading(true);\n Auth.register(\n invitationCode,\n email,\n username,\n password,\n confirmPassword,\n onRegisterSuccess, \n onRegisterFailure);\n }\n\n /**\n * Callback function after registration is successful. Redirect to\n * the homepage.\n */\n function onRegisterSuccess() {\n navigate('/downloads', {state: {prevPage: \"signup\"}});\n }\n\n /**\n * Callback function after registration failed. Display error message\n * on the screen.\n * @param {String} errorMessage: An error message to be displayed on the page.\n * @param {Map[String, String]} erroredFields: A list of name of the errored fields.\n */\n function onRegisterFailure(errorMessage, erroredFields) {\n setErrorMessage(errorMessage);\n setErroredFields(erroredFields || {});\n setFormLoading(false);\n }\n\n if (Auth.getUser()) {\n return ;\n }\n\n return (\n \n \n \n What's your invitation code?\n \n setInvitationCode(e.target.value)}\n />\n \n {erroredFields['invitationCode']}\n \n \n \n What's your email?\n setEmail(e.target.value)}\n />\n \n {erroredFields['email']}\n \n \n \n What's your username?\n setUsername(e.target.value)}\n />\n \n {erroredFields['username'] || \"This appears on your profile.\"}\n \n \n \n Create your password\n setPassword(e.target.value)}\n endAdornment={\n \n setShowPassword(!showPassword)}\n >\n {\n showPassword ?\n :\n \n }\n \n \n }\n />\n \n {erroredFields['password']}\n \n \n \n Confirm your password\n setConfirmPassword(e.target.value)}\n endAdornment={\n \n setShowConfirmPassword(!showConfirmPassword)}\n >\n {\n showConfirmPassword ?\n :\n \n }\n \n \n }\n />\n \n {erroredFields['confirmPassword']}\n \n \n \n \n \n \n Have an account?\n \n Sign in\n \n \n \n );\n}\n\nexport default SignUp;","import './app.css';\n\nimport React, { Component } from 'react';\nimport {\n BrowserRouter as Router,\n Route,\n Routes,\n // Link\n} from 'react-router-dom';\n\nimport Auth from './auth/auth';\nimport ProtectedRoute from './auth/protectedRoute';\n\nimport Downloads from './downloads';\nimport Homepage from './homepage';\nimport { ForgotPassword, ResetPassword, SignIn, SignUp } from './components/auth';\n// import User from './components/user';\n\nclass App extends Component {\n constructor() {\n super();\n this.state = {\n authLoaded: false\n };\n Auth.loadAuth().then(() => this.setState({ authLoaded: true}));\n }\n\n render() {\n if (!this.state.authLoaded) {\n return \n }\n\n return (\n \n \n } />\n }/>\n \n }/>\n }/>\n\n {/* navigation bar */}\n {/* */}\n\n {/*
*/}\n \n } />\n } />\n {/*
*/}\n \n \n );\n }\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from \"react-redux\";\nimport './index.css';\nimport App from './app';\nimport reportWebVitals from './reportWebVitals';\nimport store from './store/store';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}