Removed error from contexts
This commit is contained in:
parent
78339a3f9a
commit
d2e5a62852
8 changed files with 24 additions and 46 deletions
|
|
@ -1,12 +1,10 @@
|
|||
import { UserProvider, FormProvider, ErrorProvider, ModeProvider } from '.';
|
||||
import { UserProvider, FormProvider, ModeProvider } from '.';
|
||||
|
||||
export default function ContextProvider({ children }) {
|
||||
return (
|
||||
<UserProvider>
|
||||
<FormProvider>
|
||||
<ModeProvider>
|
||||
<ErrorProvider>{children}</ErrorProvider>
|
||||
</ModeProvider>
|
||||
<ModeProvider>{children}</ModeProvider>
|
||||
</FormProvider>
|
||||
</UserProvider>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import ContextProvider from './ContextProvider';
|
|||
import QuestionProvider, { useQuestion } from './QuestionContext';
|
||||
import UserProvider, { useUser } from './UserContext';
|
||||
import FormProvider, { useForm } from './FormContext';
|
||||
import ErrorProvider, { useError } from './ErrorContext';
|
||||
import ModeProvider, { useMode } from './ModeContext';
|
||||
|
||||
export {
|
||||
|
|
@ -13,8 +12,6 @@ export {
|
|||
useUser,
|
||||
FormProvider,
|
||||
useForm,
|
||||
ErrorProvider,
|
||||
useError,
|
||||
ModeProvider,
|
||||
useMode,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { useNavigate } from 'react-router-dom';
|
||||
import { useUser, useError } from 'contexts';
|
||||
import { useUser } from 'contexts';
|
||||
import { Form } from 'controllers/FormControllers';
|
||||
import { loginFields } from 'services/fields';
|
||||
import { loginSchema } from 'services/schemas';
|
||||
|
|
@ -7,29 +7,29 @@ import { getLoginAttempts, incrementLoginAttempts, login } from 'services/userSe
|
|||
|
||||
export default function LoginFormController() {
|
||||
const { setUserData } = useUser();
|
||||
const { setError } = useError();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const validateLogin = async ({ username, password }) => {
|
||||
if (username && password) {
|
||||
const formatTime = time => `${Math.floor(time / 60000)} minutes, ${Math.floor((time % 60000) / 1000)} seconds`
|
||||
{
|
||||
const { loginTimeout } = getLoginAttempts();
|
||||
if (loginTimeout)
|
||||
return { password: `0 attempts remaining, wait ${formatTime(loginTimeout)}` };
|
||||
}
|
||||
const formatTime = (time) =>
|
||||
`${Math.floor(time / 60000)} minutes, ${Math.floor((time % 60000) / 1000)} seconds`;
|
||||
|
||||
const { loginTimeout } = getLoginAttempts();
|
||||
if (loginTimeout)
|
||||
return { password: `0 attempts remaining, wait ${formatTime(loginTimeout)}` };
|
||||
|
||||
const { error, status, user } = await login({ username, password });
|
||||
if (error) {
|
||||
setError(error);
|
||||
if (status === 403) {
|
||||
incrementLoginAttempts();
|
||||
const { loginAttempts, loginTimeout } = getLoginAttempts();
|
||||
return {
|
||||
username: 'Username or password incorrect',
|
||||
password: loginAttempts >= 3
|
||||
? `0 attempts remaining, wait ${formatTime(loginTimeout)}`
|
||||
: `${3 - loginAttempts} attempts remaining`
|
||||
}
|
||||
password:
|
||||
loginAttempts >= 3
|
||||
? `0 attempts remaining, wait ${formatTime(loginTimeout)}`
|
||||
: `${3 - loginAttempts} attempts remaining`,
|
||||
};
|
||||
}
|
||||
} else {
|
||||
setUserData(user);
|
||||
|
|
|
|||
|
|
@ -2,18 +2,14 @@ import { Form } from 'controllers/FormControllers';
|
|||
import { registerFields } from 'services/fields';
|
||||
import { registerSchema } from 'services/schemas';
|
||||
import { register } from 'services/userServices';
|
||||
import { useError } from 'contexts';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
||||
export default function RegisterFormController() {
|
||||
const { setError } = useError();
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
const validateRegister = async ({ username, email, password }) => {
|
||||
const { error, status } = await register({ username, email, password });
|
||||
if (error) {
|
||||
setError(error);
|
||||
switch (error) {
|
||||
case 'an item with that "username" already exists':
|
||||
return { username: 'Username already exists' };
|
||||
|
|
@ -23,8 +19,7 @@ export default function RegisterFormController() {
|
|||
return;
|
||||
}
|
||||
} else {
|
||||
if (status === 201)
|
||||
navigate('/users/login');
|
||||
if (status === 201) navigate('/users/login');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { useUser, useError } from 'contexts';
|
||||
import { useUser } from 'contexts';
|
||||
import { Form } from 'controllers/FormControllers';
|
||||
import { updateUser } from 'services/userServices';
|
||||
import { patchFields } from 'services/fields';
|
||||
|
|
@ -7,14 +7,11 @@ import { useNavigate } from 'react-router-dom';
|
|||
|
||||
export default function UpdateFormController() {
|
||||
const { setUserData } = useUser();
|
||||
const { setError } = useError();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const update = async ({ email, password }) => {
|
||||
const { error } = await updateUser({ email, password });
|
||||
if (error) {
|
||||
setError(error);
|
||||
} else {
|
||||
if (!error) {
|
||||
setUserData((initial) => ({ ...initial, email }));
|
||||
navigate('/');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,14 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { Box } from '@mui/material';
|
||||
import { useError } from 'contexts';
|
||||
import { getMail } from 'services/mailServices';
|
||||
import { MailUnit } from 'components';
|
||||
|
||||
export default function InboxController() {
|
||||
const { setError } = useError();
|
||||
const [mail, setMail] = useState([]);
|
||||
|
||||
const fetchMail = async () => {
|
||||
const { error, messages } = await getMail();
|
||||
|
||||
if (error) {
|
||||
setError(error);
|
||||
} else {
|
||||
setMail(messages);
|
||||
}
|
||||
const { messages } = await getMail();
|
||||
setMail(messages);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { useUser, useError, useMode } from 'contexts';
|
||||
import { useUser, useMode } from 'contexts';
|
||||
import { Navbar, MobileNavbar } from 'components';
|
||||
import { logout } from 'services/userServices';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
|
@ -10,7 +10,6 @@ export default function NavbarController() {
|
|||
const navigate = useNavigate();
|
||||
const { userData, setUserData } = useUser();
|
||||
const { mode, setMode } = useMode();
|
||||
const { setError } = useError();
|
||||
|
||||
const [open, setOpen] = useState(false);
|
||||
|
||||
|
|
@ -24,10 +23,7 @@ export default function NavbarController() {
|
|||
const md = useMediaQuery((theme) => theme.breakpoints.only('md'));
|
||||
|
||||
const logoutUser = async () => {
|
||||
const { error } = await logout();
|
||||
if (error) {
|
||||
setError(error);
|
||||
}
|
||||
await logout();
|
||||
Cookies.remove('token');
|
||||
setUserData({});
|
||||
navigate('/users/login');
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ export default function SearchBarController() {
|
|||
replace: true,
|
||||
});
|
||||
}
|
||||
|
||||
setSearch(() => '');
|
||||
};
|
||||
|
||||
return <SearchBar value={search} onChange={onChange} onSubmit={onSubmit} />;
|
||||
|
|
|
|||
Reference in a new issue