{"version":3,"file":"index-deeffaee.js","sources":["../../src/pages/auth/login/providers/errors/signInError.js","../../src/pages/auth/login/providers/model.jsx","../../src/pages/auth/login/containers/form.jsx","../../src/pages/auth/login/index.jsx"],"sourcesContent":["class SignInError extends Error {\r\n\r\n}\r\n\r\nexport default SignInError;","import PropTypes from 'prop-types';\nimport React, { useMemo, useState, useContext, useCallback, createContext } from 'react';\n\nimport AuthAPIClient from 'src/api/auth';\nimport { useAuth } from 'src/providers/authProvider';\n\nimport SignInError from './errors/signInError';\n\nexport const LoginContext = createContext();\n\nconst LoginProvider = ({ children }) => {\n const { login } = useAuth();\n\n const apiClient = useMemo(() => new AuthAPIClient(), []);\n\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n\n const errors = useMemo(() => {\n const entries = [];\n\n if (!email) {\n entries.push({ type: 'validation_error', prop: 'email', kind: 'required' });\n }\n\n if (email.length > 128) {\n entries.push({ type: 'validation_error', prop: 'email', kind: 'maxLength', value: 128 });\n }\n\n if (!password) {\n entries.push({ type: 'validation_error', prop: 'password', kind: 'required' });\n }\n\n if (password.length > 25) {\n entries.push({ type: 'validation_error', prop: 'password', kind: 'maxLength', value: 25 });\n }\n\n return entries;\n }, [email, password]);\n\n const canSignIn = useMemo(() => errors.length === 0, [errors]);\n\n const signIn = useCallback(async () => {\n if (!canSignIn) {\n return;\n }\n\n let data;\n\n try {\n data = await apiClient.signIn({ email, password });\n }\n catch (ex) {\n if (ex.statusCode === 400) {\n throw new SignInError();\n }\n }\n\n login(data);\n }, [apiClient, login, canSignIn, email, password]);\n\n const value = useMemo(\n () => ({\n email,\n setEmail,\n password,\n setPassword,\n canSignIn,\n signIn,\n errors,\n }),\n [email, setEmail, password, setPassword, canSignIn, signIn, errors]\n );\n\n return