Skip to content
This repository was archived by the owner on May 13, 2024. It is now read-only.

Commit a49f83a

Browse files
Hubert KosterHubert Koster
authored andcommitted
chore: refactoring component
1 parent fabd60e commit a49f83a

File tree

3 files changed

+54
-18
lines changed

3 files changed

+54
-18
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
@use 'src/styles/utility' as *;
2+
3+
.reactJsonContainer {
4+
display: flex;
5+
flex-direction: column;
6+
gap: rem(2);
7+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import React, { useCallback } from 'react';
2+
import styles from './JsonData.module.scss';
3+
import {
4+
TSocketResponseData,
5+
TSocketEndpointNames,
6+
TSocketSubscribableEndpointNames,
7+
} from '@site/src/configs/websocket/types';
8+
9+
const ReactJson = React.lazy(() => import('react-json-view'));
10+
11+
type TJsonData<T extends TSocketEndpointNames> = {
12+
full_response: TSocketResponseData<T>;
13+
error: unknown;
14+
name: string;
15+
};
16+
17+
const JsonData = <T extends TSocketEndpointNames | TSocketSubscribableEndpointNames>({
18+
full_response,
19+
name,
20+
error,
21+
}: TJsonData<T>) => {
22+
const getResponse = useCallback((key: string) => full_response[key], [full_response]);
23+
const key = getResponse('msg_type') ?? name;
24+
const echo_req_json = {
25+
echo_req: getResponse('echo_req'),
26+
msg_type: getResponse('msg_type'),
27+
req_id: getResponse('req_id'),
28+
};
29+
const main_object_json = { [key]: getResponse(key) };
30+
31+
return (
32+
<React.Fragment>
33+
{full_response !== null ? (
34+
<div className={styles.reactJsonContainer}>
35+
<ReactJson src={echo_req_json} theme='tube' />
36+
<ReactJson src={main_object_json} theme='tube' />
37+
</div>
38+
) : (
39+
<ReactJson src={{ error }} theme='tube' />
40+
)}
41+
</React.Fragment>
42+
);
43+
};
44+
45+
export default JsonData;

src/features/Apiexplorer/RequestResponseRenderer/PlaygroundSection/index.tsx

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ import {
44
TSocketResponseData,
55
TSocketSubscribableEndpointNames,
66
} from '@site/src/configs/websocket/types';
7+
import JsonData from './JsonData';
78
import Loader from '@site/src/components/Loader';
89
import styles from './PlaygroundSection.module.scss';
910

10-
const ReactJson = React.lazy(() => import('react-json-view'));
11-
1211
type TPlaygroundSection<T extends TSocketEndpointNames> = {
1312
loader: boolean;
1413
response_state: boolean;
@@ -26,14 +25,6 @@ const PlaygroundSection = <T extends TSocketEndpointNames | TSocketSubscribableE
2625
}: TPlaygroundSection<T>) => {
2726
if (loader) return <Loader />;
2827

29-
const key = full_response['msg_type'] ?? name;
30-
const echo_req_json = {
31-
echo_req: full_response['echo_req'],
32-
msg_type: full_response['msg_type'],
33-
req_id: full_response['req_id'],
34-
};
35-
const main_object_json = { [key]: full_response[key] };
36-
3728
return (
3829
<div
3930
id='playground-console'
@@ -44,14 +35,7 @@ const PlaygroundSection = <T extends TSocketEndpointNames | TSocketSubscribableE
4435
<React.Fragment>
4536
<Suspense fallback={<Loader />}>
4637
<div data-testid='dt_json_view'>
47-
{full_response !== null ? (
48-
<div className={styles.reactJsonContainer}>
49-
<ReactJson src={echo_req_json} theme='tube' />
50-
<ReactJson src={main_object_json} theme='tube' />
51-
</div>
52-
) : (
53-
<ReactJson src={{ error }} theme='tube' />
54-
)}
38+
<JsonData full_response={full_response} name={name} error={error} />
5539
</div>
5640
</Suspense>
5741
</React.Fragment>

0 commit comments

Comments
 (0)