Skip to content

Commit e9b071f

Browse files
authored
Merge pull request #39 from REST-API-Client/refactor/debounceInputValue
[2022/07/22] - Add debounce and useMemo for better app performance
2 parents 1b14476 + f91758d commit e9b071f

3 files changed

Lines changed: 31 additions & 19 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview/components/Button.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ const ButtonWrapper = styled.button`
3131
background-color: ${(props) =>
3232
props.primary ? "rgb(14, 99, 156)" : "var(--vscode-input-background)"};
3333
transition: background-color 0.2s ease-in-out;
34-
35-
:hover {
36-
background-color: ${(props) => props.primary && "rgb(14, 99, 156)"};
37-
}
3834
`;
3935

4036
Button.propTypes = {

webview/features/Request/CodeSnippet/RequestCodeSnippet.js

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import codegen from "postman-code-generators";
22
import { Request } from "postman-collection";
3-
import React, { useEffect } from "react";
3+
import React, { useEffect, useMemo } from "react";
44
import styled from "styled-components";
5+
import { useDebounce } from "use-debounce";
56
import shallow from "zustand/shallow";
67

78
import CopyIcon from "../../../components/CopyIcon";
@@ -46,22 +47,37 @@ const RequestCodeSnippet = () => {
4647
shallow,
4748
);
4849

50+
const [debouncedUrlValue] = useDebounce(requestUrl, 800);
51+
4952
const handleCopyIconClick = (value) => {
5053
vscode.postMessage({ command: COMMON.ALERT_COPY });
5154

5255
navigator.clipboard.writeText(value);
5356
};
5457

55-
const sdkRequestObject = generateSdkRequestObject(
56-
requestUrl,
57-
requestMethod,
58-
keyValueTableData,
59-
authOption,
60-
authData,
61-
bodyOption,
62-
bodyRawOption,
63-
bodyRawData,
64-
Request,
58+
const memoizedSdkRequestObject = useMemo(
59+
() =>
60+
generateSdkRequestObject(
61+
debouncedUrlValue,
62+
requestMethod,
63+
keyValueTableData,
64+
authOption,
65+
authData,
66+
bodyOption,
67+
bodyRawOption,
68+
bodyRawData,
69+
Request,
70+
),
71+
[
72+
debouncedUrlValue,
73+
requestMethod,
74+
keyValueTableData,
75+
authOption,
76+
authData,
77+
bodyOption,
78+
bodyRawOption,
79+
bodyRawData,
80+
],
6581
);
6682

6783
const handleCodeSnippetOption = (event) => {
@@ -80,7 +96,7 @@ const RequestCodeSnippet = () => {
8096
codegen.convert(
8197
codeSnippetOption.language.toLowerCase(),
8298
codeSnippetOption.variant,
83-
sdkRequestObject,
99+
memoizedSdkRequestObject,
84100
{},
85101
(error, snippet) => {
86102
if (error) {
@@ -90,7 +106,7 @@ const RequestCodeSnippet = () => {
90106
},
91107
);
92108
}, [
93-
requestUrl,
109+
debouncedUrlValue,
94110
requestMethod,
95111
codeSnippetOption.language,
96112
codeSnippetOption.variant,

0 commit comments

Comments
 (0)