From f9f0490190c2205fad665ac86b10b1d2bbbc376e Mon Sep 17 00:00:00 2001 From: pengx17 Date: Wed, 17 Apr 2024 13:27:10 +0000 Subject: [PATCH] fix(core): provide photoengine (#6574) --- .../block-suite-editor/ai/provider.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/provider.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/provider.ts index 5537522d3..f5d7e83f2 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/provider.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/provider.ts @@ -1,4 +1,5 @@ import { openSettingModalAtom } from '@affine/core/atoms'; +import { getBaseUrl } from '@affine/graphql'; import { assertExists } from '@blocksuite/global/utils'; import { AIProvider } from '@blocksuite/presets'; import { getCurrentStore } from '@toeverything/infra'; @@ -266,6 +267,29 @@ export function setupAIProvider() { }); }); + AIProvider.provide('photoEngine', { + async searchImages(options): Promise { + const url = new URL(getBaseUrl() + '/api/copilot/unsplash/photos'); + url.searchParams.set('query', options.query); + const result: { + results: { + urls: { + regular: string; + }; + }[]; + } = await fetch(url.toString()).then(res => res.json()); + return result.results.map(r => { + const url = new URL(r.urls.regular); + url.searchParams.set('fit', 'crop'); + url.searchParams.set('crop', 'edges'); + url.searchParams.set('dpr', (window.devicePixelRatio ?? 2).toString()); + url.searchParams.set('w', `${options.width}`); + url.searchParams.set('h', `${options.height}`); + return url.toString(); + }); + }, + }); + AIProvider.slots.requestUpgradePlan.on(() => { getCurrentStore().set(openSettingModalAtom, { activeTab: 'billing',