This commit is contained in:
Archer
2025-08-12 23:08:00 +08:00
committed by GitHub
parent 3cbcb1e3b6
commit 83aa3a855f
6 changed files with 52 additions and 44 deletions

View File

@@ -25,7 +25,7 @@ import type { StartChatFnProps } from '@/components/core/chat/ChatContainer/type
import { streamFetch } from '@/web/common/api/fetch';
import { getChatTitleFromChatMessage } from '@fastgpt/global/core/chat/utils';
import { GPTMessages2Chats } from '@fastgpt/global/core/chat/adapt';
import { useLocalStorageState, useMemoizedFn } from 'ahooks';
import { useLocalStorageState, useMemoizedFn, useMount } from 'ahooks';
import { useChatStore } from '@/web/core/chat/context/useChatStore';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { getInitChatInfo } from '@/web/core/chat/api';
@@ -51,6 +51,7 @@ import { ChatRecordContext } from '@/web/core/chat/context/chatRecordContext';
import { HUGGING_FACE_ICON } from '@fastgpt/global/common/system/constants';
import { getModelFromList } from '@fastgpt/global/core/ai/model';
import MyPopover from '@fastgpt/web/components/common/MyPopover';
import { ChatSidebarPaneEnum } from '../constants';
type Props = {
myApps: AppListItemType[];
@@ -73,9 +74,11 @@ const HomeChatWindow = ({ myApps }: Props) => {
const { isPc } = useSystem();
const { userInfo } = useUserStore();
const { llmModelList, defaultModels } = useSystemStore();
const { llmModelList, defaultModels, feConfigs } = useSystemStore();
const { chatId, appId, outLinkAuthData } = useChatStore();
const onHomeClick = useContextSelector(ChatSettingContext, (v) => v.handlePaneChange);
const isOpenSlider = useContextSelector(ChatContext, (v) => v.isOpenSlider);
const forbidLoadChat = useContextSelector(ChatContext, (v) => v.forbidLoadChat);
const onCloseSlider = useContextSelector(ChatContext, (v) => v.onCloseSlider);
@@ -168,6 +171,12 @@ const HomeChatWindow = ({ myApps }: Props) => {
}
);
useMount(() => {
if (!feConfigs?.isPlus) {
onHomeClick(ChatSidebarPaneEnum.RECENTLY_USED_APPS);
}
});
// 使用类似AppChatWindow的对话逻辑
const onStartChat = useMemoizedFn(
async ({

View File

@@ -1,6 +1,6 @@
import React, { useCallback, useState } from 'react';
import React, { useCallback } from 'react';
import type { BoxProps } from '@chakra-ui/react';
import { Flex, Box, HStack, Image, Skeleton } from '@chakra-ui/react';
import { Flex, Box, HStack, Image } from '@chakra-ui/react';
import { motion, AnimatePresence } from 'framer-motion';
import { useRouter } from 'next/router';
import { useTranslation } from 'next-i18next';
@@ -10,8 +10,6 @@ import MyDivider from '@fastgpt/web/components/common/MyDivider';
import { useUserStore } from '@/web/support/user/useUserStore';
import UserAvatarPopover from '@/pageComponents/chat/UserAvatarPopover';
import MyBox from '@fastgpt/web/components/common/MyBox';
import MyPopover from '@fastgpt/web/components/common/MyPopover';
import SelectOneResource from '@/components/common/folder/SelectOneResource';
import MyIcon from '@fastgpt/web/components/common/Icon';
import type {
GetResourceFolderListProps,
@@ -280,45 +278,49 @@ const NavigationSection = () => {
<AnimatePresence mode="wait">
{isCollapsed ? (
<AnimatedSection show={true}>
<Flex flexDir="column" gap={2}>
<ActionButton
icon="core/chat/sidebar/home"
isCollapsed={true}
isActive={isHomeActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.HOME)}
/>
<ActionButton
icon="common/app"
isCollapsed={true}
isActive={isTeamAppsActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.TEAM_APPS)}
/>
</Flex>
<ActionButton
icon="core/chat/sidebar/home"
isCollapsed={true}
isActive={isHomeActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.HOME)}
/>
</AnimatedSection>
) : (
<AnimatedSection show={true}>
<Flex flexDir="column" gap={2}>
<ActionButton
icon="core/chat/sidebar/home"
text={t('chat:sidebar.home')}
isCollapsed={false}
isActive={isHomeActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.HOME)}
/>
<ActionButton
icon="common/app"
text={t('chat:sidebar.team_apps')}
isCollapsed={false}
isActive={isTeamAppsActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.TEAM_APPS)}
/>
</Flex>
<ActionButton
icon="core/chat/sidebar/home"
text={t('chat:sidebar.home')}
isCollapsed={false}
isActive={isHomeActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.HOME)}
/>
</AnimatedSection>
)}
</AnimatePresence>
)}
<AnimatePresence mode="wait">
{isCollapsed ? (
<AnimatedSection show={true}>
<ActionButton
icon="common/app"
isCollapsed={true}
isActive={isTeamAppsActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.TEAM_APPS)}
/>
</AnimatedSection>
) : (
<AnimatedSection show={true}>
<ActionButton
icon="common/app"
text={t('chat:sidebar.team_apps')}
isCollapsed={false}
isActive={isTeamAppsActive}
onClick={() => onHomeClick(ChatSidebarPaneEnum.TEAM_APPS)}
/>
</AnimatedSection>
)}
</AnimatePresence>
</Flex>
);
};

View File

@@ -2,7 +2,7 @@ import { create, createJSONStorage, devtools, persist, immer } from '@fastgpt/we
import { getNanoid } from '@fastgpt/global/common/string/tools';
import { type OutLinkChatAuthProps } from '@fastgpt/global/support/permission/chat';
import type { ChatSourceEnum } from '@fastgpt/global/core/chat/constants';
import { ChatSidebarPaneEnum } from '@/pageComponents/chat/constants';
import type { ChatSidebarPaneEnum } from '@/pageComponents/chat/constants';
type State = {
source?: `${ChatSourceEnum}`;
@@ -17,7 +17,7 @@ type State = {
chatId: string;
setChatId: (e?: string) => any;
lastPane: ChatSidebarPaneEnum;
lastPane?: ChatSidebarPaneEnum;
setLastPane: (e: ChatSidebarPaneEnum) => any;
outLinkAuthData: OutLinkChatAuthProps;
@@ -115,7 +115,7 @@ export const useChatStore = create<State>()(
state.lastChatAppId = e;
});
},
lastPane: ChatSidebarPaneEnum.HOME,
lastPane: undefined,
setLastPane(e) {
set((state) => {
state.lastPane = e;