Skip to content

Commit c1f16c4

Browse files
committed
chore: rewrite reactjs code to use objects to manage state
1 parent 468e8fd commit c1f16c4

File tree

1 file changed

+54
-36
lines changed

1 file changed

+54
-36
lines changed

frontend/src/App.tsx

Lines changed: 54 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -24,32 +24,45 @@ const darkTheme = createTheme({
2424
},
2525
});
2626

27+
class Request {
28+
Method: string;
29+
URL: string;
30+
Headers: string;
31+
Body: string;
32+
33+
constructor(source: any = {}) {
34+
if ('string' === typeof source) source = JSON.parse(source);
35+
this.Method = source["Method"];
36+
this.URL = source["URL"];
37+
this.Headers = source["Headers"];
38+
this.Body = source["Body"];
39+
}
40+
}
41+
2742

2843
function App() {
44+
const [request, setRequest] = useState(new Request({"Method": "GET"}))
2945
const [result, setResult] = useState(new main.RequestResult)
30-
const [resultText, setResultText] = useState("");
3146
const [curlBody, setCurlBody] = useState("");
32-
const [reqMethod, setReqMethod] = useState("GET");
33-
const [errorText, setErrorText] = useState("");
34-
const [reqBody, setReqBody] = useState("");
35-
const [reqHeaders, setReqHeaders] = useState("");
36-
const [resultHeader, setResultHeader] = useState("");
37-
const [url, setURL] = useState('');
3847
const [open, setOpen] = useState(false);
39-
const updateURL = (e: any) => setURL(e.target.value);
40-
const updateResultText = (result: any) => {
41-
setResult(result)
42-
setResultHeader(result.HeadersStr)
43-
setResultText(result.Body)
44-
setErrorText(result.Error)
48+
49+
50+
const handleRequestChange = (e: any) => {
51+
const { name, value } = e.target;
52+
setRequest(prevState => ({
53+
...prevState,
54+
[name]: value
55+
}));
4556
};
46-
const updateCurlResult = (result: any) => {
47-
setURL(result.URL)
48-
setReqBody(result.RequestBody)
49-
setReqHeaders(result.ReqHeaders)
50-
setReqMethod(result.Method)
51-
handleClose()
52-
}
57+
58+
const handleResultChange = (e: any) => {
59+
const { name, value } = e.target;
60+
setResult(prevState => ({
61+
...prevState,
62+
[name]: value
63+
}));
64+
};
65+
5366
const handleOpen = () => setOpen(true);
5467
const handleClose = () => setOpen(false);
5568
const style = {
@@ -62,19 +75,23 @@ function App() {
6275
p: 4,
6376
};
6477

65-
const updateMethod = (e: any) => setReqMethod(e.target.value);
66-
const updateBody = (e:any) => setReqBody(e.target.value)
67-
const updateReqHeaders = (e:any) => setReqHeaders(e.target.value)
6878
const updateCurlBody = (e:any) => setCurlBody(e.target.value)
6979
function makeRequest() {
70-
MakeRequest(url, reqMethod, reqBody, reqHeaders).then(updateResultText);
80+
console.log(request)
81+
MakeRequest(request.URL, request.Method, request.Body, request.Headers).then(setResult);
7182
}
7283

7384
function importCurl() {
74-
console.log("importing curl")
7585
RunCurl(curlBody).then((result: any)=>{
76-
updateResultText(result)
77-
updateCurlResult(result)
86+
let req = new Request({
87+
"Method": result.Method,
88+
"URL": result.URL,
89+
"Body": result.RequestBody,
90+
"Headers": result.ReqHeaders,
91+
})
92+
setRequest(req)
93+
setResult(result)
94+
setOpen(false)
7895
})
7996
}
8097

@@ -111,15 +128,16 @@ function App() {
111128
<Button onClick={handleOpen} variant="outlined">Curl</Button>
112129
</Grid>
113130
<Grid xs={1}>
114-
<Select label="Type" value={reqMethod} className="url" color="success" variant="standard" onChange={updateMethod}>
131+
<Select label="Type" value={request.Method} color="success" name="Method"
132+
variant="standard" onChange={handleRequestChange}>
115133
<MenuItem value={"GET"}>GET</MenuItem>
116134
<MenuItem value={"POST"}>POST</MenuItem>
117135
<MenuItem value={"PUT"}>PUT</MenuItem>
118136
</Select>
119137
</Grid>
120138
<Grid xs={8}>
121-
<TextField id="url" className="url" variant="standard" value={url}
122-
onChange={updateURL} autoComplete="off" name="url"/>
139+
<TextField id="url" className="url" variant="standard" value={request.URL}
140+
onChange={handleRequestChange} autoComplete="off" name="URL"/>
123141
</Grid>
124142
<Grid xs={1}>
125143
<div id="req-button-p">
@@ -128,25 +146,25 @@ function App() {
128146
</Grid>
129147
<Grid xs={4} className="req-headers-p">
130148
<Divider textAlign="left" className="req-header-div" color="success"><span>Request Headers</span></Divider>
131-
<TextField id="reqheaders" multiline className="req-headers" variant="filled" rows={10} color="success" value={reqHeaders}
132-
onChange={updateReqHeaders} autoComplete="off" name="reqheaders"/>
149+
<TextField id="reqheaders" multiline className="req-headers" variant="filled" rows={10} color="success"
150+
value={request.Headers} onChange={handleResultChange} autoComplete="off" name="Headers"/>
133151
</Grid>
134152
<Grid xs={8} className="req-body-p">
135153
<Divider textAlign="left" className="body-div" color="primary"><span>Request Body</span></Divider>
136154
<TextField id="url" multiline className="req-body" variant="filled" rows={10} color="primary"
137-
onChange={updateBody} autoComplete="off" name="reqbody"/>
155+
onChange={handleResultChange} value={result.RequestBody} autoComplete="off" name="RequestBody"/>
138156
</Grid>
139157
<Grid xs={4} className="headersp">
140158
<Divider textAlign="left" className="header-div"><span color='#82aaff'>Headers</span></Divider>
141-
<div id="headers" className="headers"><pre>{resultHeader}</pre></div>
159+
<div id="headers" className="headers"><pre>{result.HeadersStr}</pre></div>
142160
</Grid>
143161
<Grid xs={8} className="resultp">
144162
<Divider textAlign="left" className="res-div"><span color='#c3e88d'>Response</span></Divider>
145-
<div id="result" className="result"><pre>{resultText}</pre></div>
163+
<div id="result" className="result"><pre>{result.Body}</pre></div>
146164
</Grid>
147165
<Grid xs={12} className="errorp">
148166
<Divider textAlign="left" className="error-div" color="error">Error</Divider>
149-
<div id="error" className="error"><pre>{errorText}</pre></div>
167+
<div id="error" className="error"><pre>{result.Error}</pre></div>
150168
</Grid>
151169
</Grid>
152170
</CssVarsProvider>

0 commit comments

Comments
 (0)