fix(rooms): add real-time ownership transfer updates via WebSocket
When ownership is transferred via the moderation modal, both the old and new host now see the change immediately without requiring a page reload. Added missing socket event handler for 'ownership-transferred' event: - Server already broadcasts event with updated members (route.ts:82) - Client now listens and updates React Query cache in real-time - All components using useRoomData() automatically re-render - Both sessions see host status changes instantly Fixes issue where ownership transfer required manual page refresh to see updated host permissions (game selection, moderation access). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -464,6 +464,24 @@ export function useRoomData() {
|
||||
}
|
||||
}
|
||||
|
||||
const handleOwnershipTransferred = (data: {
|
||||
roomId: string
|
||||
oldOwnerId: string
|
||||
newOwnerId: string
|
||||
newOwnerName: string
|
||||
members: RoomMember[]
|
||||
}) => {
|
||||
if (data.roomId === roomData?.id) {
|
||||
queryClient.setQueryData<RoomData | null>(roomKeys.current(), (prev) => {
|
||||
if (!prev) return null
|
||||
return {
|
||||
...prev,
|
||||
members: data.members,
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
socket.on('room-joined', handleRoomJoined)
|
||||
socket.on('member-joined', handleMemberJoined)
|
||||
socket.on('member-left', handleMemberLeft)
|
||||
@@ -474,6 +492,7 @@ export function useRoomData() {
|
||||
socket.on('room-invitation-received', handleInvitationReceived)
|
||||
socket.on('join-request-submitted', handleJoinRequestSubmitted)
|
||||
socket.on('room-game-changed', handleRoomGameChanged)
|
||||
socket.on('ownership-transferred', handleOwnershipTransferred)
|
||||
|
||||
return () => {
|
||||
socket.off('room-joined', handleRoomJoined)
|
||||
@@ -486,6 +505,7 @@ export function useRoomData() {
|
||||
socket.off('room-invitation-received', handleInvitationReceived)
|
||||
socket.off('join-request-submitted', handleJoinRequestSubmitted)
|
||||
socket.off('room-game-changed', handleRoomGameChanged)
|
||||
socket.off('ownership-transferred', handleOwnershipTransferred)
|
||||
}
|
||||
}, [socket, roomData?.id, queryClient])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user