Fix: Error 102 "Can't find dialog by ID" when embedding agent with from=agent** #11552 (#11594)

### What problem does this PR solve?

Fix: Error 102 "Can't find dialog by ID" when embedding agent with
from=agent** #11552

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
balibabu
2025-11-28 19:05:43 +08:00
committed by GitHub
parent ccce8beeeb
commit d2915f6984
2 changed files with 36 additions and 20 deletions

View File

@ -1,8 +1,10 @@
import PdfSheet from '@/components/pdf-drawer'; import PdfSheet from '@/components/pdf-drawer';
import { useClickDrawer } from '@/components/pdf-drawer/hooks'; import { useClickDrawer } from '@/components/pdf-drawer/hooks';
import { MessageType } from '@/constants/chat'; import { MessageType, SharedFrom } from '@/constants/chat';
import { useFetchExternalAgentInputs } from '@/hooks/use-agent-request';
import { useFetchExternalChatInfo } from '@/hooks/use-chat-request'; import { useFetchExternalChatInfo } from '@/hooks/use-chat-request';
import i18n from '@/locales/config'; import i18n from '@/locales/config';
import { useSendNextSharedMessage } from '@/pages/agent/hooks/use-send-shared-message';
import { MessageCircle, Minimize2, Send, X } from 'lucide-react'; import { MessageCircle, Minimize2, Send, X } from 'lucide-react';
import React, { useCallback, useEffect, useRef, useState } from 'react'; import React, { useCallback, useEffect, useRef, useState } from 'react';
import { import {
@ -20,7 +22,13 @@ const FloatingChatWidget = () => {
const [isLoaded, setIsLoaded] = useState(false); const [isLoaded, setIsLoaded] = useState(false);
const messagesEndRef = useRef<HTMLDivElement>(null); const messagesEndRef = useRef<HTMLDivElement>(null);
const { sharedId: conversationId, locale } = useGetSharedChatSearchParams(); const {
sharedId: conversationId,
locale,
from,
} = useGetSharedChatSearchParams();
const isFromAgent = from === SharedFrom.Agent;
// Check if we're in button-only mode or window-only mode // Check if we're in button-only mode or window-only mode
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
@ -34,7 +42,7 @@ const FloatingChatWidget = () => {
sendLoading, sendLoading,
derivedMessages, derivedMessages,
hasError, hasError,
} = useSendSharedMessage(); } = (isFromAgent ? useSendNextSharedMessage : useSendSharedMessage)(() => {});
// Sync our local input with the hook's value when needed // Sync our local input with the hook's value when needed
useEffect(() => { useEffect(() => {
@ -43,7 +51,11 @@ const FloatingChatWidget = () => {
} }
}, [hookValue, inputValue]); }, [hookValue, inputValue]);
const { data: chatInfo } = useFetchExternalChatInfo(); const { data } = (
isFromAgent ? useFetchExternalAgentInputs : useFetchExternalChatInfo
)();
const title = data.title;
const { visible, hideModal, documentId, selectedChunk, clickDocumentButton } = const { visible, hideModal, documentId, selectedChunk, clickDocumentButton } =
useClickDrawer(); useClickDrawer();
@ -372,7 +384,7 @@ const FloatingChatWidget = () => {
</div> </div>
<div> <div>
<h3 className="font-semibold text-sm"> <h3 className="font-semibold text-sm">
{chatInfo?.title || 'Chat Support'} {title || 'Chat Support'}
</h3> </h3>
<p className="text-xs text-blue-100"> <p className="text-xs text-blue-100">
We typically reply instantly We typically reply instantly
@ -494,14 +506,16 @@ const FloatingChatWidget = () => {
</div> </div>
</div> </div>
</div> </div>
<PdfSheet {visible && (
visible={visible} <PdfSheet
hideModal={hideModal} visible={visible}
documentId={documentId} hideModal={hideModal}
chunk={selectedChunk} documentId={documentId}
width={'100vw'} chunk={selectedChunk}
height={'100vh'} width={'100vw'}
/> height={'100vh'}
/>
)}
</> </>
); );
} // Full mode - render everything together (original behavior) } // Full mode - render everything together (original behavior)
@ -524,7 +538,7 @@ const FloatingChatWidget = () => {
</div> </div>
<div> <div>
<h3 className="font-semibold text-sm"> <h3 className="font-semibold text-sm">
{chatInfo?.title || 'Chat Support'} {title || 'Chat Support'}
</h3> </h3>
<p className="text-xs text-blue-100"> <p className="text-xs text-blue-100">
We typically reply instantly We typically reply instantly

View File

@ -127,12 +127,14 @@ function AgentChatBox() {
/> />
)} )}
</section> </section>
<PdfSheet {visible && (
visible={visible} <PdfSheet
hideModal={hideModal} visible={visible}
documentId={documentId} hideModal={hideModal}
chunk={selectedChunk} documentId={documentId}
></PdfSheet> chunk={selectedChunk}
></PdfSheet>
)}
</> </>
); );
} }