mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 21:05:19 +00:00
feat: improve electron sandbox (#14156)
This commit is contained in:
@@ -75,7 +75,6 @@ export const createIframeRenderer: (
|
||||
class="ai-answer-iframe"
|
||||
sandbox="allow-scripts"
|
||||
scrolling="no"
|
||||
allowfullscreen
|
||||
.srcdoc=${preprocessHtml(answer)}
|
||||
>
|
||||
</iframe>`;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { showAILoginRequiredAtom } from '@affine/core/components/affine/auth/ai-login-required';
|
||||
import type { AIToolsConfig } from '@affine/core/modules/ai-button';
|
||||
import type { UserFriendlyError } from '@affine/error';
|
||||
import { UserFriendlyError } from '@affine/error';
|
||||
import {
|
||||
addContextBlobMutation,
|
||||
addContextCategoryMutation,
|
||||
@@ -50,6 +50,20 @@ export enum Endpoint {
|
||||
type OptionsField<T extends GraphQLQuery> =
|
||||
RequestOptions<T>['variables'] extends { options: infer U } ? U : never;
|
||||
|
||||
function toUserFriendlyError(err: any): UserFriendlyError {
|
||||
return err instanceof UserFriendlyError
|
||||
? err
|
||||
: UserFriendlyError.fromAny(err);
|
||||
}
|
||||
|
||||
function isAbortError(error: UserFriendlyError) {
|
||||
return (
|
||||
error.name === 'REQUEST_ABORTED' ||
|
||||
error.code === 'REQUEST_ABORTED' ||
|
||||
error.message?.toLowerCase().includes('aborted') === true
|
||||
);
|
||||
}
|
||||
|
||||
function codeToError(error: UserFriendlyError) {
|
||||
switch (error.status) {
|
||||
case 401:
|
||||
@@ -66,7 +80,7 @@ function codeToError(error: UserFriendlyError) {
|
||||
}
|
||||
|
||||
export function resolveError(err: any) {
|
||||
return codeToError(err);
|
||||
return codeToError(toUserFriendlyError(err));
|
||||
}
|
||||
|
||||
export function handleError(src: any) {
|
||||
@@ -185,7 +199,11 @@ export class CopilotClient {
|
||||
});
|
||||
return res.currentUser?.copilot?.chats.edges.map(e => e.node);
|
||||
} catch (err) {
|
||||
throw resolveError(err);
|
||||
const parsed = toUserFriendlyError(err);
|
||||
if (isAbortError(parsed)) {
|
||||
return [];
|
||||
}
|
||||
throw resolveError(parsed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,7 +223,11 @@ export class CopilotClient {
|
||||
});
|
||||
return res.currentUser?.copilot?.chats.edges.map(e => e.node);
|
||||
} catch (err) {
|
||||
throw resolveError(err);
|
||||
const parsed = toUserFriendlyError(err);
|
||||
if (isAbortError(parsed)) {
|
||||
return [];
|
||||
}
|
||||
throw resolveError(parsed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +252,11 @@ export class CopilotClient {
|
||||
|
||||
return res.currentUser?.copilot?.chats.edges.map(e => e.node);
|
||||
} catch (err) {
|
||||
throw resolveError(err);
|
||||
const parsed = toUserFriendlyError(err);
|
||||
if (isAbortError(parsed)) {
|
||||
return [];
|
||||
}
|
||||
throw resolveError(parsed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -255,7 +281,11 @@ export class CopilotClient {
|
||||
|
||||
return res.currentUser?.copilot?.chats.edges.map(e => e.node);
|
||||
} catch (err) {
|
||||
throw resolveError(err);
|
||||
const parsed = toUserFriendlyError(err);
|
||||
if (isAbortError(parsed)) {
|
||||
return [];
|
||||
}
|
||||
throw resolveError(parsed);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,13 +63,22 @@ export class FetchService extends Service {
|
||||
}
|
||||
);
|
||||
} catch (err: any) {
|
||||
const isAbort =
|
||||
err?.name === 'AbortError' ||
|
||||
err?.code === 'ABORT_ERR' ||
|
||||
err?.type === 'aborted' ||
|
||||
abortController.signal.aborted;
|
||||
|
||||
const message =
|
||||
err?.message || (isAbort ? 'Request aborted' : 'Unknown network error');
|
||||
|
||||
throw new UserFriendlyError({
|
||||
status: 504,
|
||||
code: 'NETWORK_ERROR',
|
||||
type: 'NETWORK_ERROR',
|
||||
name: 'NETWORK_ERROR',
|
||||
message: `Network error: ${err.message}`,
|
||||
stacktrace: err.stack,
|
||||
status: isAbort ? 499 : 504,
|
||||
code: isAbort ? 'REQUEST_ABORTED' : 'NETWORK_ERROR',
|
||||
type: isAbort ? 'REQUEST_ABORTED' : 'NETWORK_ERROR',
|
||||
name: isAbort ? 'REQUEST_ABORTED' : 'NETWORK_ERROR',
|
||||
message: `Network error: ${message}`,
|
||||
stacktrace: err?.stack,
|
||||
});
|
||||
} finally {
|
||||
clearTimeout(timeoutId);
|
||||
|
||||
Reference in New Issue
Block a user