Skip to content

Commit

Permalink
🐛 fix: fix inbox agent edit way in the new mode (lobehub#6190)
Browse files Browse the repository at this point in the history
  • Loading branch information
arvinxx authored Feb 15, 2025
1 parent 4937638 commit 6398362
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 36 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { Icon } from '@lobehub/ui';
import { MenuItemType } from 'antd/es/menu/interface';
import { Blocks, Bot, BrainCog, MessagesSquare, Mic2, UserCircle } from 'lucide-react';
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;
Expand All @@ -13,41 +16,44 @@ interface UseCategoryOptions {
export const useCategory = ({ mobile }: UseCategoryOptions = {}) => {
const { t } = useTranslation('setting');
const iconSize = mobile ? { fontSize: 20 } : undefined;
const id = useSessionStore((s) => s.activeId);
const isInbox = id === INBOX_SESSION_ID;

const cateItems: MenuProps['items'] = useMemo(
() => [
{
icon: <Icon icon={UserCircle} size={iconSize} />,
key: ChatSettingsTabs.Meta,
label: t('agentTab.meta'),
},
{
icon: <Icon icon={Bot} size={iconSize} />,
key: ChatSettingsTabs.Prompt,
label: t('agentTab.prompt'),
},
{
icon: <Icon icon={MessagesSquare} size={iconSize} />,
key: ChatSettingsTabs.Chat,
label: t('agentTab.chat'),
},
{
icon: <Icon icon={BrainCog} size={iconSize} />,
key: ChatSettingsTabs.Modal,
label: t('agentTab.modal'),
},
{
icon: <Icon icon={Mic2} size={iconSize} />,
key: ChatSettingsTabs.TTS,
label: t('agentTab.tts'),
},
{
icon: <Icon icon={Blocks} size={iconSize} />,
key: ChatSettingsTabs.Plugin,
label: t('agentTab.plugin'),
},
],
[t],
() =>
[
(!isInbox && {
icon: <Icon icon={UserCircle} size={iconSize} />,
key: ChatSettingsTabs.Meta,
label: t('agentTab.meta'),
}) as MenuItemType,
(!isInbox && {
icon: <Icon icon={Bot} size={iconSize} />,
key: ChatSettingsTabs.Prompt,
label: t('agentTab.prompt'),
}) as MenuItemType,
{
icon: <Icon icon={MessagesSquare} size={iconSize} />,
key: ChatSettingsTabs.Chat,
label: t('agentTab.chat'),
},
{
icon: <Icon icon={BrainCog} size={iconSize} />,
key: ChatSettingsTabs.Modal,
label: t('agentTab.modal'),
},
{
icon: <Icon icon={Mic2} size={iconSize} />,
key: ChatSettingsTabs.TTS,
label: t('agentTab.tts'),
},
{
icon: <Icon icon={Blocks} size={iconSize} />,
key: ChatSettingsTabs.Plugin,
label: t('agentTab.plugin'),
},
].filter(Boolean),
[t, isInbox],
);

return cateItems;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';

import Header from '@/app/[variants]/(main)/settings/_layout/Desktop/Header';
import { INBOX_SESSION_ID } from '@/const/session';
import AgentChat from '@/features/AgentSetting/AgentChat';
import AgentMeta from '@/features/AgentSetting/AgentMeta';
import AgentModal from '@/features/AgentSetting/AgentModal';
Expand Down Expand Up @@ -38,8 +39,9 @@ const AgentSettings = memo(() => {
s.updateSessionMeta,
sessionMetaSelectors.currentAgentTitle(s),
]);
const isInbox = id === INBOX_SESSION_ID;

const [tab, setTab] = useState(ChatSettingsTabs.Meta);
const [tab, setTab] = useState(isInbox ? ChatSettingsTabs.Chat : ChatSettingsTabs.Meta);

const ref = useRef<any>(null);
const theme = useTheme();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useTranslation } from 'react-i18next';

import { DESKTOP_HEADER_ICON_SIZE, MOBILE_HEADER_ICON_SIZE } from '@/const/layoutTokens';
import { useOpenChatSettings } from '@/hooks/useInterceptingRoutes';
import { useSessionStore } from '@/store/session';

const AgentSettings = dynamic(() => import('./AgentSettings'), {
ssr: false,
Expand All @@ -16,6 +17,7 @@ const AgentSettings = dynamic(() => import('./AgentSettings'), {
const SettingButton = memo<{ mobile?: boolean }>(({ mobile }) => {
const { t } = useTranslation('common');
const openChatSettings = useOpenChatSettings();
const id = useSessionStore((s) => s.activeId);

return (
<>
Expand All @@ -25,7 +27,7 @@ const SettingButton = memo<{ mobile?: boolean }>(({ mobile }) => {
size={mobile ? MOBILE_HEADER_ICON_SIZE : DESKTOP_HEADER_ICON_SIZE}
title={t('header.session', { ns: 'setting' })}
/>
<AgentSettings />
<AgentSettings key={id} />
</>
);
});
Expand Down
3 changes: 2 additions & 1 deletion src/hooks/useInterceptingRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useMemo } from 'react';
import urlJoin from 'url-join';

import { INBOX_SESSION_ID } from '@/const/session';
import { isDeprecatedEdition } from '@/const/version';
import { useIsMobile } from '@/hooks/useIsMobile';
import { useQueryRoute } from '@/hooks/useQueryRoute';
import { useAgentStore } from '@/store/agent';
Expand All @@ -15,7 +16,7 @@ export const useOpenChatSettings = (tab: ChatSettingsTabs = ChatSettingsTabs.Met
const router = useQueryRoute();

return useMemo(() => {
if (activeId === INBOX_SESSION_ID) {
if (isDeprecatedEdition && activeId === INBOX_SESSION_ID) {
return () => router.push(urlJoin('/settings', SettingsTabs.Agent));
}

Expand Down

0 comments on commit 6398362

Please sign in to comment.