fix user context menu
This commit is contained in:
@@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user