@@ -51,7 +51,7 @@ function LinksGrid() {
5151 newWs . onmessage = ( event ) => {
5252 try {
5353 const message = JSON . parse ( event . data ) ;
54- console . log ( 'Received message:' , message ) ;
54+ console . log ( 'Received WebSocket message:' , message ) ;
5555
5656 if ( message . header === 'LINKS' ) {
5757 if ( message . type === 'link' ) {
@@ -62,13 +62,30 @@ function LinksGrid() {
6262 link . timestamp === message . timestamp
6363 ) ;
6464 if ( ! exists ) {
65+ console . log ( 'Adding new link:' , message ) ;
6566 return [ ...prevLinks , message ] ;
6667 }
6768 return prevLinks ;
6869 } ) ;
6970 } else if ( message . type === 'links_list' ) {
71+ console . log ( 'Updating entire links list:' , message . links ) ;
7072 // Replace entire links array with new list
71- setLinks ( [ ...message . links ] ) ;
73+ setLinks ( message . links || [ ] ) ;
74+ } else if ( message . type === 'delete_link' ) {
75+ console . log ( 'Processing delete for:' , message . url ) ;
76+ // Remove the link from local state
77+ setLinks ( prevLinks => {
78+ const updatedLinks = prevLinks . filter ( link =>
79+ link . url !== message . url || link . timestamp !== message . timestamp
80+ ) ;
81+ console . log ( 'Updated links after delete:' , updatedLinks ) ;
82+ return updatedLinks ;
83+ } ) ;
84+
85+ // Clear selected URL if it was deleted
86+ if ( selectedUrl === message . url ) {
87+ setSelectedUrl ( null ) ;
88+ }
7289 }
7390 }
7491 } catch ( err ) {
@@ -102,9 +119,21 @@ function LinksGrid() {
102119 }
103120 } , [ ] ) ;
104121
122+ // Effect for WebSocket connection management
105123 useEffect ( ( ) => {
124+ console . log ( 'Initializing WebSocket connection...' ) ;
106125 const cleanup = connect ( ) ;
107- return cleanup ;
126+
127+ // Cleanup function
128+ return ( ) => {
129+ console . log ( 'Cleaning up WebSocket connection...' ) ;
130+ if ( cleanup ) cleanup ( ) ;
131+ if ( ws ) {
132+ console . log ( 'Closing existing WebSocket connection...' ) ;
133+ ws . close ( ) ;
134+ setWs ( null ) ;
135+ }
136+ } ;
108137 } , [ connect ] ) ;
109138
110139 const handleLinkClick = ( url ) => {
@@ -149,15 +178,33 @@ function LinksGrid() {
149178 }
150179
151180 try {
181+ if ( ! linkToDelete || ! linkToDelete . url || ! linkToDelete . timestamp ) {
182+ console . error ( 'Invalid link to delete:' , linkToDelete ) ;
183+ return ;
184+ }
185+
152186 console . log ( 'Sending delete request for:' , linkToDelete ) ;
187+
188+ // Send delete request to server
153189 ws . send ( JSON . stringify ( {
154190 header : 'LINKS' ,
155191 type : 'delete_link' ,
156192 url : linkToDelete . url ,
157- timestamp : linkToDelete . timestamp
193+ timestamp : linkToDelete . timestamp ,
194+ name : linkToDelete . name , // Include additional fields
195+ description : linkToDelete . description
158196 } ) ) ;
197+
198+ // Reset delete confirmation state
159199 setShowDeleteConfirm ( false ) ;
160200 setLinkToDelete ( null ) ;
201+
202+ // Request updated list from server
203+ ws . send ( JSON . stringify ( {
204+ header : 'LINKS' ,
205+ type : 'request_links'
206+ } ) ) ;
207+
161208 } catch ( error ) {
162209 console . error ( 'Error sending delete request:' , error ) ;
163210 }
0 commit comments