import { apiGet, apiPost, apiPostFormData } from "./client";
import type {
  AudioConversationResponse,
  Conversation,
} from "../types/Conversation";

export async function createConversation(
  productId: string,
  deviceId?: string,
): Promise<Conversation> {
  return apiPost<Conversation>("/api/v1/conversations", {
    product_id: productId,
    device_id: deviceId,
  });
}

export async function getConversation(conversationId: string): Promise<Conversation> {
  return apiGet<Conversation>(`/api/v1/conversations/${conversationId}`);
}

export async function sendConversationAudio(
  conversationId: string,
  uri: string,
): Promise<AudioConversationResponse> {
  const extension = uri.split(".").pop()?.toLowerCase() || "amr";
  const mimeByExt: Record<string, string> = {
    amr: "audio/amr",
    wav: "audio/wav",
    m4a: "audio/m4a",
    caf: "audio/x-caf",
    webm: "audio/webm",
  };

  const form = new FormData();
  form.append("audio", {
    uri,
    name: `audio.${extension}`,
    type: mimeByExt[extension] || "audio/amr",
  } as unknown as Blob);

  return apiPostFormData<AudioConversationResponse>(
    `/api/v1/conversations/${conversationId}/audio`,
    form,
  );
}
