Skip to content

Commit 4762b0f

Browse files
authored
Merge pull request #33 from REST-API-Client/refactor/createStoreSlice
[2022/07/18] - Modularize different store to multiple slices
2 parents 2cf8620 + fdab294 commit 4762b0f

32 files changed

+256
-233
lines changed

src/MainWebViewPanel.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class MainWebViewPanel {
5454
bodyOption,
5555
bodyRawOption,
5656
bodyRawData,
57-
keyValueData,
57+
keyValueTableData,
5858
command,
5959
}) => {
6060
if (command === COMMAND.ALERT_COPY) {
@@ -71,9 +71,9 @@ class MainWebViewPanel {
7171

7272
this.#url = getUrl(requestUrl);
7373
this.#method = requestMethod;
74-
this.#headers = getHeaders(keyValueData, authOption, authData);
74+
this.#headers = getHeaders(keyValueTableData, authOption, authData);
7575
this.#body = getBody(
76-
keyValueData,
76+
keyValueTableData,
7777
bodyOption,
7878
bodyRawOption,
7979
bodyRawData,

webview/features/Request/Authorization/RequestAuthBearerToken.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import shallow from "zustand/shallow";
44
import InputWrapper from "../../../components/InputWrapper";
55
import Wrapper from "../../../components/Wrapper";
66
import { REQUEST } from "../../../constants";
7-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
88

99
const RequestAuthBearerToken = () => {
10-
const { authDataToken, handleRequestAuthData } = useRequestStore(
10+
const { authDataToken, handleRequestAuthData } = useStore(
1111
(state) => ({
1212
authDataToken: state.authData.token,
1313
handleRequestAuthData: state.handleRequestAuthData,

webview/features/Request/Authorization/RequestAuthSelectMenu.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ import shallow from "zustand/shallow";
44

55
import SelectWrapper from "../../../components/SelectWrapper";
66
import { OPTION, REQUEST } from "../../../constants";
7-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
88
import RequestAuthMenuOption from "./RequestAuthSelectMenuOption";
99

1010
const RequestAuthSelectMenu = () => {
11-
const { authOption, handleRequestAuthType } = useRequestStore(
11+
const { authOption, handleRequestAuthType } = useStore(
1212
(state) => ({
1313
authOption: state.authOption,
14-
authData: state.authData,
1514
handleRequestAuthType: state.handleRequestAuthType,
1615
}),
1716
shallow,

webview/features/Request/Authorization/RequestAuthSelectMenuOption.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import React from "react";
22

33
import { REQUEST } from "../../../constants";
4-
import useRequestStore from "../../../store/requestStore";
4+
import useStore from "../../../store/useStore";
55
import RequestBearerToken from "./RequestAuthBearerToken";
66
import RequestBasicAuth from "./RequestBasicAuth";
77
import RequestNoAuth from "./RequestNoAuth";
88

99
const RequestAuthSelectMenuOption = () => {
10-
const authOption = useRequestStore((state) => state.authOption);
10+
const authOption = useStore((state) => state.authOption);
1111

1212
switch (authOption) {
1313
case REQUEST.BASIC_AUTH:

webview/features/Request/Authorization/RequestBasicAuth.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@ import shallow from "zustand/shallow";
44
import InputWrapper from "../../../components/InputWrapper";
55
import Wrapper from "../../../components/Wrapper";
66
import { REQUEST } from "../../../constants";
7-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
88

99
const RequestBasicAuth = () => {
1010
const {
1111
authData,
12-
handleRequestAuthData,
1312
shouldShowPassword,
13+
handleRequestAuthData,
1414
handleShouldShowPassword,
15-
} = useRequestStore(
15+
} = useStore(
1616
(state) => ({
1717
authData: state.authData,
18-
handleRequestAuthData: state.handleRequestAuthData,
1918
shouldShowPassword: state.shouldShowPassword,
19+
handleRequestAuthData: state.handleRequestAuthData,
2020
handleShouldShowPassword: state.handleShouldShowPassword,
2121
}),
2222
shallow,

webview/features/Request/Body/RequestBodyRawOptions.js

+9-12
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,23 @@ import shallow from "zustand/shallow";
44

55
import SelectWrapper from "../../../components/SelectWrapper";
66
import { OPTION, REQUEST } from "../../../constants";
7-
import useKeyValueTableStore from "../../../store/keyValueTableStore";
8-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
98

109
const RequestBodyRawOptions = () => {
11-
const { bodyRawOption, handleBodyRawOption } = useRequestStore(
10+
const {
11+
bodyRawOption,
12+
handleBodyRawOption,
13+
addRequestBodyHeaders,
14+
removeRequestBodyHeaders,
15+
} = useStore(
1216
(state) => ({
1317
bodyRawOption: state.bodyRawOption,
14-
bodyRawData: state.bodyRawData,
1518
handleBodyRawOption: state.handleBodyRawOption,
19+
addRequestBodyHeaders: state.addRequestBodyHeaders,
20+
removeRequestBodyHeaders: state.removeRequestBodyHeaders,
1621
}),
1722
shallow,
1823
);
19-
const { addRequestBodyHeaders, removeRequestBodyHeaders } =
20-
useKeyValueTableStore(
21-
(state) => ({
22-
addRequestBodyHeaders: state.addRequestBodyHeaders,
23-
removeRequestBodyHeaders: state.removeRequestBodyHeaders,
24-
}),
25-
shallow,
26-
);
2724

2825
const handleBodyRawSelectOption = (event) => {
2926
const selectedOptionIndex = event.target.selectedIndex;

webview/features/Request/Body/RequestBodySelectMenu.js

+17-20
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,28 @@ import shallow from "zustand/shallow";
44

55
import SelectWrapper from "../../../components/SelectWrapper";
66
import { COMMON, OPTION, REQUEST } from "../../../constants";
7-
import useKeyValueTableStore from "../../../store/keyValueTableStore";
8-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
98
import RequestBodyFormatButton from "../Button/RequestBodyFormatButton";
109
import RequestBodyRawOptions from "./RequestBodyRawOptions";
1110
import RequestBodyMenuOption from "./RequestBodySelectMenuOption";
1211

1312
const RequestBodySelectMenu = () => {
14-
const { bodyOption, bodyRawOption, handleRequestBodyOption } =
15-
useRequestStore(
16-
(state) => ({
17-
bodyOption: state.bodyOption,
18-
bodyRawOption: state.bodyRawOption,
19-
handleRequestBodyOption: state.handleRequestBodyOption,
20-
}),
21-
shallow,
22-
);
23-
24-
const { addRequestBodyHeaders, removeRequestBodyHeaders } =
25-
useKeyValueTableStore(
26-
(state) => ({
27-
addRequestBodyHeaders: state.addRequestBodyHeaders,
28-
removeRequestBodyHeaders: state.removeRequestBodyHeaders,
29-
}),
30-
shallow,
31-
);
13+
const {
14+
bodyOption,
15+
bodyRawOption,
16+
handleRequestBodyOption,
17+
addRequestBodyHeaders,
18+
removeRequestBodyHeaders,
19+
} = useStore(
20+
(state) => ({
21+
bodyOption: state.bodyOption,
22+
bodyRawOption: state.bodyRawOption,
23+
handleRequestBodyOption: state.handleRequestBodyOption,
24+
addRequestBodyHeaders: state.addRequestBodyHeaders,
25+
removeRequestBodyHeaders: state.removeRequestBodyHeaders,
26+
}),
27+
shallow,
28+
);
3229

3330
const rawOptionHeaderField = OPTION.REQUEST_BODY_RAW_OPTIONS.filter(
3431
(rawOption) => rawOption.option === bodyRawOption,

webview/features/Request/Body/RequestBodySelectMenuOption.js

+16-6
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,38 @@ import shallow from "zustand/shallow";
44
import { HEIGHT, OPTION, REQUEST } from "../../../constants";
55
import CodeEditor from "../../../shared/CodeEditor";
66
import KeyValueTable from "../../../shared/KeyValueTable";
7-
import useKeyValueTableStore from "../../../store/keyValueTableStore";
8-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
98
import RequestNoBody from "./RequestNoBody";
109

1110
const RequestBodySelectMenuOption = () => {
12-
const keyValueProps = useKeyValueTableStore();
1311
const {
1412
bodyOption,
13+
bodyRawData,
1514
bodyRawOption,
15+
keyValueProps,
1616
codeEditorProps,
17-
bodyRawData,
1817
handleBodyRawOptionData,
19-
} = useRequestStore(
18+
} = useStore(
2019
(state) => ({
2120
bodyOption: state.bodyOption,
2221
bodyRawData: state.bodyRawData,
2322
bodyRawOption: state.bodyRawOption.toLowerCase(),
24-
handleBodyRawOptionData: state.handleBodyRawOptionData,
23+
keyValueProps: {
24+
addNewTableRow: state.addNewTableRow,
25+
deleteTableRow: state.deleteTableRow,
26+
handleRequestKey: state.handleRequestKey,
27+
keyValueTableData: state.keyValueTableData,
28+
handleRequestValue: state.handleRequestValue,
29+
addRequestBodyHeaders: state.addRequestBodyHeaders,
30+
handleRequestCheckbox: state.handleRequestCheckbox,
31+
handleRequestDescription: state.handleRequestDescription,
32+
removeRequestBodyHeaders: state.removeRequestBodyHeaders,
33+
},
2534
codeEditorProps: {
2635
shouldBeautifyEditor: state.shouldBeautifyEditor,
2736
handleBeautifyButton: state.handleBeautifyButton,
2837
},
38+
handleBodyRawOptionData: state.handleBodyRawOptionData,
2939
}),
3040
shallow,
3141
);

webview/features/Request/Button/RequestBodyFormatButton.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import React from "react";
22

33
import Button from "../../../components/Button";
4-
import useRequestStore from "../../../store/requestStore";
4+
import useStore from "../../../store/useStore";
55

66
const RequestBodyFormatButton = () => {
7-
const handleBeautifyButton = useRequestStore(
8-
(state) => state.handleBeautifyButton,
9-
);
7+
const handleBeautifyButton = useStore((state) => state.handleBeautifyButton);
108

119
return (
1210
<Button buttonPurpose="format" handleButtonClick={handleBeautifyButton}>

webview/features/Request/Button/RequestButton.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import React from "react";
22

33
import Button from "../../../components/Button";
4-
import useResponseDataStore from "../../../store/responseDataStore";
4+
import useStore from "../../../store/useStore";
55

66
const RequestButton = () => {
7-
const requestInProcess = useResponseDataStore(
8-
(state) => state.requestInProcess,
9-
);
7+
const requestInProcess = useStore((state) => state.requestInProcess);
108

119
return (
1210
<Button primary buttonType="submit" buttonStatus={requestInProcess}>

webview/features/Request/CodeSnippet/RequestCodeSnippet.js

+25-11
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,48 @@ import codegen from "postman-code-generators";
22
import { Request } from "postman-collection";
33
import React, { useEffect } from "react";
44
import styled from "styled-components";
5+
import shallow from "zustand/shallow";
56

67
import CopyIcon from "../../../components/CopyIcon";
78
import SelectWrapper from "../../../components/SelectWrapper";
89
import { COMMON, HEIGHT, OPTION } from "../../../constants";
910
import CodeEditor from "../../../shared/CodeEditor";
10-
import useKeyValueTableStore from "../../../store/keyValueTableStore";
11-
import useRequestStore from "../../../store/requestStore";
11+
import useStore from "../../../store/useStore";
1212
import { generateSdkRequestObject } from "../../../utils";
1313
import vscode from "../../../vscode";
1414

1515
const RequestCodeSnippet = () => {
1616
const {
17+
authData,
1718
requestUrl,
18-
requestMethod,
1919
authOption,
20-
authData,
2120
bodyOption,
22-
bodyRawOption,
2321
bodyRawData,
22+
requestMethod,
23+
bodyRawOption,
24+
codeSnippetValue,
25+
keyValueTableData,
2426
codeSnippetOption,
27+
setCodeSnippetValue,
2528
handleCodeSnippetOptionChange,
2629
handleCodeSnippetVariantChange,
27-
codeSnippetValue,
28-
setCodeSnippetValue,
29-
} = useRequestStore();
30-
31-
const keyValueTableData = useKeyValueTableStore(
32-
(state) => state.keyValueTableData,
30+
} = useStore(
31+
(state) => ({
32+
authData: state.authData,
33+
requestUrl: state.requestUrl,
34+
authOption: state.authOption,
35+
bodyOption: state.bodyOption,
36+
bodyRawData: state.bodyRawData,
37+
requestMethod: state.requestMethod,
38+
bodyRawOption: state.bodyRawOption,
39+
codeSnippetValue: state.codeSnippetValue,
40+
keyValueTableData: state.keyValueTableData,
41+
codeSnippetOption: state.codeSnippetOption,
42+
setCodeSnippetValue: state.setCodeSnippetValue,
43+
handleCodeSnippetOptionChange: state.handleCodeSnippetOptionChange,
44+
handleCodeSnippetVariantChange: state.handleCodeSnippetVariantChange,
45+
}),
46+
shallow,
3347
);
3448

3549
const handleCopyIconClick = (value) => {

webview/features/Request/Menu/RequestMenu.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,14 @@ import shallow from "zustand/shallow";
44
import DetailOption from "../../../components/DetailOption";
55
import MenuOption from "../../../components/MenuOption";
66
import { COMMON, OPTION, REQUEST } from "../../../constants/";
7-
import useKeyValueTableStore from "../../../store/keyValueTableStore";
8-
import useRequestStore from "../../../store/requestStore";
7+
import useStore from "../../../store/useStore";
98
import RequestMenuOption from "./RequestMenuOption";
109

1110
const RequestMenu = () => {
12-
const keyValueTableData = useKeyValueTableStore(
13-
(state) => state.keyValueTableData,
14-
);
15-
const { requestOption, changeRequestOption } = useRequestStore(
11+
const { requestOption, keyValueTableData, changeRequestOption } = useStore(
1612
(state) => ({
1713
requestOption: state.requestOption,
14+
keyValueTableData: state.keyValueTableData,
1815
changeRequestOption: state.handleRequestOptionChange,
1916
}),
2017
shallow,

webview/features/Request/Menu/RequestMenuOption.js

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
11
import React from "react";
2+
import shallow from "zustand/shallow";
23

34
import { COMMON, REQUEST } from "../../../constants";
45
import KeyValueTable from "../../../shared/KeyValueTable";
5-
import useKeyValueTableStore from "../../../store/keyValueTableStore";
6-
import useRequestStore from "../../../store/requestStore";
6+
import useStore from "../../../store/useStore";
77
import RequestAuthSelectMenu from "../Authorization/RequestAuthSelectMenu";
88
import RequestBodySelectMenu from "../Body/RequestBodySelectMenu";
99
import RequestCodeSnippet from "../CodeSnippet/RequestCodeSnippet";
1010

1111
const RequestMenuOption = () => {
12-
const keyValueProps = useKeyValueTableStore();
13-
const requestOption = useRequestStore((state) => state.requestOption);
12+
const { requestOption, keyValueProps } = useStore(
13+
(state) => ({
14+
requestOption: state.requestOption,
15+
keyValueProps: {
16+
addNewTableRow: state.addNewTableRow,
17+
deleteTableRow: state.deleteTableRow,
18+
handleRequestKey: state.handleRequestKey,
19+
keyValueTableData: state.keyValueTableData,
20+
handleRequestValue: state.handleRequestValue,
21+
addRequestBodyHeaders: state.addRequestBodyHeaders,
22+
handleRequestCheckbox: state.handleRequestCheckbox,
23+
handleRequestDescription: state.handleRequestDescription,
24+
removeRequestBodyHeaders: state.removeRequestBodyHeaders,
25+
},
26+
}),
27+
shallow,
28+
);
1429

1530
switch (requestOption) {
1631
case REQUEST.PARAMS:

webview/features/Request/Method/RequestMethod.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import React from "react";
22
import styled from "styled-components";
33

44
import { OPTION, REQUEST } from "../../../constants";
5-
import useRequestStore from "../../../store/requestStore";
5+
import useStore from "../../../store/useStore";
66

77
const RequestMethod = () => {
8-
const handleRequestMethodChange = useRequestStore(
8+
const handleRequestMethodChange = useStore(
99
(state) => state.handleRequestMethodChange,
1010
);
1111

0 commit comments

Comments
 (0)