Skip to content

Commit d2dbd72

Browse files
committed
fix: review
1 parent 7b6351f commit d2dbd72

File tree

5 files changed

+52
-3
lines changed

5 files changed

+52
-3
lines changed

src/containers/Tenant/Query/QueryResult/components/PlanToSvgButton/PlanToSvgButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {Button, DropdownMenu, Tooltip} from '@gravity-ui/uikit';
66

77
import {planToSvgApi} from '../../../../../../store/reducers/planToSvg';
88
import type {QueryPlan, ScriptPlan} from '../../../../../../types/api/query';
9+
import {prepareCommonErrorMessage} from '../../../../../../utils/errors';
910
import i18n from '../../i18n';
1011

1112
function getButtonView(error: string | null, isLoading: boolean) {
@@ -40,8 +41,7 @@ export function PlanToSvgButton({plan, database}: PlanToSvgButtonProps) {
4041
return url;
4142
})
4243
.catch((err) => {
43-
const errorMessage = err.data?.message || err.message || JSON.stringify(err);
44-
setError(errorMessage);
44+
setError(prepareCommonErrorMessage(err));
4545
return null;
4646
});
4747
}, [database, getPlanToSvg, plan, blobUrl]);

src/types/api/error.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export interface NetworkError {
1818
description?: unknown;
1919
fileName?: unknown;
2020
lineNumber?: unknown;
21-
message?: 'Network Error';
21+
message: 'Network Error';
2222
name?: string;
2323
number?: unknown;
2424
stack?: string;

src/utils/errors/i18n/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"unknown-error": "An unknown error occurred"
3+
}

src/utils/errors/i18n/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import {registerKeysets} from '../../i18n';
2+
3+
import en from './en.json';
4+
5+
const COMPONENT = 'ydb-errors';
6+
7+
export default registerKeysets(COMPONENT, {en});

src/utils/errors/index.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import type {IResponseError} from '../../types/api/error';
2+
import {isNetworkError} from '../response';
3+
4+
import i18n from './i18n';
5+
6+
/**
7+
* Prepares a consistent error message from various error types
8+
* @param err - The error object to process
9+
* @returns A formatted error message string
10+
*/
11+
export function prepareCommonErrorMessage(err: unknown): string {
12+
// Handle string errors
13+
if (typeof err === 'string') {
14+
return err;
15+
}
16+
17+
// Handle null/undefined
18+
if (!err) {
19+
return i18n('unknown-error');
20+
}
21+
22+
// Handle NetworkError
23+
if (isNetworkError(err)) {
24+
return err.message;
25+
}
26+
27+
if (typeof err === 'object' && 'data' in err) {
28+
const responseError = err as IResponseError;
29+
if (responseError.data?.message) {
30+
return responseError.data.message;
31+
}
32+
}
33+
34+
if (err instanceof Error) {
35+
return err.message;
36+
}
37+
38+
return JSON.stringify(err);
39+
}

0 commit comments

Comments
 (0)