Skip to content

Commit

Permalink
feat: 토큰 동기화용 컴포넌트 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
cobocho committed Jul 13, 2024
1 parent 0894463 commit 6a91672
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 11 deletions.
20 changes: 12 additions & 8 deletions apps/extension/components/PopupBox/PopupBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,39 @@ import { PopupBoxContainer } from './PopupBox.styles'
import { SearchBox } from 'components/SearchBox'

export const PopupBox = () => {
const [tokenExist, setTokenExist] = useState<boolean>(false)
const [login, setLogin] = useState<boolean>(false)
const [tokenDone, setTokenDone] = useState<boolean>(false)
const [hasResult, setHasResult] = useState<boolean>(false)

const client = useQueryClient()

const userInfo = useQuery({
...userOptions.userInfo(client),
enabled: tokenExist,
enabled: tokenDone,
})
const vocabularyQuery = useQuery({
...vocabularyOptions.vocabularyInfo(client),
enabled: tokenExist,
enabled: tokenDone,
})

useLayoutEffect(() => {
const setToken = async () => {
const access = await getStorage<string>('vook-access')
const refresh = await getStorage<string>('vook-refresh')
const vookLogin = await getStorage<string>('vook-login')

if (!access || !refresh) {
return
}

if (!vookLogin) {
setLogin(false)
return
}

client.setQueryData(['access'], access)
client.setQueryData(['refresh'], refresh)
setTokenExist(true)
setTokenDone(true)
}

setToken()
Expand Down Expand Up @@ -79,7 +85,7 @@ export const PopupBox = () => {
<SymbolLogo size={24} />
<TypoLogo size="small" />
</div>
{!tokenExist && !login && (
{tokenDone && !login && (
<>
<Text type="body-1" fontWeight="medium">
주제별로 용어집을 관리하고, 간편하게 용어를 검색하세요
Expand All @@ -103,9 +109,7 @@ export const PopupBox = () => {
</Text>
</>
)}
{login && userInfo.isSuccess && (
<SearchBox hasResult={hasResult} setHasResult={setHasResult} />
)}
{login && <SearchBox hasResult={hasResult} setHasResult={setHasResult} />}
</PopupBoxContainer>
)
}
14 changes: 11 additions & 3 deletions apps/extension/content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { useEffect } from 'react'
import { baseFetcher } from '@vook-client/api'

import { getStorage, setStorage } from './utils/storage'
import { getStorage, removeStorage, setStorage } from './utils/storage'
import { ToggleButton } from './components/ToggleButton'
import { SearchWindow } from './components/SearchWindow'
import { useDomRect } from './hooks/useDomRect'
Expand Down Expand Up @@ -39,8 +39,15 @@ function VookContentScript() {
const { isSelected, isOpenSearchWindow, position } = useToggle()

useEffect(() => {
baseFetcher.setUnAuthorizedHandler(() => {
window.open(process.env.PLASMO_PUBLIC_WEB_DOMAIN + '/login', '_blank')
baseFetcher.setUnAuthorizedHandler(async () => {
queryClient.removeQueries({
queryKey: ['access'],
})
queryClient.removeQueries({
queryKey: ['refresh'],
})
await removeStorage('vook-access')
await removeStorage('vook-refresh')
})
}, [])

Expand Down Expand Up @@ -83,6 +90,7 @@ function VookContentScript() {
) {
await setStorage('vook-access', event.data.access)
await setStorage('vook-refresh', event.data.refresh)
await setStorage('vook-login', true)
queryClient.setQueryData(['access'], event.data.access)
queryClient.setQueryData(['refresh'], event.data.refresh)
postSuccessMessage()
Expand Down
2 changes: 2 additions & 0 deletions apps/web/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { pretendard } from '@/styles/fonts'
import { MSWComponent } from '@/mock/MSWComponent'
import { ToastContextProvider } from '@/hooks/useToast'
import { InitialSetting } from '@/components/InitialSetting'
import TokenSender from '@/components/TokenSender/TokenSender'

import { ModalContextProvider } from 'src/hooks/useModal/useModal'

Expand All @@ -26,6 +27,7 @@ const RootLayout = ({
<ModalContextProvider>
<ToastContextProvider>
<InitialSetting />
<TokenSender />
<div>{children}</div>
<div id="modal" />
</ToastContextProvider>
Expand Down
31 changes: 31 additions & 0 deletions apps/web/src/components/TokenSender/TokenSender.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use client'

import Cookies from 'js-cookie'
import { usePathname } from 'next/navigation'
import { useLayoutEffect } from 'react'

const TokenSender = () => {
const location = usePathname()

useLayoutEffect(() => {
const access = Cookies.get('access')
const refresh = Cookies.get('refresh')

if (!access || !refresh) {
return
}

global.window.postMessage(
{
from: 'vook-web',
access,
refresh,
},
'*',
)
}, [location])

return null
}

export default TokenSender

0 comments on commit 6a91672

Please sign in to comment.