import { Message, SnapshotContent, User } from "revolt-api"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "../ui/card"; import { fetchUsersById } from "@/lib/db"; import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar"; import { Image as ImageIcon } from "lucide-react"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "../ui/alert-dialog"; function Message({ message, users, }: { message: Message; users?: Record; }) { const user = users?.[message.author]; return (
{user?.avatar && ( )} {user?.username}
{(message.attachments || message.embeds) && ( )}{" "} {message.content ?? No text.}
{user?.avatar && ( )}{" "} {user?.username}#{user?.discriminator} {message.content && {message.content}} {message.attachments?.map((attachment) => attachment.metadata.type === "Image" ? ( ) : ( "unsupported" ) )} {message.embeds?.map((embed, index) => (
                {JSON.stringify(embed, null, 2)}
              
))}
Delete Close
); } export async function MessageContextCard({ snapshot, }: { snapshot: SnapshotContent & { _type: "Message" }; }) { const userIds = [ ...new Set( [ ...(snapshot._leading_context ?? []), ...(snapshot._prior_context ?? []), snapshot, ].map((x) => x.author) ), ]; const users = await fetchUsersById(userIds).then((users) => users.reduce((prev, next) => { prev[next._id] = next; return prev; }, {} as Record) ); return ( Message(s) Reported Content
{[...(snapshot._prior_context ?? [])].reverse()?.map((message) => ( ))}
{snapshot._leading_context?.map((message) => ( ))}
); }