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}
+ />
+ ) : (
+
+ )}