37 lines
1.2 KiB
TypeScript

import { getDmHistory, markDmsAsRead } from "../../../db/chat";
import { getProfile } from "../../../db/profile";
/** GET /api/chat/dm/[userId]?page=1 */
export default defineEventHandler(async (event) => {
const user = await requireUser(event);
const partnerId = getRouterParam(event, "userId");
if (!partnerId)
throw createError({ statusCode: 400, message: "userId fehlt" });
const page = Math.max(1, parseInt((getQuery(event).page as string) || "1"));
const [messages, partnerProfile] = await Promise.all([
getDmHistory(user.id, partnerId, page),
getProfile(partnerId),
markDmsAsRead(partnerId, user.id),
]);
return {
partner: partnerProfile
? {
id: partnerProfile.id,
nickname: partnerProfile.nickname ?? partnerProfile.username ?? "Anonym",
username: partnerProfile.username ?? "anonym",
avatar: partnerProfile.avatar,
}
: { id: partnerId, nickname: "Anonym", username: "anonym", avatar: null },
messages: [...messages].reverse().map((m) => ({
id: m.id,
content: m.content,
createdAt: m.createdAt,
isOwn: m.senderId === user.id,
readAt: m.readAt,
})),
};
});