"use client"; import { Server, User } from "revolt-api"; import { Button, buttonVariants } from "../../ui/button"; import { Command, CommandItem, } from "@/components/ui/command"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Check, ChevronsUpDown } from "lucide-react"; import { cn } from "@/lib/utils"; import { useState } from "react"; import { addServerMember, quarantineServer, updateServerDiscoverability, updateServerFlags, updateServerOwner } from "@/lib/actions"; import { useToast } from "../../ui/use-toast"; import Link from "next/link"; import { DropdownMenu, DropdownMenuContent } from "@/components/ui/dropdown-menu"; import { DropdownMenuTrigger } from "@radix-ui/react-dropdown-menu"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from "@/components/ui/alert-dialog"; import { Checkbox } from "@/components/ui/checkbox"; import UserSelector from "@/components/ui/user-selector"; import { Textarea } from "@/components/ui/textarea"; import { SEVRER_REMOVAL_MESSAGE } from "@/lib/constants"; export function ServerActions({ server }: { server: Server }) { const [selectBadges, setSelectBadges] = useState(false); const [serverDraft, setDraft] = useState(server); const [quarantineMessage, setQuarantineMessage] = useState(SEVRER_REMOVAL_MESSAGE(server)); const [newOwner, setNewOwner] = useState(null); const [newMember, setNewMember] = useState(null); const [newMemberEvent, setNewMemberEvent] = useState(true); const { toast } = useToast(); return (
{serverDraft.discoverable ? ( ) : ( )} {[ { value: 0, label: "No Badge" }, { value: 1, label: "Official" }, { value: 2, label: "Verified" }, ].map((flag) => ( { setSelectBadges(false); try { await updateServerFlags(server._id, flag.value); setDraft((server) => ({ ...server, flags: flag.value })); toast({ title: "Updated server flags", }); } catch (err) { toast({ title: "Failed to update server flags", description: String(err), variant: "destructive", }); } }} > {flag.label} ))} Invites Quarantine server This will remove all members from this server and revoke all invites. This action is irreversible!