| 
                        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
                        - 'use client'
 - 
 - import { SWRConfig } from 'swr'
 - import { useCallback, useEffect, useState } from 'react'
 - import type { ReactNode } from 'react'
 - import { usePathname, useRouter, useSearchParams } from 'next/navigation'
 - import { fetchSetupStatus } from '@/service/common'
 - import {
 -   EDUCATION_VERIFYING_LOCALSTORAGE_ITEM,
 -   EDUCATION_VERIFY_URL_SEARCHPARAMS_ACTION,
 - } from '@/app/education-apply/constants'
 - 
 - type SwrInitializerProps = {
 -   children: ReactNode
 - }
 - const SwrInitializer = ({
 -   children,
 - }: SwrInitializerProps) => {
 -   const router = useRouter()
 -   const searchParams = useSearchParams()
 -   const consoleToken = decodeURIComponent(searchParams.get('access_token') || '')
 -   const refreshToken = decodeURIComponent(searchParams.get('refresh_token') || '')
 -   const consoleTokenFromLocalStorage = localStorage?.getItem('console_token')
 -   const refreshTokenFromLocalStorage = localStorage?.getItem('refresh_token')
 -   const pathname = usePathname()
 -   const [init, setInit] = useState(false)
 - 
 -   const isSetupFinished = useCallback(async () => {
 -     try {
 -       if (localStorage.getItem('setup_status') === 'finished')
 -         return true
 -       const setUpStatus = await fetchSetupStatus()
 -       if (setUpStatus.step !== 'finished') {
 -         localStorage.removeItem('setup_status')
 -         return false
 -       }
 -       localStorage.setItem('setup_status', 'finished')
 -       return true
 -     }
 -     catch (error) {
 -       console.error(error)
 -       return false
 -     }
 -   }, [])
 - 
 -   useEffect(() => {
 -     (async () => {
 -       const action = searchParams.get('action')
 - 
 -       if (action === EDUCATION_VERIFY_URL_SEARCHPARAMS_ACTION)
 -         localStorage.setItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM, 'yes')
 - 
 -       try {
 -         const isFinished = await isSetupFinished()
 -         if (!isFinished) {
 -           router.replace('/install')
 -           return
 -         }
 -         if (!((consoleToken && refreshToken) || (consoleTokenFromLocalStorage && refreshTokenFromLocalStorage))) {
 -           router.replace('/signin')
 -           return
 -         }
 -         if (searchParams.has('access_token') || searchParams.has('refresh_token')) {
 -           consoleToken && localStorage.setItem('console_token', consoleToken)
 -           refreshToken && localStorage.setItem('refresh_token', refreshToken)
 -           router.replace(pathname)
 -         }
 - 
 -         setInit(true)
 -       }
 -       catch {
 -         router.replace('/signin')
 -       }
 -     })()
 -   }, [isSetupFinished, router, pathname, searchParams, consoleToken, refreshToken, consoleTokenFromLocalStorage, refreshTokenFromLocalStorage])
 - 
 -   return init
 -     ? (
 -       <SWRConfig value={{
 -         shouldRetryOnError: false,
 -         revalidateOnFocus: false,
 -       }}>
 -         {children}
 -       </SWRConfig>
 -     )
 -     : null
 - }
 - 
 - export default SwrInitializer
 
 
  |