import { ChevronDown } from "@styled-icons/boxicons-regular"; import { isEqual } from "lodash"; import { observer } from "mobx-react-lite"; import { Member } from "revolt.js/dist/maps/Members"; import { Server } from "revolt.js/dist/maps/Servers"; import { User } from "revolt.js/dist/maps/Users"; import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; import { useEffect, useState } from "preact/hooks"; import UserIcon from "../../../components/common/user/UserIcon"; import Button from "../../../components/ui/Button"; import Checkbox from "../../../components/ui/Checkbox"; import IconButton from "../../../components/ui/IconButton"; import Overline from "../../../components/ui/Overline"; interface Props { server: Server; } export const Members = observer(({ server }: Props) => { const [selected, setSelected] = useState(); const [data, setData] = useState< { members: Member[]; users: User[] } | undefined >(undefined); useEffect(() => { server.fetchMembers().then(setData); }, [server, setData]); const [roles, setRoles] = useState([]); useEffect(() => { if (selected) { setRoles( data!.members.find((x) => x._id.user === selected)?.roles ?? [], ); } }, [setRoles, selected, data]); return (
{data?.members.length ?? 0} Members
{data && data.members.length > 0 && data.members .map((member) => { return { member, user: data.users.find( (x) => x._id === member._id.user, ), }; }) .map(({ member, user }) => ( // @ts-expect-error brokey // eslint-disable-next-line react/jsx-no-undef
setSelected( selected === member._id.user ? undefined : member._id.user, ) }> {" "} {user?.username ?? ( )}
{selected === member._id.user && (
Roles {Object.keys(server.roles ?? {}).map( (key) => { const role = server.roles![key]; return ( { if (v) { setRoles([ ...roles, key, ]); } else { setRoles( roles.filter( (x) => x !== key, ), ); } }}> {role.name} ); }, )}
)}
))}
); });