@@ -4,20 +4,48 @@ function App() {
44 const [ username , setUsername ] = useState ( "" ) ;
55 const [ savedUsername , setSavedUsername ] = useState ( "" ) ;
66
7- function handleSubmit ( e ) {
7+ const [ messageInput , setMessageInput ] = useState ( "" ) ;
8+
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+ ] ) ;
17+
18+ function handleUserNameSubmit ( e ) {
819 e . preventDefault ( ) ;
920
1021 if ( ! username . trim ( ) ) return ;
1122
1223 setSavedUsername ( username ) ;
1324 }
1425
26+ function handleMessageSubmit ( e ) {
27+ e . preventDefault ( ) ;
28+
29+ if ( ! messageInput . trim ( ) ) return ;
30+
31+ const newMessage = {
32+ id : Date . now ( ) ,
33+ userName : savedUsername ,
34+ text : messageInput ,
35+ createdAt : new Date ( ) . toLocaleTimeString ( ) ,
36+ } ;
37+
38+ setMessages ( [ ...messages , newMessage ] ) ;
39+
40+ setMessageInput ( "" ) ;
41+ }
42+
1543 if ( ! savedUsername ) {
1644 return (
1745 < div >
1846 < h1 > Join Chat</ h1 >
1947
20- < form onSubmit = { handleSubmit } >
48+ < form onSubmit = { handleUserNameSubmit } >
2149 < input
2250 type = "text"
2351 placeholder = "Enter username"
@@ -35,6 +63,29 @@ function App() {
3563 < div >
3664 < h1 > Chat App</ h1 >
3765 < p > Welcome { savedUsername } !</ p >
66+
67+ < div className = "message-container" >
68+ { messages . map ( ( message ) => (
69+ < div key = { message . id } className = "message" >
70+ < strong > { message . username } </ strong >
71+
72+ < p > { message . text } </ p >
73+
74+ < small > { message . createdAt } </ small >
75+ </ div >
76+ ) ) }
77+ </ div >
78+
79+ < form onSubmit = { handleMessageSubmit } >
80+ < input
81+ type = "text"
82+ placeholder = "Type a message"
83+ value = { messageInput }
84+ onChange = { ( e ) => setMessageInput ( e . target . value ) }
85+ />
86+
87+ < button type = "submit" > Send</ button >
88+ </ form >
3889 </ div >
3990 ) ;
4091}
0 commit comments