diff --git a/web/src/components/api-service/hooks.ts b/web/src/components/api-service/hooks.ts index 2435f99f0..d16d5553b 100644 --- a/web/src/components/api-service/hooks.ts +++ b/web/src/components/api-service/hooks.ts @@ -1,3 +1,4 @@ +import { SharedFrom } from '@/constants/chat'; import { useCreateNextToken, useFetchTokenList, @@ -71,9 +72,9 @@ export const useShowTokenEmptyError = () => { return { showTokenEmptyError }; }; -const getUrlWithToken = (token: string) => { +const getUrlWithToken = (token: string, from: string = 'chat') => { const { protocol, host } = window.location; - return `${protocol}//${host}/chat/share?shared_id=${token}`; + return `${protocol}//${host}/chat/share?shared_id=${token}&from=${from}`; }; const useFetchTokenListBeforeOtherStep = (dialogId: string, idKey: string) => { @@ -131,9 +132,18 @@ export const useShowEmbedModal = (dialogId: string, idKey: string) => { export const usePreviewChat = (dialogId: string, idKey: string) => { const { handleOperate } = useFetchTokenListBeforeOtherStep(dialogId, idKey); - const open = useCallback((t: string) => { - window.open(getUrlWithToken(t), '_blank'); - }, []); + const open = useCallback( + (t: string) => { + window.open( + getUrlWithToken( + t, + idKey === 'canvasId' ? SharedFrom.Agent : SharedFrom.Chat, + ), + '_blank', + ); + }, + [idKey], + ); const handlePreview = useCallback(async () => { const token = await handleOperate(); diff --git a/web/src/components/message-input/index.tsx b/web/src/components/message-input/index.tsx index 65b23a51b..1f692a8ed 100644 --- a/web/src/components/message-input/index.tsx +++ b/web/src/components/message-input/index.tsx @@ -66,6 +66,7 @@ interface IProps { conversationId: string; uploadUrl?: string; isShared?: boolean; + showUploadIcon?: boolean; } const getBase64 = (file: FileType): Promise => @@ -85,6 +86,7 @@ const MessageInput = ({ sendLoading, onInputChange, conversationId, + showUploadIcon = true, uploadUrl = '/v1/document/upload_and_parse', }: IProps) => { const { t } = useTranslate('chat'); @@ -158,7 +160,7 @@ const MessageInput = ({ className={classNames({ [styles.inputWrapper]: fileList.length === 0 })} suffix={ - {conversationId && ( + {conversationId && showUploadIcon && ( { addNewestAnswer, ); const sendDisabled = useSendButtonDisabled(value); + const { from } = useGetSharedChatSearchParams(); return ( <> @@ -74,6 +76,7 @@ const ChatContainer = () => { onPressEnter={handlePressEnter} sendLoading={sendLoading} uploadUrl="/v1/api/document/upload_and_parse" + showUploadIcon={from === SharedFrom.Chat} > diff --git a/web/src/pages/chat/shared-hooks.ts b/web/src/pages/chat/shared-hooks.ts index a9f2c633b..4ad43a4ee 100644 --- a/web/src/pages/chat/shared-hooks.ts +++ b/web/src/pages/chat/shared-hooks.ts @@ -1,4 +1,4 @@ -import { MessageType } from '@/constants/chat'; +import { MessageType, SharedFrom } from '@/constants/chat'; import { useCreateSharedConversation, useFetchSharedConversation, @@ -225,3 +225,12 @@ export const useSendSharedMessage = ( loading: !done, }; }; + +export const useGetSharedChatSearchParams = () => { + const [searchParams] = useSearchParams(); + + return { + from: searchParams.get('from') as SharedFrom, + sharedId: searchParams.get('shared_id'), + }; +};