"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, 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"; import { Checkbox } from "@/components/ui/checkbox"; import UserSelector from "@/components/ui/user-selector"; export function ServerActions({ server }: { server: Server }) { const [selectBadges, setSelectBadges] = useState(false); const [serverDraft, setDraft] = useState(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 Change server owner Enter the ID of the new server owner. setNewOwner(user)} /> Cancel { try { await updateServerOwner(server._id, newOwner!._id); setNewOwner(null); toast({ title: "Server owner changed" }); } catch(e) { toast({ title: "Owner update failed", description: String(e), variant: "destructive", }); } }} > Update Add member to server Enter the ID of the user you want to add. setNewMember(user)} /> setNewMemberEvent(state === true)}>Publish join event Cancel { try { await addServerMember(server._id, newMember!._id, newMemberEvent); setNewMember(null); toast({ title: "User added to server" }); } catch(e) { toast({ title: "Failed to add user", description: String(e), variant: "destructive", }); } }} > Update
); }