diff --git a/src/hooks/use-log-data.ts b/src/hooks/use-log-data.ts
index 9889812ad..6540216b0 100644
--- a/src/hooks/use-log-data.ts
+++ b/src/hooks/use-log-data.ts
@@ -101,7 +101,12 @@ export const useLogData = () => {
async onConnected() {
const logs = await getClashLogs()
if (isMounted()) {
- next(null, clampLogs(filterLogsByLevel(logs, allowedTypes)))
+ next(null, (current) => {
+ if (!current || current.length === 0) {
+ return clampLogs(filterLogsByLevel(logs, allowedTypes))
+ }
+ return current
+ })
}
},
cleanup: clearFlushTimer,
diff --git a/src/pages/_layout.tsx b/src/pages/_layout.tsx
index 410e136cc..de43cd3dc 100644
--- a/src/pages/_layout.tsx
+++ b/src/pages/_layout.tsx
@@ -26,7 +26,7 @@ import relativeTime from 'dayjs/plugin/relativeTime'
import type { CSSProperties } from 'react'
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
-import { Outlet, useNavigate } from 'react-router'
+import { Outlet, useLocation, useNavigate } from 'react-router'
import { SWRConfig } from 'swr'
import iconDark from '@/assets/image/icon_dark.svg?react'
@@ -53,6 +53,7 @@ import {
} from './_layout/hooks'
import { handleNoticeMessage } from './_layout/utils'
import { navItems } from './_routers'
+import LogsPage from './logs'
import 'dayjs/locale/ru'
import 'dayjs/locale/zh-cn'
@@ -120,6 +121,10 @@ const Layout = () => {
const navCollapsed = verge?.collapse_navbar ?? false
const { switchLanguage } = useI18n()
const navigate = useNavigate()
+ const { pathname } = useLocation()
+ const isLogsPage = pathname === '/logs'
+ const logsPageMountedRef = useRef(false)
+ if (isLogsPage) logsPageMountedRef.current = true
const themeReady = useMemo(() => Boolean(theme), [theme])
const [menuUnlocked, setMenuUnlocked] = useState(false)
@@ -477,6 +482,20 @@ const Layout = () => {