import { api } from "./client"

export type PlatformMessage = {
  id: number
  tenant: number
  sender: number | null
  sender_username: string
  sender_full_name: string
  sender_side: "admin" | "tenant"
  content: string
  file_url: string | null
  file_name: string | null
  is_read: boolean
  created_at: string
}

export type TenantThread = {
  tenant_id: number
  tenant_name: string
  tenant_slug: string
  last_message: string | null
  last_message_at: string | null
  last_sender_side: "admin" | "tenant" | null
  unread: number
}

export type ThreadResponse = {
  tenant: { id: number; name: string; slug: string }
  messages: PlatformMessage[]
}

export function getAdminInbox(): Promise<TenantThread[]> {
  return api.request("/platform-messages/inbox/")
}

export function getThread(tenantId: number): Promise<ThreadResponse> {
  return api.request(`/platform-messages/${tenantId}/`)
}

export function sendMessage(tenantId: number, content: string, file?: File): Promise<PlatformMessage> {
  if (file) {
    const fd = new FormData()
    if (content.trim()) fd.append("content", content.trim())
    fd.append("file", file)
    return api.request(`/platform-messages/${tenantId}/`, { method: "POST", body: fd })
  }
  return api.request(`/platform-messages/${tenantId}/`, {
    method: "POST",
    body: JSON.stringify({ content }),
    headers: { "Content-Type": "application/json" },
  })
}

export function deleteMessage(msgId: number): Promise<void> {
  return api.request(`/platform-messages/message/${msgId}/`, { method: "DELETE" })
}

export function getUnreadCount(): Promise<{ unread: number }> {
  return api.request("/platform-messages/unread/")
}
