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