import styled from "styled-components"; import { Text } from "preact-i18n"; import { useMemo, useState } from "preact/hooks"; import { Modal } from "@revoltchat/ui"; import UserCheckbox from "../../../components/common/user/UserCheckbox"; import { useClient } from "../../client/ClientController"; import { ModalProps } from "../types"; const List = styled.div` max-width: 100%; max-height: 360px; overflow-y: scroll; `; export default function UserPicker({ callback, omit, ...props }: ModalProps<"user_picker">) { const [selected, setSelected] = useState([]); const omitted = useMemo( () => new Set([...(omit || []), "00000000000000000000000000"]), [omit], ); const client = useClient(); return ( } actions={[ { children: , onClick: () => callback(selected).then(() => true), }, ]}> {[...client.users.values()] .filter( (x) => x && x.relationship === "Friend" && !omitted.has(x._id), ) .map((x) => ( { if (v) { setSelected([...selected, x._id]); } else { setSelected( selected.filter((y) => y !== x._id), ); } }} /> ))} ); }