26 lines
818 B
TypeScript
26 lines
818 B
TypeScript
import { findRoomByInviteCode, getMember, joinRoom } from "../../db/chat-rooms";
|
||
|
||
/** POST /api/chat/join – Via Invite-Code beitreten */
|
||
export default defineEventHandler(async (event) => {
|
||
const user = await requireUser(event);
|
||
const body = await readBody(event);
|
||
const code = (body?.code ?? "").trim();
|
||
|
||
if (!code) {
|
||
throw createError({ statusCode: 400, message: "Invite-Code erforderlich" });
|
||
}
|
||
|
||
const room = await findRoomByInviteCode(code);
|
||
if (!room) {
|
||
throw createError({ statusCode: 404, message: "Ungültiger Invite-Code" });
|
||
}
|
||
|
||
const existing = await getMember(room.id, user.id);
|
||
if (existing?.status === "active") {
|
||
return { status: "already_member", roomId: room.id };
|
||
}
|
||
|
||
await joinRoom(room.id, user.id, "active");
|
||
return { status: "joined", roomId: room.id };
|
||
});
|