From 997e4a1edda85b57c0b1a08f5d03826375f2343a Mon Sep 17 00:00:00 2001 From: jialin Date: Wed, 26 Mar 2025 17:30:12 +0800 Subject: [PATCH] chore: cache resources active tab --- src/atoms/tab-active.ts | 20 +++++++++++++++++++ src/components/delete-modal/index.tsx | 1 + src/hooks/use-tab-active.ts | 19 ++++++++++++++++++ .../resources/components/model-files.tsx | 4 ++-- src/pages/resources/index.tsx | 7 ++++++- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 src/atoms/tab-active.ts create mode 100644 src/hooks/use-tab-active.ts diff --git a/src/atoms/tab-active.ts b/src/atoms/tab-active.ts new file mode 100644 index 00000000..67a6a98a --- /dev/null +++ b/src/atoms/tab-active.ts @@ -0,0 +1,20 @@ +import { getDefaultStore } from 'jotai'; +import { atomWithStorage } from 'jotai/utils'; + +export const tabActiveAtom = atomWithStorage>( + 'tabActiveStatus', + new Map() +); + +export const setActiveStatus = (key: string, value: any) => { + const store = getDefaultStore(); + const cache = store.get(tabActiveAtom); + cache.set(key, value); + store.set(tabActiveAtom, cache); +}; + +export const getActiveStatus = (key: string) => { + const store = getDefaultStore(); + const cache = store.get(tabActiveAtom); + return cache.get(key); +}; diff --git a/src/components/delete-modal/index.tsx b/src/components/delete-modal/index.tsx index da907b3c..15d1d58e 100644 --- a/src/components/delete-modal/index.tsx +++ b/src/components/delete-modal/index.tsx @@ -21,6 +21,7 @@ const CheckboxWrapper = styled.div` align-items: center; .check-text { font-weight: 700; + color: var(--ant-color-warning); } `; diff --git a/src/hooks/use-tab-active.ts b/src/hooks/use-tab-active.ts new file mode 100644 index 00000000..3ea9c150 --- /dev/null +++ b/src/hooks/use-tab-active.ts @@ -0,0 +1,19 @@ +import { getActiveStatus, setActiveStatus } from '@/atoms/tab-active'; + +const tabsMap = { + resources: 'resources' +}; + +export default function useTabActive() { + const setTabActive = (key: string, value: any) => { + setActiveStatus(key, value); + }; + const getTabActive = (key: string) => { + return getActiveStatus(key); + }; + return { + setTabActive, + getTabActive, + tabsMap + }; +} diff --git a/src/pages/resources/components/model-files.tsx b/src/pages/resources/components/model-files.tsx index 7d8d2f20..b0ae1a7e 100644 --- a/src/pages/resources/components/model-files.tsx +++ b/src/pages/resources/components/model-files.tsx @@ -306,7 +306,7 @@ const ModelFiles = () => { handleDelete( { ...record, - name: record.local_path + name: record.resolved_paths?.[0] }, { checkConfig: { @@ -488,8 +488,8 @@ const ModelFiles = () => { type="link" btnStyle={{ width: 18, paddingInline: 2 }} > - {renderParts(record)} + {renderParts(record)} ) ); diff --git a/src/pages/resources/index.tsx b/src/pages/resources/index.tsx index f0d5259f..8547a7a1 100644 --- a/src/pages/resources/index.tsx +++ b/src/pages/resources/index.tsx @@ -1,3 +1,4 @@ +import useTabActive from '@/hooks/use-tab-active'; import { PageContainer } from '@ant-design/pro-components'; import { useIntl } from '@umijs/max'; import type { TabsProps } from 'antd'; @@ -14,7 +15,10 @@ const Wrapper = styled.div` `; const Resources = () => { - const [activeKey, setActiveKey] = useState('workers'); + const { setTabActive, getTabActive, tabsMap } = useTabActive(); + const [activeKey, setActiveKey] = useState( + getTabActive(tabsMap.resources) || 'workers' + ); const intl = useIntl(); @@ -38,6 +42,7 @@ const Resources = () => { const handleChangeTab = useCallback((key: string) => { setActiveKey(key); + setTabActive(tabsMap.resources, key); }, []); return (