From fdb1830e923a99075543cea6fbd45b7fa09673b7 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Tue, 10 Jan 2023 19:57:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=AA=E4=BA=BA=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E9=80=89=E9=A1=B9=E5=A2=9E=E5=8A=A0=E8=AE=B0?= =?UTF-8?q?=E5=BF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/web/src/hooks/useUserPreference.ts | 5 ++++ .../routes/Main/Content/Personal/index.tsx | 24 +++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) 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(() => { /> ))} - } /> + + } + /> );