summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2024-09-04 10:27:24 +0200
committerGravatar Tom van der Lee <tom@vanderlee.io>2024-09-04 10:27:24 +0200
commita087494f6809a7a8ea8e6c27a105d8c8f0f3839e (patch)
tree617c0dbd168d6e340923dd17b07cc8239787e196
parentfe61544bafafc8b4de78cc71cb641af2dfb7b72d (diff)
downloadclient-a087494f6809a7a8ea8e6c27a105d8c8f0f3839e.tar.gz
client-a087494f6809a7a8ea8e6c27a105d8c8f0f3839e.tar.bz2
client-a087494f6809a7a8ea8e6c27a105d8c8f0f3839e.zip
Updated the libraries
-rw-r--r--package.json27
-rw-r--r--src/components/App/App.tsx18
-rw-r--r--src/components/Content/Content.tsx19
-rw-r--r--src/components/Frames/Frames.tsx3
-rw-r--r--src/components/RequestList/RequestList.tsx4
-rw-r--r--src/components/RequestSummary/RequestSummary.tsx3
-rw-r--r--src/contexts/DarkMode.tsx41
-rw-r--r--src/contexts/Settings.tsx65
-rw-r--r--src/index.scss1
-rw-r--r--src/index.tsx6
-rw-r--r--src/types.ts4
-rw-r--r--vite.config.mjs (renamed from vite.config.js)0
-rw-r--r--yarn.lock622
13 files changed, 459 insertions, 354 deletions
diff --git a/package.json b/package.json
index 51a2660..948e21f 100644
--- a/package.json
+++ b/package.json
@@ -10,23 +10,22 @@
10 }, 10 },
11 "license": "MIT", 11 "license": "MIT",
12 "dependencies": { 12 "dependencies": {
13 "bootstrap": "^5.1.3", 13 "bootstrap": "^5.3.3",
14 "bootstrap-darkmode": "5.0.0-beta.1", 14 "bootstrap-icons": "^1.11.3",
15 "bootstrap-icons": "^1.7.2", 15 "classnames": "^2.5.1",
16 "classnames": "^2.3.1", 16 "dayjs": "^1.11.13",
17 "dayjs": "^1.10.7", 17 "react": "^18.3.1",
18 "react": "^17.0.2", 18 "react-bootstrap": "^2.10.4",
19 "react-bootstrap": "^2.1.1", 19 "react-dom": "^18.3.1",
20 "react-dom": "^17.0.2",
21 "react-json-view": "^1.21.3" 20 "react-json-view": "^1.21.3"
22 }, 21 },
23 "devDependencies": { 22 "devDependencies": {
24 "@types/react": "^16.9.34", 23 "@types/react": "^18.3.5",
25 "@types/react-dom": "^16.9.7", 24 "@types/react-dom": "^18.3.0",
26 "@vitejs/plugin-react": "^1.2.0", 25 "@vitejs/plugin-react": "^4.3.1",
27 "babel-preset-nano-react-app": "^0.1.0", 26 "babel-preset-nano-react-app": "^0.1.0",
28 "sass": "^1.45.2", 27 "sass": "^1.78.0",
29 "typescript": "^3.8.3", 28 "typescript": "^5.5.4",
30 "vite": "^2.6.7" 29 "vite": "^5.4.3"
31 } 30 }
32} 31}
diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx
index ad36add..85119e6 100644
--- a/src/components/App/App.tsx
+++ b/src/components/App/App.tsx
@@ -1,25 +1,19 @@
1import * as React from "react"; 1import * as React from "react";
2import { ReactElement, useContext, useEffect, useMemo, useState } from "react"; 2import { ReactElement, useContext, useEffect } from "react";
3import useRequests from "~/hooks/useRequests";
4 3
5import styles from "~/components/App/App.module.scss"; 4import styles from "~/components/App/App.module.scss";
6import RequestDetails from "~/components/RequestDetails/RequestDetails"; 5import RequestDetails from "~/components/RequestDetails/RequestDetails";
7import { getHost } from "~/utils";
8import { Container, Nav, Navbar, NavDropdown } from "react-bootstrap"; 6import { Container, Nav, Navbar, NavDropdown } from "react-bootstrap";
9import classNames from "classnames"; 7import classNames from "classnames";
10import Sliders from "~/components/Icons/Sliders"; 8import Sliders from "~/components/Icons/Sliders";
11import Sun from "~/components/Icons/Sun"; 9import Sun from "~/components/Icons/Sun";
12import Moon from "~/components/Icons/Moon"; 10import Moon from "~/components/Icons/Moon";
13import Trash from "~/components/Icons/Trash"; 11import Trash from "~/components/Icons/Trash";
14import { DarkModeContext } from "~/contexts/DarkMode"; 12import { SettingsContext } from "~/contexts/Settings";
15import RequestList from "~/components/RequestList/RequestList"; 13import RequestList from "~/components/RequestList/RequestList";
16import { Call, ReadyState } from "~/types"; 14import { ReadyState } from "~/types";
17import { ConnectionContext } from "~/contexts/Connection"; 15import { ConnectionContext } from "~/contexts/Connection";
18 16
19interface Config {
20 url: string;
21}
22
23interface SettingsMenu { 17interface SettingsMenu {
24 icon: ReactElement; 18 icon: ReactElement;
25 label: string; 19 label: string;
@@ -48,8 +42,8 @@ const statusTextMap: ReadyStateMap = {
48}; 42};
49 43
50export default function App() { 44export default function App() {
51 const { darkMode, toggle } = useContext(DarkModeContext); 45 const { darkMode, setSetting } = useContext(SettingsContext);
52 const { config, selectedCall, setSelectedCall, readyState, clear } = 46 const { config, setSelectedCall, readyState, clear } =
53 useContext(ConnectionContext); 47 useContext(ConnectionContext);
54 48
55 useEffect(() => { 49 useEffect(() => {
@@ -59,7 +53,7 @@ export default function App() {
59 53
60 const settingsMenu: (SettingsMenu | null)[] = [ 54 const settingsMenu: (SettingsMenu | null)[] = [
61 { 55 {
62 onClick: toggle, 56 onClick: () => setSetting("darkMode", !darkMode),
63 icon: darkMode ? <Sun /> : <Moon />, 57 icon: darkMode ? <Sun /> : <Moon />,
64 label: darkMode ? "Light mode" : "Dark mode", 58 label: darkMode ? "Light mode" : "Dark mode",
65 }, 59 },
diff --git a/src/components/Content/Content.tsx b/src/components/Content/Content.tsx
index e670376..94fca32 100644
--- a/src/components/Content/Content.tsx
+++ b/src/components/Content/Content.tsx
@@ -4,7 +4,7 @@ import { Headers, RequestPayload, ResponsePayload } from "~hooks/useRequests";
4import ReactJson from "react-json-view"; 4import ReactJson from "react-json-view";
5import styles from "~/components/Content/Content.module.scss"; 5import styles from "~/components/Content/Content.module.scss";
6import { Button, Col, Container, Row } from "react-bootstrap"; 6import { Button, Col, Container, Row } from "react-bootstrap";
7import { DarkModeContext } from "~/contexts/DarkMode"; 7import { SettingsContext } from "~/contexts/Settings";
8 8
9function getHeader( 9function getHeader(
10 headers: Headers, 10 headers: Headers,
@@ -80,14 +80,14 @@ export default function Content({
80} 80}
81 81
82function ContentBody({ data, raw = false }: Omit<ContentProps, "setRaw">) { 82function ContentBody({ data, raw = false }: Omit<ContentProps, "setRaw">) {
83 const { darkMode } = useContext(DarkModeContext); 83 const { darkMode } = useContext(SettingsContext);
84 const contentType = useMemo(() => { 84 const contentType = useMemo(() => {
85 if (raw) { 85 if (raw) {
86 return ""; 86 return "";
87 } 87 }
88 88
89 const type = getHeader(data.headers, "content-type"); 89 const type = getHeader(data.headers, "content-type");
90 return type.toLowerCase().split(";")[0]; 90 return type?.toLowerCase().split(";")[0];
91 }, [data, raw]); 91 }, [data, raw]);
92 92
93 if (raw) { 93 if (raw) {
@@ -98,7 +98,10 @@ function ContentBody({ data, raw = false }: Omit<ContentProps, "setRaw">) {
98 ); 98 );
99 } 99 }
100 100
101 if (["application/pdf", "text/html"].includes(contentType)) { 101 if (
102 contentType !== undefined &&
103 ["application/pdf", "text/html"].includes(contentType)
104 ) {
102 return ( 105 return (
103 <iframe 106 <iframe
104 className="bg-white" 107 className="bg-white"
@@ -110,7 +113,7 @@ function ContentBody({ data, raw = false }: Omit<ContentProps, "setRaw">) {
110 ); 113 );
111 } 114 }
112 115
113 if (contentType.startsWith("application/json")) { 116 if (contentType?.startsWith("application/json")) {
114 return ( 117 return (
115 <ReactJson 118 <ReactJson
116 src={JSON.parse(atob(data.body))} 119 src={JSON.parse(atob(data.body))}
@@ -125,15 +128,15 @@ function ContentBody({ data, raw = false }: Omit<ContentProps, "setRaw">) {
125 ); 128 );
126 } 129 }
127 130
128 if (contentType.startsWith("audio")) { 131 if (contentType?.startsWith("audio")) {
129 return <audio src={`data:${contentType};base64,${data.body}`} />; 132 return <audio src={`data:${contentType};base64,${data.body}`} />;
130 } 133 }
131 134
132 if (contentType.startsWith("video")) { 135 if (contentType?.startsWith("video")) {
133 return <video src={`data:${contentType};base64,${data.body}`} />; 136 return <video src={`data:${contentType};base64,${data.body}`} />;
134 } 137 }
135 138
136 if (contentType.startsWith("image")) { 139 if (contentType?.startsWith("image")) {
137 return <img src={`data:${contentType};base64,${data.body}`} alt="" />; 140 return <img src={`data:${contentType};base64,${data.body}`} alt="" />;
138 } 141 }
139 142
diff --git a/src/components/Frames/Frames.tsx b/src/components/Frames/Frames.tsx
index 83c4c96..1d31d92 100644
--- a/src/components/Frames/Frames.tsx
+++ b/src/components/Frames/Frames.tsx
@@ -5,7 +5,7 @@ import classNames from "classnames";
5import styles from "./Frames.module.scss"; 5import styles from "./Frames.module.scss";
6import dayjs from "dayjs"; 6import dayjs from "dayjs";
7import ReactJson from "react-json-view"; 7import ReactJson from "react-json-view";
8import { DarkModeContext } from "~/contexts/DarkMode"; 8import { SettingsContext } from "~/contexts/Settings";
9 9
10function isJson(data: any): boolean { 10function isJson(data: any): boolean {
11 try { 11 try {
@@ -23,7 +23,6 @@ interface FramesProps {
23export default function Frames({ 23export default function Frames({
24 frames, 24 frames,
25}: PropsWithChildren<FramesProps>): JSX.Element { 25}: PropsWithChildren<FramesProps>): JSX.Element {
26 const { darkMode } = useContext(DarkModeContext);
27 return ( 26 return (
28 <ListGroup variant="flush" as="ul" className={"flex-grow-1"}> 27 <ListGroup variant="flush" as="ul" className={"flex-grow-1"}>
29 {frames.length > 0 ? ( 28 {frames.length > 0 ? (
diff --git a/src/components/RequestList/RequestList.tsx b/src/components/RequestList/RequestList.tsx
index 82a6b21..8217229 100644
--- a/src/components/RequestList/RequestList.tsx
+++ b/