MCPcopy Create free account
hub / github.com/Linen-dev/linen.dev / MembersModal

Function MembersModal

apps/web/ui/MembersModal/index.tsx:20–105  ·  view source on GitHub ↗
({
  permissions,
  open,
  close,
  api,
  channel,
}: MembersModalProps)

Source from the content-addressed store, hash-verified

18}
19
20export default function MembersModal({
21 permissions,
22 open,
23 close,
24 api,
25 channel,
26}: MembersModalProps) {
27 const [users, setUsers] = useState<SerializedUser[]>([]);
28 const [modal, setModal] = useState(false);
29 const [user, setUser] = useState<SerializedUser>();
30
31 useEffect(() => {
32 if (open && channel && permissions?.accountId) {
33 api
34 .getChannelMembers({
35 accountId: permissions.accountId,
36 channelId: channel.id,
37 })
38 .then(setUsers);
39 }
40 }, [open, permissions, channel]);
41
42 if (!channel || !permissions.accountId) {
43 return <></>;
44 }
45
46 function removeUser() {
47 if (user) {
48 setUsers((users) => users.filter((u) => u.id !== user.id));
49 setUser(undefined);
50 }
51 }
52
53 function showModal(user: SerializedUser) {
54 setUser(user);
55 setModal(true);
56 }
57
58 function onUpdateClick() {
59 if (channel && permissions?.accountId) {
60 api
61 .updateChannelMembers({
62 accountId: permissions.accountId,
63 channelId: channel.id,
64 usersId: users.map((u) => u.id),
65 })
66 .then(() => {
67 close();
68 })
69 .catch((e) => {
70 Toast.info('Something went wrong');
71 });
72 }
73 }
74
75 return (
76 <Modal open={open} close={close} size="md">
77 <H3 className={styles.pb4}>Members</H3>

Callers

nothing calls this directly

Calls 2

onUpdateClickFunction · 0.85
removeUserFunction · 0.70

Tested by

no test coverage detected