1- import { useMutation , useQuery , useQueryClient } from "@tanstack/react-query"
2- import { useNavigate } from "@tanstack/react-router"
3- import { useState } from "react"
1+ "use client" ;
2+
3+ import { useMutation , useQuery , useQueryClient } from "@tanstack/react-query" ;
4+ import { useRouter } from "next/navigation" ;
5+ import { useState } from "react" ;
46
57import {
68 type Body_login_login_access_token as AccessToken ,
@@ -9,59 +11,63 @@ import {
911 type UserPublic ,
1012 type UserRegister ,
1113 UsersService ,
12- } from "@/client"
13- import { handleError } from "@/utils"
14+ } from "@/client" ;
15+ import { handleError } from "@/utils" ;
1416
1517const isLoggedIn = ( ) => {
16- return localStorage . getItem ( "access_token" ) !== null
17- }
18+ return localStorage . getItem ( "access_token" ) !== null ;
19+ } ;
1820
1921const useAuth = ( ) => {
20- const [ error , setError ] = useState < string | null > ( null )
21- const navigate = useNavigate ( )
22- const queryClient = useQueryClient ( )
22+ const [ error , setError ] = useState < string | null > ( null ) ;
23+ const router = useRouter ( ) ;
24+ const queryClient = useQueryClient ( ) ;
25+
2326 const { data : user } = useQuery < UserPublic | null , Error > ( {
2427 queryKey : [ "currentUser" ] ,
2528 queryFn : UsersService . readUserMe ,
2629 enabled : isLoggedIn ( ) ,
27- } )
30+ } ) ;
2831
2932 const signUpMutation = useMutation ( {
3033 mutationFn : ( data : UserRegister ) =>
3134 UsersService . registerUser ( { requestBody : data } ) ,
32-
3335 onSuccess : ( ) => {
34- navigate ( { to : "/login" } )
36+ router . push ( "/signin" ) ;
3537 } ,
3638 onError : ( err : ApiError ) => {
37- handleError ( err )
39+ handleError ( err ) ;
40+ setError ( err . message || "Signup failed" ) ;
3841 } ,
3942 onSettled : ( ) => {
40- queryClient . invalidateQueries ( { queryKey : [ "users" ] } )
43+ queryClient . invalidateQueries ( { queryKey : [ "users" ] } ) ;
4144 } ,
42- } )
45+ } ) ;
4346
4447 const login = async ( data : AccessToken ) => {
4548 const response = await LoginService . loginAccessToken ( {
4649 formData : data ,
47- } )
48- localStorage . setItem ( "access_token" , response . access_token )
49- }
50+ } ) ;
51+ localStorage . setItem ( "access_token" , response . access_token ) ;
52+ queryClient . invalidateQueries ( { queryKey : [ "currentUser" ] } ) ;
53+ } ;
5054
5155 const loginMutation = useMutation ( {
5256 mutationFn : login ,
5357 onSuccess : ( ) => {
54- navigate ( { to : "/" } )
58+ router . push ( "/" ) ;
5559 } ,
5660 onError : ( err : ApiError ) => {
57- handleError ( err )
61+ handleError ( err ) ;
62+ setError ( err . message || "Login failed" ) ;
5863 } ,
59- } )
64+ } ) ;
6065
6166 const logout = ( ) => {
62- localStorage . removeItem ( "access_token" )
63- navigate ( { to : "/login" } )
64- }
67+ localStorage . removeItem ( "access_token" ) ;
68+ queryClient . invalidateQueries ( { queryKey : [ "currentUser" ] } ) ;
69+ router . push ( "/signin" ) ;
70+ } ;
6571
6672 return {
6773 signUpMutation,
@@ -70,8 +76,8 @@ const useAuth = () => {
7076 user,
7177 error,
7278 resetError : ( ) => setError ( null ) ,
73- }
74- }
79+ } ;
80+ } ;
7581
76- export { isLoggedIn }
77- export default useAuth
82+ export { isLoggedIn } ;
83+ export default useAuth ;
0 commit comments