1+ import { useEffect } from "react" ;
12import { useState } from "react" ;
23
34function App ( ) {
@@ -6,14 +7,23 @@ function App() {
67
78 const [ messageInput , setMessageInput ] = useState ( "" ) ;
89
9- const [ messages , setMessages ] = useState ( [
10- {
11- id : 1 ,
12- username : "System" ,
13- text : "Welcome to the chat" ,
14- createdAt : new Date ( ) . toLocaleTimeString ( ) ,
15- } ,
16- ] ) ;
10+ const [ messages , setMessages ] = useState ( [ ] ) ;
11+
12+ async function fetchMessages ( ) {
13+ try {
14+ const response = await fetch ( "http://localhost:3000/messages" ) ;
15+
16+ const data = await response . json ( ) ;
17+
18+ setMessages ( data ) ;
19+ } catch ( error ) {
20+ console . error ( "Error fetching messages:" , error ) ;
21+ }
22+ }
23+
24+ useEffect ( ( ) => {
25+ fetchMessages ( ) ;
26+ } , [ ] ) ;
1727
1828 function handleUserNameSubmit ( e ) {
1929 e . preventDefault ( ) ;
@@ -23,22 +33,31 @@ function App() {
2333 setSavedUsername ( username ) ;
2434 }
2535
26- function handleMessageSubmit ( e ) {
36+ async function handleMessageSubmit ( e ) {
2737 e . preventDefault ( ) ;
2838
2939 if ( ! messageInput . trim ( ) ) return ;
3040
3141 const newMessage = {
32- id : Date . now ( ) ,
3342 userName : savedUsername ,
3443 text : messageInput ,
35- createdAt : new Date ( ) . toLocaleTimeString ( ) ,
3644 } ;
3745
38- setMessages ( [ ...messages , newMessage ] ) ;
39-
40- setMessageInput ( "" ) ;
41- console . log ( messages )
46+ try {
47+ await fetch ( "http://localhost:3000/messages" , {
48+ method : "POST" ,
49+ headers : {
50+ "Content-Type" : "application/json" ,
51+ } ,
52+ body : JSON . stringify ( newMessage ) ,
53+ } ) ;
54+
55+ setMessageInput ( "" ) ;
56+
57+ fetchMessages ( ) ;
58+ } catch ( error ) {
59+ console . error ( "Error sending message:" , error ) ;
60+ }
4261 }
4362
4463 if ( ! savedUsername ) {
@@ -72,7 +91,7 @@ function App() {
7291
7392 < p > { message . text } </ p >
7493
75- < small > { message . createdAt } </ small >
94+ < small > { new Date ( message . createdAt ) . toLocaleTimeString ( ) } </ small >
7695 </ div >
7796 ) ) }
7897 </ div >
0 commit comments