summaryrefslogtreecommitdiffstats
path: root/src/components/RequestSummary
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2021-12-30 09:51:00 +0100
committerGravatar Tom van der Lee <tom@vanderlee.io>2022-01-11 00:00:22 +0100
commitbcb77d979d817e1e609adb4d007bbbcc3f61efbd (patch)
tree093c5a2914ee0f6e1ec559b3b98725190fee7285 /src/components/RequestSummary
downloadclient-bcb77d979d817e1e609adb4d007bbbcc3f61efbd.tar.gz
client-bcb77d979d817e1e609adb4d007bbbcc3f61efbd.tar.bz2
client-bcb77d979d817e1e609adb4d007bbbcc3f61efbd.zip
Prepare for githubv1.0.0
Diffstat (limited to 'src/components/RequestSummary')
-rw-r--r--src/components/RequestSummary/RequestSummary.module.scss24
-rw-r--r--src/components/RequestSummary/RequestSummary.tsx33
2 files changed, 57 insertions, 0 deletions
diff --git a/src/components/RequestSummary/RequestSummary.module.scss b/src/components/RequestSummary/RequestSummary.module.scss
new file mode 100644
index 0000000..e1752b3
--- /dev/null
+++ b/src/components/RequestSummary/RequestSummary.module.scss
@@ -0,0 +1,24 @@
1.requestSummary {
2 display: grid;
3 grid-template-columns: auto 1fr auto;
4 padding: 1em;
5 grid-gap: 1em;
6 align-items: center;
7}
8
9.method {
10}
11
12.statusCode {
13 padding: 0.2em;
14 border-radius: 0.4em;
15 background-color: darkgray;
16
17 &.info, &.success, &.redirect {
18 background-color: forestgreen;
19 }
20
21 &.clientError, &.serverError {
22 background-color: red;
23 }
24}
diff --git a/src/components/RequestSummary/RequestSummary.tsx b/src/components/RequestSummary/RequestSummary.tsx
new file mode 100644
index 0000000..af928c0
--- /dev/null
+++ b/src/components/RequestSummary/RequestSummary.tsx
@@ -0,0 +1,33 @@
1import {RequestResponse} from "~hooks/useRequests";
2import * as React from "react";
3import classNames from "classnames";
4
5import styles from './RequestSummary.module.scss';
6
7interface RequestSummaryProps {
8 requestResponse: RequestResponse
9 className?: string
10}
11
12function isBetween(value: number, min: number, max: number) {
13 return value >= min && value <= max
14}
15
16export default function RequestSummary({ requestResponse: { request, response }, className = ''}: RequestSummaryProps) {
17 const statusCode = response?.status ?? 0
18 return (
19 <div className={classNames(styles.requestSummary, className)}>
20 <span className={styles.method}>{ request.method }</span>
21 <p>{ request.path }</p>
22 <span className={classNames(styles.statusCode, {
23 [styles.info]: isBetween(statusCode, 100, 199),
24 [styles.success]: isBetween(statusCode, 200, 299),
25 [styles.redirect]: isBetween(statusCode, 300, 399),
26 [styles.clientError]: isBetween(statusCode, 400, 499),
27 [styles.serverError]: isBetween(statusCode, 500, 599)
28 })}>
29 { response?.status ?? 'Loading...'}
30 </span>
31 </div>
32 )
33}