import { XCircle } from "@styled-icons/boxicons-regular"; import { observer } from "mobx-react-lite"; import { ServerInvite } from "revolt-api/types/Invites"; import { Server } from "revolt.js/dist/maps/Servers"; import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; import { useEffect, useState } from "preact/hooks"; import { useClient } from "../../../context/revoltjs/RevoltClient"; import { getChannelName } from "../../../context/revoltjs/util"; import UserIcon from "../../../components/common/user/UserIcon"; import IconButton from "../../../components/ui/IconButton"; import Preloader from "../../../components/ui/Preloader"; interface Props { server: Server; } export const Invites = observer(({ server }: Props) => { const [deleting, setDelete] = useState([]); const [invites, setInvites] = useState( undefined, ); const client = useClient(); const users = invites?.map((invite) => client.users.get(invite.creator)); const channels = invites?.map((invite) => client.channels.get(invite.channel), ); useEffect(() => { server.fetchInvites().then(setInvites); }, [server, setInvites]); return (
{typeof invites === "undefined" && } {invites?.map((invite, index) => { const creator = users![index]; const channel = channels![index]; return (
-1}> {invite._id} {" "} {creator?.username ?? ( )} {channel && creator ? getChannelName(channel, true) : "#??"} { setDelete([...deleting, invite._id]); await client.deleteInvite(invite._id); setInvites( invites?.filter( (x) => x._id !== invite._id, ), ); }} disabled={deleting.indexOf(invite._id) > -1}>
); })}
); });