From 88f7b0678b4c41d06b5f17d343abd75d72f44527 Mon Sep 17 00:00:00 2001 From: Mike Johnston Date: Fri, 30 Jan 2026 18:08:26 -0500 Subject: [PATCH] socket update --- backend/src/routes/friends.js | 6 ++++++ backend/src/sockets/index.js | 4 ++++ frontend/src/pages/Friends.jsx | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/backend/src/routes/friends.js b/backend/src/routes/friends.js index 3ea2743..5ec12e1 100644 --- a/backend/src/routes/friends.js +++ b/backend/src/routes/friends.js @@ -204,6 +204,12 @@ router.delete('/:friendId', authMiddleware, asyncHandler(async (req, res) => { throw new AppError('Friendship not found', 404); } + // Emit real-time notification to the removed friend + socketEvents.friendRemoved(friendId, { + removed_by_user_id: req.user.userId, + removed_by_username: req.user.username + }); + res.json({ success: true, message: 'Friend removed successfully' }); })); diff --git a/backend/src/sockets/index.js b/backend/src/sockets/index.js index 70bbbfd..6870e3c 100644 --- a/backend/src/sockets/index.js +++ b/backend/src/sockets/index.js @@ -112,6 +112,10 @@ export const socketEvents = { this.emitToUser(userId, 'friend:response', response); }, + friendRemoved(userId, data) { + this.emitToUser(userId, 'friend:removed', data); + }, + // Leaderboard updates leaderboardUpdate(challengeId, leaderboard) { this.emitToChallenge(challengeId, 'leaderboard:update', leaderboard); diff --git a/frontend/src/pages/Friends.jsx b/frontend/src/pages/Friends.jsx index b94df43..2539c79 100644 --- a/frontend/src/pages/Friends.jsx +++ b/frontend/src/pages/Friends.jsx @@ -42,12 +42,19 @@ export default function Friends() { } }; + const handleFriendRemoved = (data) => { + toast(`${data.removed_by_username} removed you from their friends`); + loadData(); // Refresh friends list + }; + socket.on('friend:request', handleFriendRequest); socket.on('friend:response', handleFriendResponse); + socket.on('friend:removed', handleFriendRemoved); return () => { socket.off('friend:request', handleFriendRequest); socket.off('friend:response', handleFriendResponse); + socket.off('friend:removed', handleFriendRemoved); }; }, [socket]);