diff --git a/packages/frontend/core/src/blocksuite/presets/ai/messages/error.ts b/packages/frontend/core/src/blocksuite/presets/ai/messages/error.ts index 8c85571a5..9b4c8c361 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/messages/error.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/messages/error.ts @@ -106,12 +106,23 @@ export const PaymentRequiredErrorRenderer = (host: EditorHost) => html` > `; -export const GeneralErrorRenderer = ( - text: TemplateResult<1> = html`An error occurred, If this issue persists - please let us know. - support@toeverything.info `, - template: TemplateResult<1> = html`${nothing}` -) => html` ${template}`; +type ErrorProps = { + text?: TemplateResult<1>; + template?: TemplateResult<1>; + error?: TemplateResult<1>; +}; + +const generateText = (error?: TemplateResult<1>) => + html`${error || 'An error occurred'}, If this issue persists please let us + know. + support@toeverything.info + `; + +const nope = html`${nothing}`; +const GeneralErrorRenderer = (props: ErrorProps = {}) => { + const { text = generateText(props.error), template = nope } = props; + return html`${template}`; +}; declare global { interface HTMLElementTagNameMap { @@ -123,9 +134,9 @@ export function AIChatErrorRenderer(host: EditorHost, error: AIError) { if (error instanceof PaymentRequiredError) { return PaymentRequiredErrorRenderer(host); } else if (error instanceof UnauthorizedError) { - return GeneralErrorRenderer( - html`You need to login to AFFiNE Cloud to continue using AFFiNE AI.`, - html`
AIProvider.slots.requestLogin.emit({ host })} > Login -
` - ); + `, + }); } else { - return GeneralErrorRenderer(); + const tip = error.message; + return GeneralErrorRenderer({ + error: html` + An error occurred`, + }); } } diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/copilot-client.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/copilot-client.ts index 46230857c..1a30678b8 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/copilot-client.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/copilot-client.ts @@ -25,14 +25,18 @@ import { getCurrentStore } from '@toeverything/infra'; type OptionsField = RequestOptions['variables'] extends { options: infer U } ? U : never; -function codeToError(code: number) { - switch (code) { +function codeToError(error: UserFriendlyError) { + switch (error.status) { case 401: return new UnauthorizedError(); case 402: return new PaymentRequiredError(); default: - return new GeneralNetworkError(); + return new GeneralNetworkError( + error.code + ? `${error.code}: ${error.message}\nIdentify: ${error.name}` + : undefined + ); } } @@ -42,7 +46,7 @@ export function resolveError(err: any) { ? new UserFriendlyError(err.extensions) : UserFriendlyError.fromAnyError(err); - return codeToError(standardError.status); + return codeToError(standardError); } export function handleError(src: any) {