Skip to content

Commit c13eed1

Browse files
committed
fix linkgrid delete button 3
1 parent d64903b commit c13eed1

File tree

1 file changed

+51
-4
lines changed

1 file changed

+51
-4
lines changed

src/pages/LinksGrid.js

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)