| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 'use client'import { SWRConfig } from 'swr'import { useEffect, useState } from 'react'import type { ReactNode } from 'react'import { useRouter, useSearchParams } from 'next/navigation'import useRefreshToken from '@/hooks/use-refresh-token'type SwrInitorProps = {  children: ReactNode}const SwrInitor = ({  children,}: SwrInitorProps) => {  const router = useRouter()  const searchParams = useSearchParams()  const consoleToken = searchParams.get('access_token')  const refreshToken = searchParams.get('refresh_token')  const consoleTokenFromLocalStorage = localStorage?.getItem('console_token')  const refreshTokenFromLocalStorage = localStorage?.getItem('refresh_token')  const [init, setInit] = useState(false)  const { getNewAccessToken } = useRefreshToken()  useEffect(() => {    if (!(consoleToken || refreshToken || consoleTokenFromLocalStorage || refreshTokenFromLocalStorage)) {      router.replace('/signin')      return    }    if (consoleTokenFromLocalStorage && refreshTokenFromLocalStorage)      getNewAccessToken(consoleTokenFromLocalStorage, refreshTokenFromLocalStorage)    if (consoleToken && refreshToken) {      localStorage.setItem('console_token', consoleToken)      localStorage.setItem('refresh_token', refreshToken)      getNewAccessToken(consoleToken, refreshToken).then(() => {        router.replace('/apps', { forceOptimisticNavigation: false } as any)      }).catch(() => {        router.replace('/signin')      })    }    setInit(true)  }, [])  return init    ? (      <SWRConfig value={{        shouldRetryOnError: false,        revalidateOnFocus: false,      }}>        {children}      </SWRConfig>    )    : null}export default SwrInitor
 |