Refactor UserContext more async
Separate signup and signin
This commit is contained in:
@@ -5,7 +5,7 @@ import useStyles from '../Styles';
|
|||||||
import { useUserContext } from '../Contexts/UserContext';
|
import { useUserContext } from '../Contexts/UserContext';
|
||||||
|
|
||||||
export default function SignInForm() {
|
export default function SignInForm() {
|
||||||
const { signUp, fetching, setError } = useUserContext();
|
const { signUp, signIn, fetching, setError } = useUserContext();
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const emailEl = useRef(null);
|
const emailEl = useRef(null);
|
||||||
const passwordEl = useRef(null);
|
const passwordEl = useRef(null);
|
||||||
@@ -17,6 +17,7 @@ export default function SignInForm() {
|
|||||||
const password = passwordEl.current.value;
|
const password = passwordEl.current.value;
|
||||||
const confirm = confirmEl.current.value;
|
const confirm = confirmEl.current.value;
|
||||||
await signUp(email, password, confirm);
|
await signUp(email, password, confirm);
|
||||||
|
await signIn(email, password);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
setError(e.message);
|
setError(e.message);
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ export const UserProvider = ({ children }) => {
|
|||||||
if (!token) return;
|
if (!token) return;
|
||||||
const { accessToken: { jwtToken }} = token;
|
const { accessToken: { jwtToken }} = token;
|
||||||
const verifyToken = async (jwt) => {
|
const verifyToken = async (jwt) => {
|
||||||
debugger;
|
const result = await auth.verify(jwt);
|
||||||
const result = await auth.verify(jwtToken);
|
|
||||||
if (result.authenticated) {
|
if (result.authenticated) {
|
||||||
setToken(token);
|
setToken(token);
|
||||||
} else {
|
} else {
|
||||||
@@ -23,44 +22,49 @@ export const UserProvider = ({ children }) => {
|
|||||||
await signOut();
|
await signOut();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
verifyToken(jwtToken);
|
verifyToken();
|
||||||
|
return () => {};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const signIn = (username, password) => {
|
const signIn = async (username, password) => {
|
||||||
|
try {
|
||||||
if (!username) throw new Error('Email is required');
|
if (!username) throw new Error('Email is required');
|
||||||
if (!password) throw new Error('Password is required');
|
if (!password) throw new Error('Password is required');
|
||||||
|
|
||||||
setFetching(true);
|
setFetching(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
return auth.signIn(username, password)
|
|
||||||
.then((result) => {
|
const result = await auth.signIn(username, password);
|
||||||
setFetching(false);
|
|
||||||
if (result.message) throw new Error(result.message);
|
if (result.message) throw new Error(result.message);
|
||||||
signedIn(result);
|
signedIn(result);
|
||||||
return result;
|
}
|
||||||
})
|
catch (error) {
|
||||||
.catch((error) => {
|
|
||||||
setError(error.message);
|
setError(error.message);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
setFetching(false);
|
setFetching(false);
|
||||||
return null;
|
}
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const signUp = (username, password, confirmPassword) => {
|
const signUp = async (username, password, confirmPassword) => {
|
||||||
|
try {
|
||||||
if (!username) throw new Error('Email is required');
|
if (!username) throw new Error('Email is required');
|
||||||
if (!password) throw new Error('Password is required');
|
if (!password) throw new Error('Password is required');
|
||||||
if (password !== confirmPassword) throw new Error('Passwords do not match');
|
if (password !== confirmPassword) throw new Error('Passwords do not match');
|
||||||
|
|
||||||
setFetching(true);
|
setFetching(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
return auth.signUp(username, password)
|
|
||||||
.then((result) => {
|
const result = await auth.signUp(username, password);
|
||||||
if (result.message) throw new Error(result.message);
|
if (result.message) throw new Error(result.message);
|
||||||
return signIn(username, password);
|
}
|
||||||
})
|
catch (error) {
|
||||||
.catch((error) => {
|
|
||||||
setError(error.message);
|
setError(error.message);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
setFetching(false);
|
setFetching(false);
|
||||||
return null;
|
}
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const signOut = async () => {
|
const signOut = async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user