Skip to content

Commit

Permalink
Use new error type
Browse files Browse the repository at this point in the history
  • Loading branch information
joeyballentine committed Jun 30, 2024
1 parent d617791 commit d4db92e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
29 changes: 27 additions & 2 deletions src/common/Backend.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import axios, { AxiosRequestConfig } from 'axios';
import axios, { AxiosRequestConfig, Cancel } from 'axios';
import {
BackendJsonNode,
Category,
Expand Down Expand Up @@ -133,6 +133,31 @@ export class ServerError extends Error {
return new ServerError(json.message, json.description, json.status);
}
}
export class CancelError extends Error {
type = 'cancel';

message: string;

config: AxiosRequestConfig | undefined;

constructor(message: string | undefined, config?: AxiosRequestConfig) {
super();
this.message = message ?? 'The request was cancelled';
this.config = config;
}

static isCancel(cancel: unknown): cancel is CancelError {
if (typeof cancel !== 'object' || cancel === null) {
return false;
}
const obj = cancel as Record<string, unknown>;
return typeof obj.message === 'string' && obj.type === 'cancel';
}

static fromCancel(cancelData: Cancel, config?: AxiosRequestConfig): CancelError {
return new CancelError(cancelData.message, config);
}
}

/**
* A wrapper to communicate with the backend.
Expand Down Expand Up @@ -183,7 +208,7 @@ export class Backend {
return error.response.data as T;
}
if (axios.isCancel(error)) {
return { type: 'success' } as T;
throw CancelError.fromCancel(error, error.config);
}
}
if (ServerError.isJson(error)) {
Expand Down
6 changes: 5 additions & 1 deletion src/renderer/contexts/ExecutionContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
BackendEventMap,
BackendStatusResponse,
BackendWorkerStatusResponse,
CancelError,
} from '../../common/Backend';
import { EdgeData, NodeData, OutputId } from '../../common/common-types';
import { formatExecutionErrorMessage } from '../../common/formatExecutionErrorMessage';
Expand Down Expand Up @@ -478,7 +479,10 @@ export const ExecutionProvider = memo(({ children }: React.PropsWithChildren<{}>
});
}
} catch (err: unknown) {
if (!(err instanceof DOMException && err.name === 'AbortError')) {
if (
!(err instanceof DOMException && err.name === 'AbortError') &&
!CancelError.isCancel(err)
) {
sendAlert({
type: AlertType.ERROR,
message: `An unexpected error occurred: ${String(err)}`,
Expand Down

0 comments on commit d4db92e

Please sign in to comment.