refactor(core): add useAIChatConfig hook (#11424)

Close [BS-2583](https://linear.app/affine-design/issue/BS-2583).
This commit is contained in:
akumatus
2025-04-03 14:53:49 +00:00
parent 363476a46c
commit 6033baeb86
6 changed files with 175 additions and 101 deletions

View File

@@ -2,10 +2,9 @@ import { toReactNode } from '@affine/component';
import { AIChatBlockPeekViewTemplate } from '@affine/core/blocksuite/ai';
import type { AIChatBlockModel } from '@affine/core/blocksuite/ai/blocks/ai-chat-block/model/ai-chat-model';
import { enableFootnoteConfigExtension } from '@affine/core/blocksuite/extensions';
import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search';
import { useAIChatConfig } from '@affine/core/components/hooks/affine/use-ai-chat-config';
import { SpecProvider } from '@blocksuite/affine/shared/utils';
import type { EditorHost } from '@blocksuite/affine/std';
import { useFramework } from '@toeverything/infra';
import { useMemo } from 'react';
export type AIChatBlockPeekViewProps = {
@@ -17,23 +16,20 @@ export const AIChatBlockPeekView = ({
model,
host,
}: AIChatBlockPeekViewProps) => {
const framework = useFramework();
const searchService = framework.get(AINetworkSearchService);
const { docDisplayConfig, searchMenuConfig, networkSearchConfig } =
useAIChatConfig();
return useMemo(() => {
const previewSpecBuilder = enableFootnoteConfigExtension(
SpecProvider._.getSpec('preview:page')
);
const networkSearchConfig = {
visible: searchService.visible,
enabled: searchService.enabled,
setEnabled: searchService.setEnabled,
};
const template = AIChatBlockPeekViewTemplate(
model,
host,
previewSpecBuilder,
docDisplayConfig,
searchMenuConfig,
networkSearchConfig
);
return toReactNode(template);
}, [model, host, searchService]);
}, [model, host, docDisplayConfig, searchMenuConfig, networkSearchConfig]);
};