diff --git a/src/app/@modal/chat/(.)settings/modal/features/useCategory.tsx b/src/app/@modal/chat/(.)settings/modal/features/useCategory.tsx
index b1a3bc7e71a1d..1fcff5d249f68 100644
--- a/src/app/@modal/chat/(.)settings/modal/features/useCategory.tsx
+++ b/src/app/@modal/chat/(.)settings/modal/features/useCategory.tsx
@@ -4,7 +4,9 @@ import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import type { MenuProps } from '@/components/Menu';
+import { INBOX_SESSION_ID } from '@/const/session';
import { ChatSettingsTabs } from '@/store/global/initialState';
+import { useSessionStore } from '@/store/session';
interface UseCategoryOptions {
mobile?: boolean;
@@ -13,41 +15,43 @@ interface UseCategoryOptions {
export const useCategory = ({ mobile }: UseCategoryOptions = {}) => {
const { t } = useTranslation('setting');
const iconSize = mobile ? { fontSize: 20 } : undefined;
+ const isInbox = useSessionStore((s) => s.activeId === INBOX_SESSION_ID);
const cateItems: MenuProps['items'] = useMemo(
- () => [
- {
- icon: ,
- key: ChatSettingsTabs.Meta,
- label: t('agentTab.meta'),
- },
- {
- icon: ,
- key: ChatSettingsTabs.Prompt,
- label: t('agentTab.prompt'),
- },
- {
- icon: ,
- key: ChatSettingsTabs.Chat,
- label: t('agentTab.chat'),
- },
- {
- icon: ,
- key: ChatSettingsTabs.Modal,
- label: t('agentTab.modal'),
- },
- {
- icon: ,
- key: ChatSettingsTabs.TTS,
- label: t('agentTab.tts'),
- },
- {
- icon: ,
- key: ChatSettingsTabs.Plugin,
- label: t('agentTab.plugin'),
- },
- ],
- [t],
+ () =>
+ [
+ !isInbox && {
+ icon: ,
+ key: ChatSettingsTabs.Meta,
+ label: t('agentTab.meta'),
+ },
+ {
+ icon: ,
+ key: ChatSettingsTabs.Prompt,
+ label: t('agentTab.prompt'),
+ },
+ {
+ icon: ,
+ key: ChatSettingsTabs.Chat,
+ label: t('agentTab.chat'),
+ },
+ {
+ icon: ,
+ key: ChatSettingsTabs.Modal,
+ label: t('agentTab.modal'),
+ },
+ {
+ icon: ,
+ key: ChatSettingsTabs.TTS,
+ label: t('agentTab.tts'),
+ },
+ {
+ icon: ,
+ key: ChatSettingsTabs.Plugin,
+ label: t('agentTab.plugin'),
+ },
+ ].filter(Boolean) as MenuProps['items'],
+ [t, isInbox],
);
return cateItems;
diff --git a/src/features/AgentSetting/AgentMeta/index.tsx b/src/features/AgentSetting/AgentMeta/index.tsx
index 38691855978f0..48d519a95b8d1 100644
--- a/src/features/AgentSetting/AgentMeta/index.tsx
+++ b/src/features/AgentSetting/AgentMeta/index.tsx
@@ -10,6 +10,7 @@ import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { FORM_STYLE } from '@/const/layoutTokens';
+import { INBOX_SESSION_ID } from '@/const/session';
import { useUserStore } from '@/store/user';
import { settingsSelectors } from '@/store/user/selectors';
@@ -31,9 +32,11 @@ const AgentMeta = memo(() => {
s.autocompleteAllMeta,
]);
const locale = useUserStore(settingsSelectors.currentLanguage);
- const loading = useStore((s) => s.autocompleteLoading);
+ const [isInbox, loading] = useStore((s) => [s.id === INBOX_SESSION_ID, s.autocompleteLoading]);
const meta = useStore((s) => s.meta, isEqual);
+ if (isInbox) return;
+
const basic = [
{
Render: AutoGenerateInput,
@@ -132,4 +135,4 @@ const AgentMeta = memo(() => {
return
;
});
-export default AgentMeta;
\ No newline at end of file
+export default AgentMeta;
diff --git a/src/hooks/useInterceptingRoutes.test.ts b/src/hooks/useInterceptingRoutes.test.ts
index 8cb3f9ebbcd8b..6e51c5b05814d 100644
--- a/src/hooks/useInterceptingRoutes.test.ts
+++ b/src/hooks/useInterceptingRoutes.test.ts
@@ -1,10 +1,8 @@
import { renderHook } from '@testing-library/react';
-import urlJoin from 'url-join';
import { describe, expect, it, vi } from 'vitest';
import { INBOX_SESSION_ID } from '@/const/session';
import { useIsMobile } from '@/hooks/useIsMobile';
-import { useGlobalStore } from '@/store/global';
import { ChatSettingsTabs, SettingsTabs, SidebarTabKey } from '@/store/global/initialState';
import { useSessionStore } from '@/store/session';
@@ -51,20 +49,20 @@ describe('useOpenChatSettings', () => {
vi.mocked(useSessionStore).mockReturnValue(INBOX_SESSION_ID);
const { result } = renderHook(() => useOpenChatSettings());
- expect(result.current()).toBe('/settings/modal?session=inbox&tab=agent'); // Assuming openSettings returns a function
+ expect(result.current()).toBe('/chat/settings/modal?session=inbox&tab=prompt'); // Assuming openSettings returns a function
});
it('should handle mobile route for chat settings', () => {
vi.mocked(useSessionStore).mockReturnValue('123');
vi.mocked(useIsMobile).mockReturnValue(true);
- const { result } = renderHook(() => useOpenChatSettings(ChatSettingsTabs.Meta));
+ const { result } = renderHook(() => useOpenChatSettings());
expect(result.current()).toBe('/chat/settings');
});
it('should handle desktop route for chat settings with session and tab', () => {
vi.mocked(useSessionStore).mockReturnValue('456');
vi.mocked(useIsMobile).mockReturnValue(false);
- const { result } = renderHook(() => useOpenChatSettings(ChatSettingsTabs.Meta));
+ const { result } = renderHook(() => useOpenChatSettings());
expect(result.current()).toBe('/chat/settings/modal?session=456&tab=meta');
});
});
diff --git a/src/hooks/useInterceptingRoutes.ts b/src/hooks/useInterceptingRoutes.ts
index 253519ac9ffb2..f5321c1333ea0 100644
--- a/src/hooks/useInterceptingRoutes.ts
+++ b/src/hooks/useInterceptingRoutes.ts
@@ -4,8 +4,7 @@ import urlJoin from 'url-join';
import { INBOX_SESSION_ID } from '@/const/session';
import { useIsMobile } from '@/hooks/useIsMobile';
import { useQueryRoute } from '@/hooks/useQueryRoute';
-import { useGlobalStore } from '@/store/global';
-import { ChatSettingsTabs, SettingsTabs, SidebarTabKey } from '@/store/global/initialState';
+import { ChatSettingsTabs, SettingsTabs } from '@/store/global/initialState';
import { useSessionStore } from '@/store/session';
export const useOpenSettings = (tab: SettingsTabs = SettingsTabs.Common) => {
@@ -23,24 +22,27 @@ export const useOpenSettings = (tab: SettingsTabs = SettingsTabs.Common) => {
}, [mobile, tab, activeId, router]);
};
-export const useOpenChatSettings = (tab: ChatSettingsTabs = ChatSettingsTabs.Meta) => {
+export const useOpenChatSettings = (tab?: ChatSettingsTabs) => {
const activeId = useSessionStore((s) => s.activeId);
const openSettings = useOpenSettings(SettingsTabs.Agent);
const router = useQueryRoute();
const mobile = useIsMobile();
return useMemo(() => {
- if (activeId === INBOX_SESSION_ID) {
- useGlobalStore.setState({
- sidebarKey: SidebarTabKey.Setting,
- });
- return openSettings;
- }
if (mobile) {
return () => router.push('/chat/settings');
} else {
// use Intercepting Routes on Desktop
- return () => router.push('/chat/settings/modal', { query: { session: activeId, tab } });
+ return () =>
+ router.push('/chat/settings/modal', {
+ query: {
+ session: activeId,
+ tab:
+ tab || activeId === INBOX_SESSION_ID
+ ? ChatSettingsTabs.Prompt
+ : ChatSettingsTabs.Meta,
+ },
+ });
}
}, [openSettings, mobile, activeId, router, tab]);
};