File size: 1,612 Bytes
a061734
 
 
 
 
 
 
 
 
 
c0b84a6
a061734
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c0b84a6
 
 
a061734
 
 
b80664e
 
 
 
 
 
 
 
a061734
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
 * Messaging Send Route
 * 
 * POST /api/messaging/send
 * Send a message to another user
 */

import { NextRequest, NextResponse } from "next/server";
import { getCurrentUser } from "@/lib/auth";
import { sendMessage } from "@/lib/db/queries/messages";
import { realtimeMessaging } from "@/lib/realtime-messaging";

export async function POST(request: NextRequest) {
    try {
        const user = await getCurrentUser(request);
        if (!user) {
            return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
        }

        const body = await request.json();
        const { receiver_id, content } = body;

        if (!receiver_id || !content) {
            return NextResponse.json(
                { error: "receiver_id and content are required" },
                { status: 400 }
            );
        }

        const message = await sendMessage({
            senderId: user.id,
            receiverId: receiver_id,
            content,
        });

        // Broadcast message in real-time to both users
        realtimeMessaging.notifyMessageSent(message);

        return NextResponse.json(message);
    } catch (error) {
        console.error("Send message error:", error);
        console.error("Error details:", {
            message: error instanceof Error ? error.message : "Unknown error",
            stack: error instanceof Error ? error.stack : undefined
        });
        return NextResponse.json({ 
            error: "Internal server error",
            detail: error instanceof Error ? error.message : "Unknown error"
        }, { status: 500 });
    }
}