import { useEffect, useState, type FC } from 'react'
import './assets/fonts/irancell/style.css'
import { BrowserRouter } from 'react-router-dom'
import MainRouter from './router/MainRouter'
import i18next from 'i18next'
import FaJson from '@/langs/fa.json'
import { I18nextProvider } from 'react-i18next'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import ToastContainer from './components/Toast'
import { getToken, setRefreshToken, setToken } from './config/func'

i18next.init({
  interpolation: { escapeValue: false },
  lng: 'fa',
  resources: {
    fa: {
      global: FaJson
    }
  }
})

const queryClient = new QueryClient()

const App: FC = () => {

  const [isLogin, setIsLogin] = useState<'checking' | 'isLogin' | 'isNotLogin'>('checking')


  useEffect(() => {
    // استخراج توکن‌ها از URL در صورت وجود
    const urlParams = new URLSearchParams(window.location.search)
    const tokenFromUrl = urlParams.get('token')
    const refreshTokenFromUrl = urlParams.get('refreshToken')

    if (tokenFromUrl && refreshTokenFromUrl) {
      // ذخیره توکن‌ها (جایگزین کردن توکن‌های قبلی اگر وجود داشته باشند)
      setToken(tokenFromUrl)
      setRefreshToken(refreshTokenFromUrl)

      // حذف پارامترها از URL
      const newUrl = window.location.pathname
      window.history.replaceState({}, '', newUrl)

      // تنظیم وضعیت لاگین و هدایت به صفحه اصلی
      setIsLogin('isLogin')
      // if (window.location.pathname === Paths.auth.login) {
      //   window.location.href = Paths.home
      // }
      return
    }

    const token = getToken()
    if (token) {
      setIsLogin('isLogin')
    } else {
      setIsLogin('isNotLogin')
      if (window.location.href.split('auth').length === 1) {
        // window.location.href = Paths.auth.login
      }
    }

  }, [])

  console.log('isLogin', isLogin);


  return (
    <BrowserRouter>
      <I18nextProvider i18n={i18next}>
        <QueryClientProvider client={queryClient}>
          <MainRouter />
          <ToastContainer />
        </QueryClientProvider>
      </I18nextProvider>
    </BrowserRouter>
  )
}

export default App