diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx index 5719ef3965..e701af56d4 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx @@ -1,4 +1,3 @@ -import { notify } from '@affine/component'; import { AIProvider } from '@affine/core/blocksuite/presets/ai'; import { toggleGeneralAIOnboarding } from '@affine/core/components/affine/ai-onboarding/apis'; import { authAtom, openSettingModalAtom } from '@affine/core/components/atoms'; @@ -7,7 +6,6 @@ import { type getCopilotHistoriesQuery, type RequestOptions, } from '@affine/graphql'; -import { Trans } from '@affine/i18n'; import { track } from '@affine/track'; import { UnauthorizedError } from '@blocksuite/blocks'; import { assertExists } from '@blocksuite/global/utils'; @@ -480,13 +478,5 @@ Could you make a new website based on these notes and send back just the html fi })); }); - AIProvider.slots.requestRunInEdgeless.on(() => { - notify.warning({ - title: ( - - ), - }); - }); - setupTracker(); } diff --git a/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx index a29739999b..3ac40b1ec1 100644 --- a/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx @@ -1,4 +1,4 @@ -import { Scrollable, useHasScrollTop } from '@affine/component'; +import { notify, Scrollable, useHasScrollTop } from '@affine/component'; import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; import type { ChatPanel } from '@affine/core/blocksuite/presets/ai'; import { AIProvider } from '@affine/core/blocksuite/presets/ai'; @@ -9,6 +9,7 @@ import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite- import { EditorService } from '@affine/core/modules/editor'; import { RecentDocsService } from '@affine/core/modules/quicksearch'; import { ViewService } from '@affine/core/modules/workbench/services/view'; +import { useI18n } from '@affine/i18n'; import { RefNodeSlotsProvider } from '@blocksuite/blocks'; import { DisposableGroup } from '@blocksuite/global/utils'; import { AiIcon, FrameIcon, TocIcon, TodayIcon } from '@blocksuite/icons/rc'; @@ -94,6 +95,8 @@ const DetailPageImpl = memo(function DetailPageImpl() { // TODO(@eyhn): remove jotai here const [_, setActiveBlockSuiteEditor] = useActiveBlocksuiteEditor(); + const t = useI18n(); + useEffect(() => { if (isActiveView) { setActiveBlockSuiteEditor(editorContainer); @@ -187,6 +190,22 @@ const DetailPageImpl = memo(function DetailPageImpl() { } } + disposable.add( + AIProvider.slots.requestRunInEdgeless.on(({ host }) => { + if (host === editorHost) { + notify.warning({ + title: t['com.affine.ai.action.edgeless-only.dialog-title'](), + action: { + label: t['Switch'](), + onClick: () => { + editor.setMode('edgeless'); + }, + }, + }); + } + }) + ); + editor.setEditorContainer(editorContainer); const unbind = editor.bindEditorContainer( editorContainer, @@ -199,7 +218,7 @@ const DetailPageImpl = memo(function DetailPageImpl() { disposable.dispose(); }; }, - [editor, openPage, docCollection.id, jumpToPageBlock] + [editor, openPage, docCollection.id, jumpToPageBlock, t] ); const [refCallback, hasScrollTop] = useHasScrollTop();