@@ -7,44 +7,45 @@ import { useAuthStore } from '@/store/userAuth.store';
7
7
import { getCookie } from '@/utils/cookie' ;
8
8
import { refreshAccessToken } from '@/service/auth' ;
9
9
10
- const Gnb = ( ) => {
11
- const pathname = usePathname ( ) ;
12
- const { isLoggedIn, setIsLoggedIn } = useAuthStore ( ) ;
13
- const [ isLoading , setIsLoading ] = useState ( true ) ;
14
- const router = useRouter ( ) ;
15
-
16
- // checkAndRefreshToken을 useCallback으로 정의
17
- const checkAndRefreshToken = useCallback ( async ( ) => {
18
- const accessToken = getCookie ( 'access_token' ) ;
19
- const refreshToken = getCookie ( 'refresh' ) ;
20
-
21
- if ( ! accessToken && refreshToken ) {
22
- try {
23
- const newAccessToken = await refreshAccessToken ( ) ;
24
- if ( newAccessToken ) {
25
- setIsLoggedIn ( true ) ;
26
- } else {
10
+ const Gnb = ( ) => {
11
+ const pathname = usePathname ( ) ;
12
+ const { isLoggedIn, setIsLoggedIn } = useAuthStore ( ) ;
13
+ const [ isLoading , setIsLoading ] = useState ( true ) ;
14
+ const router = useRouter ( ) ;
15
+ let intervalId : NodeJS . Timeout ;
16
+
17
+ const checkAndRefreshToken = useCallback ( async ( ) => {
18
+ const accessToken = getCookie ( 'access_token' ) ;
19
+ const refreshToken = getCookie ( 'refresh' ) ;
20
+
21
+ if ( ! accessToken && refreshToken ) {
22
+ try {
23
+ const newAccessToken = await refreshAccessToken ( ) ;
24
+ if ( newAccessToken ) {
25
+ setIsLoggedIn ( true ) ;
26
+ } else {
27
+ setIsLoggedIn ( false ) ;
28
+ }
29
+ } catch ( error ) {
30
+ console . error ( '토큰 갱신 실패:' , error ) ;
27
31
setIsLoggedIn ( false ) ;
28
32
}
29
- } catch ( error ) {
30
- console . error ( '토큰 갱신 실패:' , error ) ;
31
- setIsLoggedIn ( false ) ;
33
+ } else {
34
+ setIsLoggedIn ( ! ! accessToken ) ; // accessToken이 있으면 로그인 상태 유지
32
35
}
33
- } else {
34
- setIsLoggedIn ( ! ! accessToken ) ; // accessToken이 있으면 로그인 상태 유지
35
- }
36
- setIsLoading ( false ) ;
37
- } , [ setIsLoggedIn ] ) ;
38
-
39
- useEffect ( ( ) => {
40
- checkAndRefreshToken ( ) ;
41
-
42
- const interval = setInterval ( checkAndRefreshToken , 30 * 1000 ) ;
43
-
44
- return ( ) => clearInterval ( interval ) ;
45
- } , [ checkAndRefreshToken ] ) ;
36
+ setIsLoading ( false ) ;
37
+ } , [ setIsLoggedIn ] ) ;
38
+
39
+ useEffect ( ( ) => {
40
+ checkAndRefreshToken ( ) ;
41
+
42
+ intervalId = setInterval ( checkAndRefreshToken , 30 * 1000 ) ; // 30초마다 실행
43
+
44
+ return ( ) => clearInterval ( intervalId ) ;
45
+ } , [ checkAndRefreshToken ] ) ;
46
+
47
+ if ( isLoading ) return null ;
46
48
47
- if ( isLoading ) return null ;
48
49
49
50
50
51
return (
0 commit comments