import type { Server as SocketServer } from 'socket.io';
import type { Message } from '@wa-ticketing/shared';
import { enrichMessageWithMediaUrl } from './ticketMediaService.js';

/** Broadcast a persisted message with signed media URL when applicable */
export async function emitMessageNew(io: SocketServer, ticketId: string, message: Message): Promise<void> {
  try {
    const enriched = await enrichMessageWithMediaUrl(message);
    io.to(`ticket:${ticketId}`).emit('message:new', { ticketId, message: enriched });
  } catch {
    io.to(`ticket:${ticketId}`).emit('message:new', { ticketId, message });
  }
  // Tickets list / dashboard listen globally (not in ticket rooms)
  io.emit('ticket:updated', { ticket: { id: ticketId } });
}
