import { XCircle } from "@styled-icons/boxicons-regular"; import { Servers, Users } from "revolt.js/dist/api/objects"; import { Route } from "revolt.js/dist/api/routes"; import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; import { useContext, useEffect, useState } from "preact/hooks"; import { AppContext } from "../../../context/revoltjs/RevoltClient"; import UserIcon from "../../../components/common/user/UserIcon"; import IconButton from "../../../components/ui/IconButton"; import Preloader from "../../../components/ui/Preloader"; interface Props { server: Servers.Server; } export function Bans({ server }: Props) { const client = useContext(AppContext); const [deleting, setDelete] = useState([]); const [data, setData] = useState< Route<"GET", "/servers/id/bans">["response"] | undefined >(undefined); useEffect(() => { client.servers.fetchBans(server._id).then(setData as any); }, []); return (
{typeof data === "undefined" && } {data?.bans.map((x) => { let user = data.users.find((y) => y._id === x._id.user); return (
-1}> {user?.username}
{x.reason ?? ( )}
{ setDelete([...deleting, x._id.user]); await client.servers.unbanUser( server._id, x._id.user, ); setData({ ...data, bans: data.bans.filter( (y) => y._id.user !== x._id.user, ), }); }} disabled={deleting.indexOf(x._id.user) > -1}>
); })}
); }