import type { Filter, WithId } from "mongodb"; import { Message, User } from "revolt-api"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "../../ui/card"; import { fetchMessages, fetchMessagesByUser, fetchUsersById } from "@/lib/db"; import { CompactMessage } from "../../cards/CompactMessage"; type Props = { users?: boolean | User[] } & ( | { query: Filter; } | { userId: string; } ); export async function RecentMessages(props: Props) { let recentMessages: WithId[] = []; try { recentMessages = ( (props as { query: {} }).query ? await fetchMessages((props as { query: Filter }).query) : await fetchMessagesByUser((props as { userId: string }).userId).catch( () => [] ) ).reverse(); } catch(e) {} const userList = ( props.users === true ? await fetchUsersById([...new Set(recentMessages.map((x) => x.author))]) : Array.isArray(props.users) ? props.users : [] ).reduce((prev, next) => { prev[next._id] = next; return prev; }, {} as Record); return ( Recent Messages Overview of recent messages {/* enter reason for fetching */} {!recentMessages.length && ( <>

No messages found

You may be lacking permissions.

)} {recentMessages.map((message) => ( ))}
); }