Removed error from contexts

This commit is contained in:
Ceferino Patino 2022-08-11 11:56:57 -05:00
commit d2e5a62852
8 changed files with 24 additions and 46 deletions

View file

@ -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>
);

View file

@ -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,
};

View file

@ -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);

View file

@ -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');
}
};

View file

@ -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('/');
}

View file

@ -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(() => {

View file

@ -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');

View file

@ -22,6 +22,8 @@ export default function SearchBarController() {
replace: true,
});
}
setSearch(() => '');
};
return <SearchBar value={search} onChange={onChange} onSubmit={onSubmit} />;