"use client" import { InviteCard } from "@/components/cards/InviteCard"; import { Button } from "@/components/ui/button"; import { Command, CommandItem } from "@/components/ui/command"; import { Input } from "@/components/ui/input"; import { Popover, PopoverTrigger, PopoverContent } from "@/components/ui/popover"; import { ChannelInvite } from "@/lib/db"; import { ChevronsUpDown } from "lucide-react"; import { useMemo, useState } from "react"; import { Channel, Server, User } from "revolt-api"; export default function ServerInviteList({ server, invites, channels, users }: { server: Server, invites: ChannelInvite[], channels?: Channel[], users?: User[], }) { const [selectVanityOnly, setSelectVanityOnly] = useState(false); const [selectChannel, setSelectChannel] = useState(false); const [selectUser, setSelectUser] = useState(false); const [vanityOnly, setVanityOnly] = useState(false); const [channelFilter, setChannelFilter] = useState(""); const [userFilter, setUserFilter] = useState(""); const filteredInvites = useMemo(() => { return invites ?.filter(invite => vanityOnly ? invite.vanity : true) ?.filter(invite => channelFilter ? invite.channel == channelFilter : true) ?.filter(invite => userFilter ? invite.creator == userFilter : true) ?.reverse(); }, [vanityOnly, channelFilter, userFilter, invites]); return (