diff --git a/src/App.tsx b/src/App.tsx index 9137c3d..6ad13ad 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,70 +1,78 @@ -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' -import "react-multi-date-picker/styles/layouts/mobile.css" +import FaJson from "@/langs/fa.json"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import i18next from "i18next"; +import { useEffect, useState, type FC } from "react"; +import { I18nextProvider } from "react-i18next"; +import "react-multi-date-picker/styles/layouts/mobile.css"; +import { BrowserRouter } from "react-router-dom"; +import "./assets/fonts/irancell/style.css"; +import ToastContainer from "./components/Toast"; +import { getToken, setRefreshToken, setToken } from "./config/func"; +import { Paths } from "./config/Paths"; +import MainRouter from "./router/MainRouter"; +const isViewerPathname = (pathname: string) => { + const viewerPathPrefix = `${Paths.viewer}/`; + return ( + pathname.startsWith(viewerPathPrefix) && + pathname.length > viewerPathPrefix.length + ); +}; i18next.init({ interpolation: { escapeValue: false }, - lng: 'fa', + lng: "fa", resources: { fa: { - global: FaJson - } - } -}) + global: FaJson, + }, + }, +}); -const queryClient = new QueryClient() +const queryClient = new QueryClient(); const App: FC = () => { - - const [isLogin, setIsLogin] = useState<'checking' | 'isLogin' | 'isNotLogin'>('checking') - + 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') + const urlParams = new URLSearchParams(window.location.search); + const tokenFromUrl = urlParams.get("token"); + const refreshTokenFromUrl = urlParams.get("refreshToken"); if (tokenFromUrl && refreshTokenFromUrl) { // ذخیره توکن‌ها (جایگزین کردن توکن‌های قبلی اگر وجود داشته باشند) - setToken(tokenFromUrl) - setRefreshToken(refreshTokenFromUrl) + setToken(tokenFromUrl); + setRefreshToken(refreshTokenFromUrl); // حذف پارامترها از URL - const newUrl = window.location.pathname - window.history.replaceState({}, '', newUrl) + const newUrl = window.location.pathname; + window.history.replaceState({}, "", newUrl); // تنظیم وضعیت لاگین و هدایت به صفحه اصلی - setIsLogin('isLogin') + setIsLogin("isLogin"); // if (window.location.pathname === Paths.auth.login) { // window.location.href = Paths.home // } - return + return; } - const token = getToken() + const token = getToken(); if (token) { - setIsLogin('isLogin') + setIsLogin("isLogin"); + } else if (isViewerPathname(window.location.pathname)) { + setIsLogin("isLogin"); } else { - setIsLogin('isNotLogin') - if (window.location.href.split('auth').length === 1) { + setIsLogin("isNotLogin"); + if (window.location.href.split("auth").length === 1) { // window.location.href = Paths.auth.login } } + }, []); - }, []) - - console.log('isLogin', isLogin); - + console.log("isLogin", isLogin); return ( @@ -75,7 +83,7 @@ const App: FC = () => { - ) -} + ); +}; -export default App \ No newline at end of file +export default App;