frontend/hooks/useLoginForm.ts (view raw)
1import useAuthStore from '../stores/useAuthStore';
2import {useLoginMutation} from '../generated/graphql';
3
4const useLoginForm = (identifier: string, password: string) => {
5 const setToken = useAuthStore(s => s.setToken);
6 const setUser = useAuthStore(s => s.setUser);
7 const [sendCreds, {loading}] = useLoginMutation();
8
9 const login = async () => {
10 const {data} = await sendCreds({
11 variables: {
12 identifier,
13 password,
14 },
15 });
16 if (data?.login?.jwt) {
17 setToken(data.login.jwt);
18 setUser(data.login.user);
19 } else throw new Error('no_token');
20 };
21
22 return {login, loading};
23};
24
25export default useLoginForm;