"use client"; import { Server } 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 { 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 { Input } from "@/components/ui/input"; export function ServerActions({ server }: { server: Server }) { const [selectBadges, setSelectBadges] = useState(false); const [serverDraft, setDraft] = useState(server); const [newOwner, setNewOwner] = useState(""); 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 Change server owner Enter the ID of the new server owner. setNewOwner(e.currentTarget.value)} /> Cancel { try { await updateServerOwner(server._id, newOwner); setNewOwner(""); toast({ title: "Server owner changed" }); } catch(e) { toast({ title: "Owner update failed", description: String(e), variant: "destructive", }); } }} > Update
); }