Skip to content

Commit e32d2c9

Browse files
committed
fix
1 parent 6ce4c0c commit e32d2c9

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

apps/extension/components/PopupBox/PopupBox.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useQuery, useQueryClient } from '@tanstack/react-query'
55
import { useEffect, useLayoutEffect, useState } from 'react'
66
import { baseFetcher, userOptions, vocabularyOptions } from '@vook-client/api'
77

8-
import { getStorage, removeStorage } from '../../utils/storage'
8+
import { getStorage, removeStorage, setStorage } from '../../utils/storage'
99

1010
import { LogoutButton, PopupBoxContainer } from './PopupBox.styles'
1111

@@ -76,7 +76,14 @@ export const PopupBox = () => {
7676
}
7777
},
7878
)
79-
}, [])
79+
80+
baseFetcher.setTokenRefreshHandler(async (access, refresh) => {
81+
client.setQueryData(['access'], access)
82+
client.setQueryData(['refresh'], refresh)
83+
await setStorage('vook-access', access)
84+
await setStorage('vook-refresh', refresh)
85+
})
86+
}, [client])
8087

8188
const onClickLogin = () => {
8289
window.open(

apps/extension/content.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import styleText from 'data-text:@vook-client/design-system/style.css'
33
import createCache from '@emotion/cache'
44
import { CacheProvider, Global } from '@emotion/react'
55
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
6-
import { useEffect } from 'react'
6+
import { useEffect, useState } from 'react'
77
import { baseFetcher } from '@vook-client/api'
88

99
import { getStorage, removeStorage, setStorage } from './utils/storage'
@@ -35,6 +35,7 @@ const queryClient = new QueryClient({
3535
})
3636

3737
function VookContentScript() {
38+
const [login, setLogin] = useState(false)
3839
useDomRect()
3940
const { isSelected, isOpenSearchWindow, position } = useToggle()
4041

@@ -49,13 +50,26 @@ function VookContentScript() {
4950
await removeStorage('vook-access')
5051
await removeStorage('vook-refresh')
5152
})
53+
54+
baseFetcher.setTokenRefreshHandler(async (access, refresh) => {
55+
queryClient.setQueryData(['access'], access)
56+
queryClient.setQueryData(['refresh'], refresh)
57+
await setStorage('vook-access', access)
58+
await setStorage('vook-refresh', refresh)
59+
})
5260
}, [])
5361

5462
useEffect(() => {
5563
const setToken = async () => {
5664
const access = await getStorage<string>('vook-access')
5765
const refresh = await getStorage<string>('vook-refresh')
5866

67+
if (!access || !refresh) {
68+
setLogin(false)
69+
return
70+
}
71+
72+
setLogin(true)
5973
queryClient.setQueryData(['access'], access)
6074
queryClient.setQueryData(['refresh'], refresh)
6175
}
@@ -91,8 +105,6 @@ function VookContentScript() {
91105
await setStorage('vook-access', event.data.access)
92106
await setStorage('vook-refresh', event.data.refresh)
93107

94-
console.log(event.data)
95-
96108
queryClient.setQueryData(['access'], event.data.access)
97109
queryClient.setQueryData(['refresh'], event.data.refresh)
98110

@@ -106,7 +118,7 @@ function VookContentScript() {
106118
<CacheProvider value={styleCache}>
107119
<Global styles={reset} />
108120
<QueryClientProvider client={queryClient}>
109-
{isSelected && <ToggleButton position={position} />}
121+
{login && isSelected && <ToggleButton position={position} />}
110122
{isOpenSearchWindow && <SearchWindow />}
111123
</QueryClientProvider>
112124
</CacheProvider>

packages/api/src/lib/fetcher.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ export class Fetcher {
1616

1717
private unAuthorizedHandler: () => void = () => {}
1818

19+
private tokenRefreshHandler: (access: string, refresh: string) => void =
20+
async () => {}
21+
1922
private errorHandler: (error: Error) => void = () => {}
2023

2124
public constructor(baseUrl: string) {
@@ -26,6 +29,12 @@ export class Fetcher {
2629
this.errorHandler = handler
2730
}
2831

32+
public setTokenRefreshHandler(
33+
handler: (access: string, refresh: string) => void,
34+
) {
35+
this.tokenRefreshHandler = handler
36+
}
37+
2938
public setUnAuthorizedHandler(handler: () => void) {
3039
this.unAuthorizedHandler = handler
3140
}
@@ -139,6 +148,8 @@ export class Fetcher {
139148
throw new Error('토큰 갱신에 실패하였습니다.')
140149
}
141150

151+
this.tokenRefreshHandler(newAccessToken, newRefreshToken)
152+
142153
Cookies.set('access', newAccessToken, {
143154
expires: new Date('2038-01-19T03:14:07.000Z'),
144155
})

0 commit comments

Comments
 (0)