import { resolveDialer } from '../../utils/telephony/dialAccess'
import { extensionDirectory, stateLabel } from '../../utils/telephony/extensions'

/**
 * Extension directory for the dial popover: PBX devices (with live state) joined
 * with ERP user names. Only for sessions that may dial. Never throws.
 */
export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig()
  if ((config as any).asterisk?.enabled !== true) return { status: 503, records: [] }
  const dialer = await resolveDialer(event)
  if (!dialer?.canDial) return { status: 403, records: [] }
  try {
    const list = await extensionDirectory()
    return {
      status: 200,
      mine: dialer.extension,
      records: list.map((e) => ({ ...e, stateLabel: stateLabel(e.state), isMine: e.ext === dialer.extension }))
    }
  } catch (err: any) {
    console.warn('[dial] extension directory failed:', err?.message || err)
    return { status: 502, records: [], mine: dialer.extension }
  }
})
