import { ConnectedSocket, MessageBody, SubscribeMessage, WebSocketGateway, WebSocketServer } from "@nestjs/websockets";
import { Server, Socket } from "socket.io";

@WebSocketGateway({ cors: { origin: "*" } })
export class ChatGateway {
  @WebSocketServer() server!: Server;

  @SubscribeMessage("conversation:join")
  handleJoin(@MessageBody() data: { conversationId: string }, @ConnectedSocket() socket: Socket) {
    socket.join(`c:${data.conversationId}`);
    return { ok: true };
  }

  @SubscribeMessage("message:send")
  handleSend(@MessageBody() data: { conversationId: string; body: string; senderId: string }) {
    this.server.to(`c:${data.conversationId}`).emit("message:new", {
      conversationId: data.conversationId,
      body: data.body,
      senderId: data.senderId,
      createdAt: new Date().toISOString(),
    });
    return { ok: true };
  }
}
