diff --git a/src/chat/components/MemberList.svelte b/src/chat/components/MemberList.svelte index 663e88f..9f0a136 100644 --- a/src/chat/components/MemberList.svelte +++ b/src/chat/components/MemberList.svelte @@ -21,9 +21,26 @@ function handleContextMenu(e: MouseEvent, member: Types.ServerMember) { e.preventDefault(); e.stopPropagation(); - const user = chat.users.find(u => u.identity.isEqual(member.identity)); + + const userIdHex = member.identity.toHexString(); + // Try to find the full user object from the chat service + const user = chat.usersById.get(userIdHex); + + console.log(`[MemberList] Right-click on member: ${member.name} (${userIdHex}). Found user: ${!!user}`); + if (user) { chat.userContextMenu = { x: e.clientX, y: e.clientY, user }; + } else { + // Fallback: create a partial user object if full metadata is missing + chat.userContextMenu = { + x: e.clientX, + y: e.clientY, + user: { + identity: member.identity, + name: member.name, + online: member.online + } + }; } } diff --git a/src/chat/components/channels/VoiceChannelGroup.svelte b/src/chat/components/channels/VoiceChannelGroup.svelte index 3332c7f..9c15cee 100644 --- a/src/chat/components/channels/VoiceChannelGroup.svelte +++ b/src/chat/components/channels/VoiceChannelGroup.svelte @@ -44,9 +44,26 @@ function handleContextMenu(e: MouseEvent, targetIdentity: any) { e.preventDefault(); e.stopPropagation(); - const user = chat.users.find((u) => u.identity.isEqual(targetIdentity)); + + const userIdHex = targetIdentity.toHexString(); + // Use O(1) lookup from the new keyed map + const user = chat.usersById.get(userIdHex); + + console.log(`[VoiceChannelGroup] Right-click on user: ${userIdHex}. Found user: ${!!user}`); + if (user) { chat.userContextMenu = { x: e.clientX, y: e.clientY, user }; + } else { + // Fallback: create a partial user object if full metadata is missing + chat.userContextMenu = { + x: e.clientX, + y: e.clientY, + user: { + identity: targetIdentity, + name: chat.getUsername(targetIdentity), + online: true + } + }; } } diff --git a/src/chat/services/chat.svelte.ts b/src/chat/services/chat.svelte.ts index 1914638..8cc4f73 100644 --- a/src/chat/services/chat.svelte.ts +++ b/src/chat/services/chat.svelte.ts @@ -294,13 +294,21 @@ export class ChatService { get servers() { return this.#db.servers; } - + get serversById() { + return this.#db.serversById; + } get channels() { return this.#db.channels; } + get channelsById() { + return this.#db.channelsById; + } get users() { return this.#db.users; } + get usersById() { + return this.#db.usersById; + } get serverMembers() { return this.#db.serverMembers; }