/**
 * GET /api/chat/unread
 * Seeds the client's per-peer unread badge counts on connect:
 *   { counts: { [senderUserId]: count } }
 * Gated to staff.
 */

import { gateFromEvent } from '../../utils/chatAccess'
import { getUnreadCounts } from '../../utils/chatDb'

export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig()
  if (config.chatEnabled !== true) {
    setResponseStatus(event, 404)
    return { error: 'chat disabled' }
  }

  let userId: number
  try {
    ({ userId } = await gateFromEvent(event))
  } catch (err: any) {
    setResponseStatus(event, err?.statusCode || 403)
    return { error: 'forbidden' }
  }

  return { counts: getUnreadCounts(userId) }
})
