Skip to content

Commit 46d6868

Browse files
committed
fix: better code
1 parent 73d9014 commit 46d6868

File tree

3 files changed

+29
-11
lines changed

3 files changed

+29
-11
lines changed

src/containers/Tenant/Query/QueryResult/QueryResultViewer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ export function QueryResultViewer({
228228
return (
229229
<ResultSetsViewer
230230
resultSets={resultSets}
231+
error={error}
231232
selectedResultSet={selectedResultSet}
232-
errorHeader={<QueryResultError error={error} />}
233233
setSelectedResultSet={setSelectedResultSet}
234234
/>
235235
);

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {ParsedResultSet} from '../../../../../../types/store/query';
55
import {getArray} from '../../../../../../utils';
66
import {cn} from '../../../../../../utils/cn';
77
import i18n from '../../i18n';
8+
import {QueryResultError} from '../QueryResultError/QueryResultError';
89

910
import './ResultSetsViewer.scss';
1011

@@ -13,12 +14,12 @@ const b = cn('ydb-query-result-sets-viewer');
1314
interface ResultSetsViewerProps {
1415
resultSets?: ParsedResultSet[];
1516
selectedResultSet: number;
16-
errorHeader?: React.ReactNode;
17+
error?: unknown;
1718
setSelectedResultSet: (resultSet: number) => void;
1819
}
1920

2021
export function ResultSetsViewer(props: ResultSetsViewerProps) {
21-
const {selectedResultSet, setSelectedResultSet, resultSets} = props;
22+
const {selectedResultSet, setSelectedResultSet, resultSets, error} = props;
2223

2324
const resultsSetsCount = resultSets?.length || 0;
2425
const currentResult = resultSets?.[selectedResultSet];
@@ -68,7 +69,7 @@ export function ResultSetsViewer(props: ResultSetsViewerProps) {
6869
return (
6970
<div className={b('result-wrapper')}>
7071
{renderTabs()}
71-
{props.errorHeader ? props.errorHeader : null}
72+
{props.error ? <QueryResultError error={error} /> : null}
7273
{currentResult ? (
7374
<div className={b('result')}>
7475
{renderResultHeadWithCount()}
Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
11
import type {IResponseError} from '../../../../types/api/error';
2-
import {parseQueryError} from '../../../../utils/query';
2+
import {isQueryErrorResponse, parseQueryError} from '../../../../utils/query';
33

4-
export function isQueryCancelledError(error: unknown) {
5-
const parsedError = parseQueryError(error);
4+
function isAbortError(error: unknown): error is {name: string} {
5+
return (
6+
typeof error === 'object' &&
7+
error !== null &&
8+
'name' in error &&
9+
error.name === 'AbortError'
10+
);
11+
}
612

13+
function isResponseError(error: unknown): error is IResponseError {
14+
return typeof error === 'object' && error !== null && 'isCancelled' in error;
15+
}
16+
17+
export function isQueryCancelledError(error: unknown): boolean {
18+
if (isAbortError(error)) {
19+
return true;
20+
}
21+
22+
if (isResponseError(error) && error.isCancelled) {
23+
return true;
24+
}
25+
26+
const parsedError = parseQueryError(error);
727
return (
8-
(typeof error === 'object' &&
9-
((error as IResponseError)?.isCancelled ||
10-
(error as {name: string}).name === 'AbortError')) ||
11-
(typeof parsedError === 'object' && parsedError.error?.message === 'Query was cancelled')
28+
isQueryErrorResponse(parsedError) && parsedError.error?.message === 'Query was cancelled'
1229
);
1330
}

0 commit comments

Comments
 (0)