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) {