diff --git a/src/App.tsx b/src/App.tsx index 8c9d79d..757e769 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,78 +1,18 @@ -import { useState, useEffect } from 'react' import { Routes, Route } from 'react-router' import './App.css' import TemplatePage from './pages/TemplatePage/Template.tsx' import Home from './pages/Home/Home.tsx' +import ServerComms from './pages/ServerComms/ServerComms.tsx' -function App() { - const [message, setMessage] = useState(''); - const [sseMessage, setSseMessage] = useState(''); - const [spoken, setSpoken] = useState(""); - - const sendMessage = async () => { - try { - const response = await fetch("http://localhost:8000/message", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ message }), - }); - const data = await response.json(); - console.log(data); - } catch (error) { - console.error("Error sending message: ", error); - } - }; - - useEffect(() => { - const eventSource = new EventSource("http://localhost:8000/sse"); - - eventSource.onmessage = (event) => { - setSseMessage(event.data); - - try { - const data = JSON.parse(event.data); - if (data.speech) setSpoken(data.speech); - } catch {} - }; - - return () => { - eventSource.close(); - }; - }, []); - - return ( -
-
- setMessage(e.target.value)} - onKeyDown={(e) => e.key === "Enter" && sendMessage().then(() => setMessage(""))} - placeholder="Enter a message" - /> - -
-
-

Message from Server (SSE):

-

{sseMessage}

-
-
-

Spoken text (SSE):

-

{spoken}

-
-
- ); -/* - function App(){ +function App(){ return ( } /> } /> + } /> ) } -*/ + export default App diff --git a/src/pages/Home/Home.tsx b/src/pages/Home/Home.tsx index 5c4a72d..8767db3 100644 --- a/src/pages/Home/Home.tsx +++ b/src/pages/Home/Home.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +//import { useState } from 'react' import { Link } from 'react-router' import reactLogo from '../../assets/react.svg' import viteLogo from '../../assets/vite.svg' @@ -29,7 +29,7 @@ function Home() {

Vite + React

- + diff --git a/src/pages/ServerComms/ServerComms.css b/src/pages/ServerComms/ServerComms.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/ServerComms/ServerComms.tsx b/src/pages/ServerComms/ServerComms.tsx new file mode 100644 index 0000000..c16ec81 --- /dev/null +++ b/src/pages/ServerComms/ServerComms.tsx @@ -0,0 +1,80 @@ +import { useState, useEffect } from 'react' +import { Link } from 'react-router' +//import Counter from '../../components/components.tsx' + + +//this is your css file where you can style your buttons and such +//you can still use css parts from App.css, but also overwrite them + +function ServerComms() { + const [message, setMessage] = useState(''); + const [sseMessage, setSseMessage] = useState(''); + const [spoken, setSpoken] = useState(""); + + const sendMessage = async () => { + try { + const response = await fetch("http://localhost:8000/message", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ message }), + }); + const data = await response.json(); + console.log(data); + } catch (error) { + console.error("Error sending message: ", error); + } + }; + + useEffect(() => { + const eventSource = new EventSource("http://localhost:8000/sse"); + + eventSource.onmessage = (event) => { + setSseMessage(event.data); + + try { + const data = JSON.parse(event.data); + if (data.speech) setSpoken(data.speech); + } catch {} + }; + + return () => { + eventSource.close(); + }; + }, []); + + return ( +
+
+ setMessage(e.target.value)} + onKeyDown={(e) => e.key === "Enter" && sendMessage().then(() => setMessage(""))} + placeholder="Enter a message" + /> + +
+
+

Message from Server (SSE):

+

{sseMessage}

+
+
+

Spoken text (SSE):

+

{spoken}

+
+
+ {/* here you link to the homepage, in App.tsx you can link new pages */} + + +
+
+ + + ); +} + +export default ServerComms \ No newline at end of file diff --git a/src/pages/TemplatePage/Template.tsx b/src/pages/TemplatePage/Template.tsx index 4cb3118..1a3feac 100644 --- a/src/pages/TemplatePage/Template.tsx +++ b/src/pages/TemplatePage/Template.tsx @@ -1,7 +1,8 @@ import { useState } from 'react' import { Link } from 'react-router' import Counter from '../../components/components.tsx' -import style from './Template.module.css' +//import style from './Template.module.css' +import '../../App.css' //this is your css file where you can style your buttons and such //you can still use css parts from App.css, but also overwrite them