From 92be6b2ff74dfecbde976356c1355daf3726a64e Mon Sep 17 00:00:00 2001 From: fundon Date: Fri, 21 Jun 2024 01:52:29 +0000 Subject: [PATCH] fix(core): open ai chat for first time (#7291) There are two issues here: 1. open right sidebar with chat 2. notify chat-panel of selected content The second issue will be fixed in a subsequent PR. --- .../frontend/core/src/blocksuite/presets/ai/_common/config.ts | 2 ++ .../core/src/blocksuite/presets/ai/actions/edgeless-response.ts | 1 + packages/frontend/core/src/blocksuite/presets/ai/ai-panel.ts | 1 + .../blocksuite/presets/ai/entries/edgeless/actions-config.ts | 2 ++ packages/frontend/core/src/blocksuite/presets/ai/provider.ts | 1 + .../frontend/core/src/modules/peek-view/view/doc-peek-view.tsx | 2 +- .../core/src/pages/workspace/detail-page/detail-page.tsx | 2 +- 7 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/frontend/core/src/blocksuite/presets/ai/_common/config.ts b/packages/frontend/core/src/blocksuite/presets/ai/_common/config.ts index 3afcdb99b2..c98d3b6887 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/_common/config.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/_common/config.ts @@ -401,6 +401,7 @@ const OthersAIGroup: AIItemGroupConfig = { icon: CommentIcon, handler: host => { const panel = getAIPanel(host); + AIProvider.slots.requestOpenWithChat.emit(); AIProvider.slots.requestContinueWithAIInChat.emit({ host }); panel.hide(); }, @@ -410,6 +411,7 @@ const OthersAIGroup: AIItemGroupConfig = { icon: ChatWithAIIcon, handler: host => { const panel = getAIPanel(host); + AIProvider.slots.requestOpenWithChat.emit(); AIProvider.slots.requestContinueInChat.emit({ host: host, show: true, diff --git a/packages/frontend/core/src/blocksuite/presets/ai/actions/edgeless-response.ts b/packages/frontend/core/src/blocksuite/presets/ai/actions/edgeless-response.ts index 5962008837..61d426a751 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/actions/edgeless-response.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/actions/edgeless-response.ts @@ -463,6 +463,7 @@ export function actionToResponse( handler: () => { reportResponse('result:continue-in-chat'); const panel = getAIPanel(host); + AIProvider.slots.requestOpenWithChat.emit(); AIProvider.slots.requestContinueInChat.emit({ host: host, show: true, diff --git a/packages/frontend/core/src/blocksuite/presets/ai/ai-panel.ts b/packages/frontend/core/src/blocksuite/presets/ai/ai-panel.ts index 8aeb11e3e1..d41e084a16 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/ai-panel.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/ai-panel.ts @@ -233,6 +233,7 @@ export function buildTextResponseConfig< icon: ChatWithAIIcon, handler: () => { reportResponse('result:continue-in-chat'); + AIProvider.slots.requestOpenWithChat.emit(); AIProvider.slots.requestContinueInChat.emit({ host: panel.host, show: true, diff --git a/packages/frontend/core/src/blocksuite/presets/ai/entries/edgeless/actions-config.ts b/packages/frontend/core/src/blocksuite/presets/ai/entries/edgeless/actions-config.ts index e17bd4e0b7..df26d451ab 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/entries/edgeless/actions-config.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/entries/edgeless/actions-config.ts @@ -105,6 +105,7 @@ const othersGroup: AIItemGroupConfig = { showWhen: () => true, handler: host => { const panel = getAIPanel(host); + AIProvider.slots.requestOpenWithChat.emit(); AIProvider.slots.requestContinueWithAIInChat.emit({ host, mode: 'edgeless', @@ -118,6 +119,7 @@ const othersGroup: AIItemGroupConfig = { showWhen: () => true, handler: host => { const panel = getAIPanel(host); + AIProvider.slots.requestOpenWithChat.emit(); AIProvider.slots.requestContinueInChat.emit({ host: host, show: true, diff --git a/packages/frontend/core/src/blocksuite/presets/ai/provider.ts b/packages/frontend/core/src/blocksuite/presets/ai/provider.ts index 4b3ec14f5e..0529e6eb1c 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/provider.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/provider.ts @@ -80,6 +80,7 @@ export class AIProvider { private readonly slots = { // use case: when user selects "continue in chat" in an ask ai result panel // do we need to pass the context to the chat panel? + requestOpenWithChat: new Slot(), requestContinueInChat: new Slot<{ host: EditorHost; show: boolean }>(), requestContinueWithAIInChat: new Slot<{ host: EditorHost; diff --git a/packages/frontend/core/src/modules/peek-view/view/doc-peek-view.tsx b/packages/frontend/core/src/modules/peek-view/view/doc-peek-view.tsx index e3488a14ff..3cc503e6a9 100644 --- a/packages/frontend/core/src/modules/peek-view/view/doc-peek-view.tsx +++ b/packages/frontend/core/src/modules/peek-view/view/doc-peek-view.tsx @@ -73,7 +73,7 @@ const DocPreview = forwardRef< }, [docId, docs.list, resolvedMode, mode]); useEffect(() => { - const disposable = AIProvider.slots.requestContinueInChat.on(() => { + const disposable = AIProvider.slots.requestOpenWithChat.on(() => { if (doc) { workbench.openPage(doc.id); peekView.close(); diff --git a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx index 0084eafc52..a1dd2de98b 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx @@ -106,7 +106,7 @@ const DetailPageImpl = memo(function DetailPageImpl() { }, [editor, isActiveView, setActiveBlockSuiteEditor]); useEffect(() => { - AIProvider.slots.requestContinueInChat.on(() => { + AIProvider.slots.requestOpenWithChat.on(() => { rightSidebar.open(); if (activeTabName !== 'chat') { setActiveTabName('chat');