diff --git a/projects/app/src/pageComponents/chat/ChatSetting/FavouriteAppSetting/TagManageModal.tsx b/projects/app/src/pageComponents/chat/ChatSetting/FavouriteAppSetting/TagManageModal.tsx index ef3ea9027ea8..8b3ea8254764 100644 --- a/projects/app/src/pageComponents/chat/ChatSetting/FavouriteAppSetting/TagManageModal.tsx +++ b/projects/app/src/pageComponents/chat/ChatSetting/FavouriteAppSetting/TagManageModal.tsx @@ -26,6 +26,7 @@ import Avatar from '@fastgpt/web/components/common/Avatar'; import type { ChatFavouriteApp } from '@fastgpt/global/core/chat/favouriteApp/type'; import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; import { useConfirm } from '@fastgpt/web/hooks/useConfirm'; +import DndDrag, { Draggable } from '@fastgpt/web/components/common/DndDrag'; type EditableTagItemProps = { tag: ChatFavouriteTagType; @@ -111,13 +112,6 @@ const EditableTagItem = React.memo(function EditableTagItem({ alignItems="center" justifyContent="space-between" bg={isSelfEditing ? 'myGray.50' : 'transparent'} - transition="all 0.2s ease-in-out" - _hover={{ - bg: 'myGray.50', - '#_ca': { - opacity: 1 - } - }} > {isSelfEditing ? ( @@ -143,13 +137,7 @@ const EditableTagItem = React.memo(function EditableTagItem({ {!isSelfEditing && ( - + { flexDir="column" gap="2" > - {localTags.map((tag) => ( - - setIsEditing((prev) => [...prev, tag.id])} - onConfirmDelete={(c) => deleteTag(c)} - onSaveTagForApp={handleOpenSaveTagForAppSubPanel} - /> - - ))} + + dataList={localTags} + renderInnerPlaceholder={false} + onDragEndCb={(list) => { + setLocalTags(list); + updateTags(list); + }} + > + {({ provided }) => ( + + {localTags.map((tag, index) => ( + + {(provided, snapshot) => ( + + + + + + + setIsEditing((prev) => [...prev, tag.id])} + onConfirmDelete={(c) => deleteTag(c)} + onSaveTagForApp={handleOpenSaveTagForAppSubPanel} + /> + + + + )} + + ))} + {provided.placeholder} + + )} + ) : ( diff --git a/projects/app/src/pageComponents/chat/ChatWindow/AppChatWindow.tsx b/projects/app/src/pageComponents/chat/ChatWindow/AppChatWindow.tsx index 2f7368bef943..0ec33549fb26 100644 --- a/projects/app/src/pageComponents/chat/ChatWindow/AppChatWindow.tsx +++ b/projects/app/src/pageComponents/chat/ChatWindow/AppChatWindow.tsx @@ -25,6 +25,10 @@ import { ChatSidebarPaneEnum } from '../constants'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import ChatHistorySidebar from '@/pageComponents/chat/slider/ChatSliderSidebar'; import ChatSliderMobileDrawer from '@/pageComponents/chat/slider/ChatSliderMobileDrawer'; +import dynamic from 'next/dynamic'; +import { getNanoid } from '@fastgpt/global/common/string/tools'; + +const CustomPluginRunBox = dynamic(() => import('@/pageComponents/chat/CustomPluginRunBox')); type Props = { myApps: AppListItemType[]; @@ -33,7 +37,6 @@ type Props = { const AppChatWindow = ({ myApps }: Props) => { const { userInfo } = useUserStore(); const { chatId, appId, outLinkAuthData } = useChatStore(); - const { feConfigs } = useSystemStore(); const { t } = useTranslation(); const { isPc } = useSystem(); @@ -41,6 +44,8 @@ const AppChatWindow = ({ myApps }: Props) => { const forbidLoadChat = useContextSelector(ChatContext, (v) => v.forbidLoadChat); const onUpdateHistoryTitle = useContextSelector(ChatContext, (v) => v.onUpdateHistoryTitle); + const isPlugin = useContextSelector(ChatItemContext, (v) => v.isPlugin); + const onChangeChatId = useContextSelector(ChatContext, (v) => v.onChangeChatId); const chatBoxData = useContextSelector(ChatItemContext, (v) => v.chatBoxData); const datasetCiteData = useContextSelector(ChatItemContext, (v) => v.datasetCiteData); const setChatBoxData = useContextSelector(ChatItemContext, (v) => v.setChatBoxData); @@ -153,16 +158,26 @@ const AppChatWindow = ({ myApps }: Props) => { /> - + {isPlugin ? ( + onChangeChatId(getNanoid())} + onStartChat={onStartChat} + /> + ) : ( + + )}