diff --git a/web/src/App.tsx b/web/src/App.tsx index 848e585cf5..09e55e4b42 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,10 +1,9 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import { BrowserRouter, useRoutes } from "react-router-dom"; +import { BrowserRouter } from "react-router-dom"; import { ChakraProvider } from "@chakra-ui/react"; import { css, Global } from "@emotion/react"; import { loader } from "@monaco-editor/react"; -import { wrapUseRoutes } from "@sentry/react"; import * as Sentry from "@sentry/react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { ClickToComponent } from "click-to-react-component"; @@ -17,7 +16,7 @@ import useSiteSettingStore from "./pages/siteSetting"; import theme from "./chakraTheme"; import darkTheme from "./chakraThemeDark"; import { CHAKRA_UI_COLOR_MODE_KEY } from "./constants"; -import routes from "./routes"; +import RouteElement from "./routes"; import "simplebar-react/dist/simplebar.min.css"; import "./App.css"; @@ -28,13 +27,6 @@ const GlobalStyles = css` } `; -const useSentryRoutes = wrapUseRoutes(useRoutes); - -function RouteElement() { - const element = useSentryRoutes(routes as any); - return element; -} - // Create a client const queryClient = new QueryClient({ defaultOptions: { diff --git a/web/src/pages/siteSetting.ts b/web/src/pages/siteSetting.ts index 5a174877f3..56a5f05d20 100644 --- a/web/src/pages/siteSetting.ts +++ b/web/src/pages/siteSetting.ts @@ -16,7 +16,8 @@ type SITE_KEY = | "laf_wechat_url" | "laf_status_url" | "laf_doc_url" - | "laf_about_us_url"; + | "laf_about_us_url" + | "enable_web_promo_page"; type State = { siteSettings: { diff --git a/web/src/routes/index.tsx b/web/src/routes/index.tsx index 933cb7d70e..4bca186938 100644 --- a/web/src/routes/index.tsx +++ b/web/src/routes/index.tsx @@ -4,6 +4,9 @@ import AuthLayout from "@/layouts/Auth"; import BasicLayout from "@/layouts/Basic"; import FunctionLayout from "@/layouts/Function"; import TemplateLayout from "@/layouts/Template"; +import useSiteSettingStore from "@/pages/siteSetting"; +import { useRoutes } from "react-router-dom"; +import { wrapUseRoutes } from "@sentry/react"; const route404 = { path: "*", @@ -46,7 +49,6 @@ const routes = [ }, { path: "/bind", - // element: , auth: false, children: [ { @@ -147,7 +149,27 @@ function LazyElement(props: any) { } function dealRoutes(routesArr: any) { + const { siteSettings } = useSiteSettingStore(); if (routesArr && Array.isArray(routesArr) && routesArr.length > 0) { + if (siteSettings.enable_web_promo_page?.value === "false") { + for (let i = 0; i < routesArr.length; i++) { + const route = routesArr[i]; + if (route.index) { + routesArr[i] = { + path: "/", + element: , + auth: true, + children: [ + { + path: "/", + element: () => import("@/pages/home/index"), + }, + ], + }; + } + } + } + routesArr.forEach((route) => { if (route.element && typeof route.element == "function") { const importFunc = route.element; @@ -159,6 +181,13 @@ function dealRoutes(routesArr: any) { }); } } -dealRoutes(routes); -export default routes; +function RouteElement() { + const useSentryRoutes = wrapUseRoutes(useRoutes); + + dealRoutes(routes); + const element = useSentryRoutes(routes as any); + return element; +} + +export default RouteElement;