11import codegen from "postman-code-generators" ;
22import { Request } from "postman-collection" ;
3- import React , { useEffect } from "react" ;
3+ import React , { useEffect , useMemo } from "react" ;
44import styled from "styled-components" ;
5+ import { useDebounce } from "use-debounce" ;
56import shallow from "zustand/shallow" ;
67
78import 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