Skip to content

Commit eece71d

Browse files
committed
Limit member search to world members and Matrix-known users (workadventure#4484)
1 parent f54057b commit eece71d

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

play/src/front/Chat/Components/Room/CreateRoomModal.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
2020
const chat = gameManager.chatConnection;
2121
22-
const { searchMembers } = searchChatMembersRule();
22+
const { searchWorldMembers } = searchChatMembersRule();
2323
2424
let loadingRoomCreation = false;
2525
@@ -140,7 +140,7 @@
140140
--item-color="black"
141141
--item-hover-color="black"
142142
--clear-select-color="red"
143-
loadOptions={searchMembers}
143+
loadOptions={searchWorldMembers}
144144
placeholder={$LL.chat.createRoom.users()}
145145
>
146146
<div slot="item" let:item>

play/src/front/Chat/Components/Room/InviteParticipantsModal.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
export let isOpen: boolean;
1313
export let room: ChatRoom;
1414
15-
const { searchMembers } = searchChatMembersRule();
15+
const { searchWorldMembers } = searchChatMembersRule();
1616
1717
let invitations: { value: string; label: string }[] = [];
1818
@@ -76,7 +76,7 @@
7676
--item-color="black"
7777
--item-hover-color="black"
7878
--clear-select-color="red"
79-
loadOptions={searchMembers}
79+
loadOptions={searchWorldMembers}
8080
placeholder={$LL.chat.createRoom.users()}
8181
>
8282
<div slot="item" let:item>
Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,38 @@
1+
import { get } from "svelte/store";
12
import { gameManager } from "../../../Phaser/Game/GameManager";
23

4+
export interface SelectItem {
5+
value: string;
6+
label: string | undefined;
7+
verified?: boolean;
8+
created?: boolean;
9+
}
10+
311
export const searchChatMembersRule = () => {
4-
const chat = gameManager.chatConnection;
12+
const userProviderMergerPromise = gameManager.getCurrentGameScene().userProviderMerger;
513

6-
async function searchMembers(filterText: string) {
14+
async function searchWorldMembers(filterText: string): Promise<SelectItem[]> {
715
try {
8-
const chatUsers = await chat.searchChatUsers(filterText);
16+
const userProviderMerger = await userProviderMergerPromise;
17+
const chatUsersMap = get(userProviderMerger.usersByRoomStore);
18+
const chatUsers = Array.from(chatUsersMap.values())
19+
.flatMap((room) => room.users)
20+
.filter((user) => user.username?.includes(filterText) && user.chatId);
921
if (chatUsers === undefined) {
1022
return [];
1123
}
12-
return chatUsers.map((user) => ({ value: user.id, label: user.name ?? user.id }));
24+
return chatUsers.map((user) => ({
25+
value: user.chatId,
26+
label: user.username ?? user.id?.toString(),
27+
verified: true,
28+
created: false,
29+
}));
1330
} catch (error) {
1431
console.error(error);
1532
}
1633

1734
return [];
1835
}
1936

20-
return { searchMembers };
37+
return { searchWorldMembers };
2138
};

0 commit comments

Comments
 (0)