diff --git a/client/web/src/hooks/useUserPreference.ts b/client/web/src/hooks/useUserPreference.ts index 6b256172..4bd7c07c 100644 --- a/client/web/src/hooks/useUserPreference.ts +++ b/client/web/src/hooks/useUserPreference.ts @@ -2,6 +2,11 @@ import { useSessionStorageState } from './useSessionStorageState'; import { useMemoizedFn } from 'tailchat-shared'; interface UserSessionPerference { + /** + * 用户最后访问个人的面板地址 + * 用于切换回个人菜单时回到最近一个 + */ + personLastVisitPanelUrl?: string; /** * 用户最后访问群组的面板id * 用于切换群组时回到最后一个 diff --git a/client/web/src/routes/Main/Content/Personal/index.tsx b/client/web/src/routes/Main/Content/Personal/index.tsx index fba07a53..de8a584f 100644 --- a/client/web/src/routes/Main/Content/Personal/index.tsx +++ b/client/web/src/routes/Main/Content/Personal/index.tsx @@ -1,5 +1,7 @@ +import { useUserSessionPreference } from '@/hooks/useUserPreference'; import { pluginCustomPanel } from '@/plugin/common'; -import React from 'react'; +import React, { useEffect } from 'react'; +import { useLocation } from 'react-router'; import { Navigate, Route, Routes } from 'react-router-dom'; import { PageContent } from '../PageContent'; import { PersonalConverse } from './Converse'; @@ -8,6 +10,15 @@ import { PluginsPanel } from './Plugins'; import { PersonalSidebar } from './Sidebar'; export const Personal: React.FC = React.memo(() => { + const [lastVisitPanelUrl, setLastVisitPanelUrl] = useUserSessionPreference( + 'personLastVisitPanelUrl' + ); + const location = useLocation(); + + useEffect(() => { + setLastVisitPanelUrl(location.pathname); + }, [location.pathname]); + return ( }> @@ -24,7 +35,16 @@ export const Personal: React.FC = React.memo(() => { /> ))} - } /> + + } + /> );