"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
);
}