@@ -4,6 +4,7 @@ const appServerURL = "http://localhost:3000/";
44
55const currentUser = prompt ( "Enter your name:" ) || "Unknown" ;
66let lastTimestamp = 0 ;
7+ let displayedMessages = [ ] ;
78
89async function setup ( ) {
910 await renderMessages ( ) ;
@@ -47,14 +48,16 @@ async function setup() {
4748
4849async function renderMessages ( ) {
4950 const messages = await fetchMessages ( lastTimestamp ) ;
50- const messagesContainer = document . querySelector ( ".chat-messages" ) ;
51- messagesContainer . innerHTML = "" ;
51+ if ( messages . length === 0 ) {
52+ return ;
53+ }
5254
5355 if ( messages . length > 0 ) {
5456 lastTimestamp = Math . max ( lastTimestamp , ...messages . map ( ( m ) => m . timestamp ) ) ;
5557 }
5658
5759 messages . sort ( ( a , b ) => a . timestamp - b . timestamp ) ;
60+ displayedMessages . push ( ...messages ) ;
5861 appendMessages ( messages ) ;
5962}
6063
@@ -114,10 +117,32 @@ async function reactToMessage(id, reaction) {
114117 body : JSON . stringify ( { id, reaction } ) ,
115118 } ) ;
116119 const data = await response . json ( ) ;
120+
121+ if ( data . success && data . message ) {
122+ updateMessageReaction ( data . message ) ;
123+ }
124+
117125 return data . success ;
118126 } catch ( error ) {
119127 return false ;
120128 }
121129}
122130
131+ function updateMessageReaction ( message ) {
132+ const existingMessage = displayedMessages . find ( ( m ) => m . id === message . id ) ;
133+ if ( existingMessage ) {
134+ Object . assign ( existingMessage , message ) ;
135+ }
136+
137+ const likeButton = document . querySelector ( `.like-button[data-id="${ message . id } "]` ) ;
138+ const dislikeButton = document . querySelector ( `.dislike-button[data-id="${ message . id } "]` ) ;
139+
140+ if ( likeButton ) {
141+ likeButton . textContent = `👍 ${ message . likes || 0 } ` ;
142+ }
143+ if ( dislikeButton ) {
144+ dislikeButton . textContent = `👎 ${ message . dislikes || 0 } ` ;
145+ }
146+ }
147+
123148window . onload = setup ;
0 commit comments