wwf
4 天以前 73210a869048d6468b55717660d0ca558d0c2aab
app/components/swr-initor.tsx
@@ -4,11 +4,8 @@
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'
import { fetchSetupStatus, regAndLogin } from '@/service/common'
import type { RegAndLoginResponse } from '@/models/common'
type SwrInitorProps = {
  children: ReactNode
@@ -20,6 +17,7 @@
  const searchParams = useSearchParams()
  const consoleToken = decodeURIComponent(searchParams.get('access_token') || '')
  const refreshToken = decodeURIComponent(searchParams.get('refresh_token') || '')
  const userId = decodeURIComponent(searchParams.get('userId') || '')
  const consoleTokenFromLocalStorage = localStorage?.getItem('console_token')
  const refreshTokenFromLocalStorage = localStorage?.getItem('refresh_token')
  const pathname = usePathname()
@@ -45,30 +43,36 @@
  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
        let currentUserId = ''
        if (userId) {
          currentUserId = userId
          localStorage.setItem('userId', userId)
        }
        if (!((consoleToken && refreshToken) || (consoleTokenFromLocalStorage && refreshTokenFromLocalStorage))) {
          router.replace('/signin')
          return
        else {
          currentUserId = localStorage.getItem('userId') || ''
        }
        if (searchParams.has('access_token') || searchParams.has('refresh_token')) {
          consoleToken && localStorage.setItem('console_token', consoleToken)
          refreshToken && localStorage.setItem('refresh_token', refreshToken)
          router.replace(pathname)
        }
        const response: RegAndLoginResponse = await regAndLogin({ body: { userId: currentUserId } })
        localStorage.setItem('console_token', response.data.access_token)
        localStorage.setItem('refresh_token', response.data.refresh_token)
        setInit(true)
        // 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 {
      catch (error) {
        router.replace('/signin')
      }
    })()