@@ -237,7 +237,7 @@ function renderMessages(messages = []) {
237237 <strong>${ message . id } </strong>
238238 ${ message . username } -
239239 ${ message . body }
240- <i data-id="${ message . id } " data-flagged="${ message . flagged } " class="flag-button fa fa-lg fa-flag ${ message . flagged ? "" : "-o" } "></i >
240+ <button data-id="${ message . id } " data-flagged="${ message . flagged } " class="flag-button" style="background: ${ message . flagged ? 'lightblue' : 'yellow' } ">Flag</button >
241241 </p>
242242 <button data-id="${ message . id } " class="delete-button">
243243 Delete
@@ -293,6 +293,7 @@ document.addEventListener('DOMContentLoaded', () => {
293293 // This is called event delegation.
294294 messagesUl . addEventListener ( 'click' , event => {
295295 const { target } = event ;
296+ const flagButton = target . closest ( '.flag-button' )
296297
297298 if ( target . matches ( '.delete-button' ) ) {
298299 event . preventDefault ( ) ;
@@ -302,13 +303,22 @@ document.addEventListener('DOMContentLoaded', () => {
302303 } ) ;
303304 }
304305
305- if ( target . matches ( '.flag-button' ) ) {
306- event . preventDefault ( ) ;
307- const messageId = target . getAttribute ( 'data-id' ) ;
308- const flagged = target . getAttribute ( 'data-flagged' ) === "false" ;
309- updateMessage ( { flagged } , messageId ) . then ( ( ) => {
310- refreshMessages ( messagesUl ) ;
311- } ) ;
306+
307+ if ( flagButton ) {
308+ const messageId = target . getAttribute ( 'data-id' )
309+ let messageFlagged = target . getAttribute ( 'data-flagged' ) ;
310+
311+ if ( messageFlagged === 'false' ) {
312+ event . preventDefault ( ) ;
313+ updateMessage ( { "flagged" : true } , messageId ) . then ( ( ) => {
314+ refreshMessages ( messagesUl ) ;
315+ } ) ;
316+ } else {
317+ event . preventDefault ( ) ;
318+ updateMessage ( { "flagged" : false } , messageId ) . then ( ( ) => {
319+ refreshMessages ( messagesUl ) ;
320+ } ) ;
321+ }
312322 }
313323
314324 } ) ;
0 commit comments