import { XCircle } from "@styled-icons/boxicons-regular"; import { observer } from "mobx-react-lite"; import { Virtuoso } from "react-virtuoso"; import { Invite, 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 { getChannelName } from "../../../context/revoltjs/util"; import UserIcon from "../../../components/common/user/UserIcon"; import { Username } from "../../../components/common/user/UserShort"; import IconButton from "../../../components/ui/IconButton"; import Preloader from "../../../components/ui/Preloader"; interface InnerProps { invite: Invite; server: Server; removeSelf: () => void; } const Inner = observer(({ invite, server, removeSelf }: InnerProps) => { const [deleting, setDelete] = useState(false); const user = server.client.users.get(invite.creator); const channel = server.client.channels.get(invite.channel); return (
{invite._id} {" "} {channel ? getChannelName(channel, true) : "#??"} { setDelete(true); server.client.deleteInvite(invite._id).then(removeSelf); }} disabled={deleting}>
); }); interface Props { server: Server; } export const Invites = ({ server }: Props) => { const [invites, setInvites] = useState( undefined, ); useEffect(() => { server.fetchInvites().then(setInvites); }, [server, setInvites]); return (
{typeof invites === "undefined" && } {invites && (
( setInvites( invites.filter( (x) => x._id !== invites[index]._id, ), ) } /> )} />
)}
); };