Files
imphnen-frontend-service/libs/utils/src/hooks/use-session.ts
T

38 lines
955 B
TypeScript
Raw Normal View History

2025-05-23 00:28:29 +07:00
import { TLoginRequest, usePostLogin } from '@imphnen-frontend-service/service';
import { useAuthStore } from './';
import { toast } from 'sonner';
import { useNavigate } from 'react-router';
2025-04-03 12:21:10 +07:00
export const useSession = () => {
2025-05-23 00:28:29 +07:00
const navigate = useNavigate();
const { mutate, isPending } = usePostLogin();
const { setLoading, setSession, clearSession, session } = useAuthStore();
const signIn = (payload: TLoginRequest) => {
setLoading(true);
mutate(payload, {
onSuccess: (data) => {
toast.success('Login sukses');
setSession(data.data);
navigate(0);
},
onError: (err) => {
toast.error(
err?.response?.data?.message ??
'Terjadi Kesalahan yang tidak diketahui'
);
clearSession();
},
});
2025-04-03 12:21:10 +07:00
};
const signOut = () => {
2025-05-23 00:28:29 +07:00
clearSession();
navigate(0);
2025-04-03 12:21:10 +07:00
};
return {
session,
2025-05-23 00:28:29 +07:00
signIn,
2025-04-03 12:21:10 +07:00
signOut,
2025-05-23 00:28:29 +07:00
isLoading: isPending,
2025-04-03 12:21:10 +07:00
};
};