"use client" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card"; import { ChannelInvite } from "@/lib/db"; import Link from "next/link"; import { Channel, User } from "revolt-api"; import { Button } from "../ui/button"; import { AlertDialogFooter, AlertDialogHeader, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger } from "../ui/alert-dialog"; import { toast } from "../ui/use-toast"; import { Input } from "../ui/input"; import { useState } from "react"; import { deleteInvite, editInvite } from "@/lib/actions"; export function InviteCard({ invite, channel, user, }: { invite: ChannelInvite; channel?: Channel; user?: User; }) { const [editDraft, setEditDraft] = useState(""); const [deleted, setDeleted] = useState(false); const [code, setCode] = useState(invite._id); if (deleted) return <>; return ( rvlt.gg/{code} {" "} {/* looks better like this when for some reason the css doesnt load */} {invite.vanity ? Vanity : <>} {invite.type} {" • "} {( channel && channel.channel_type != "DirectMessage" && channel.channel_type != "SavedMessages" ) ? `#${channel.name}` : Unknown Channel} {" • "} {user ? `${user.username}#${user.discriminator}` : Unknown Creator} {invite.vanity ? ( Edit vanity invite

Invites are case sensitive.

setEditDraft(e.currentTarget.value)} placeholder={code} />
{ try { await editInvite(code, editDraft); setCode(editDraft); setEditDraft(""); toast({ title: "Invite edited" }); } catch(e) { toast({ title: "Failed to edit invite", description: String(e), variant: "destructive", }); } }} >Edit Cancel
) : <>} Delete invite Are you sure you want to irreversibly delete this invite? { try { await deleteInvite(code); setDeleted(true); toast({ title: "Invite deleted" }); } catch(e) { toast({ title: "Failed to delete invite", description: String(e), variant: "destructive", }); } }} >Delete Cancel
); }