import { XCircle } from "@styled-icons/boxicons-regular"; import { observer } from "mobx-react-lite"; import { Virtuoso } from "react-virtuoso"; import { API } from "revolt.js"; import { Server } from "revolt.js"; 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 IconButton from "../../../components/ui/IconButton"; import Preloader from "../../../components/ui/Preloader"; interface InnerProps { ban: API.ServerBan; users: Pick[]; server: Server; removeSelf: () => void; } const Inner = observer(({ ban, users, server, removeSelf }: InnerProps) => { const [deleting, setDelete] = useState(false); const user = users.find((x) => x._id === ban._id.user); return (
{" "} {user?.username}
{ban.reason ?? ( )}
{ setDelete(true); server.unbanUser(ban._id.user).then(removeSelf); }} disabled={deleting}>
); }); interface Props { server: Server; } export const Bans = observer(({ server }: Props) => { const [data, setData] = useState(undefined); useEffect(() => { server.fetchBans().then(setData); }, [server, setData]); return (
{typeof data === "undefined" && } {data && (
( { setData({ bans: data.bans.filter( (y) => y._id.user !== data.bans[index]._id.user, ), users: data.users, }); }} /> )} />
)}
); });