import styles from './Panes.module.scss'; import { XCircle } from "@styled-icons/feather"; import { useEffect, useState } from "preact/hooks"; import Preloader from "../../../components/ui/Preloader"; import UserIcon from "../../../components/common/UserIcon"; import IconButton from "../../../components/ui/IconButton"; import { getChannelName } from "../../../context/revoltjs/util"; import { Invites as InvitesNS, Servers } from "revolt.js/dist/api/objects"; import { useChannels, useForceUpdate, useUsers } from "../../../context/revoltjs/hooks"; interface Props { server: Servers.Server; } export function Invites({ server }: Props) { const [invites, setInvites] = useState(undefined); const ctx = useForceUpdate(); const [deleting, setDelete] = useState([]); const users = useUsers(invites?.map(x => x.creator) ?? [], ctx); const channels = useChannels(invites?.map(x => x.channel) ?? [], ctx); useEffect(() => { ctx.client.servers.fetchInvites(server._id) .then(invites => setInvites(invites)) }, [ ]); return (
{ typeof invites === 'undefined' && } { invites?.map( invite => { let creator = users.find(x => x?._id === invite.creator); let channel = channels.find(x => x?._id === invite.channel); return (
-1}> { invite._id } {creator?.username ?? 'unknown'} { (channel && creator) ? getChannelName(ctx.client, channel, [ creator ], true) : '#unknown' } { setDelete([ ...deleting, invite._id ]); await ctx.client.deleteInvite(invite._id); setInvites( invites?.filter( x => x._id !== invite._id ) ); }} disabled={deleting.indexOf(invite._id) > -1}>
) } ) }
); }