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 const token = data?.login?.jwt;
17 if (token) {
18 setToken(token);
19 setUser(data?.login?.user);
20 } else throw new Error('no_token');
21 };
22
23 return {login, loading};
24};
25
26export default useLoginForm;