/**
 * Pengavisning i appen (i18n-spec §20–21): belopp kommer ALLTID från API:t som
 * minor units (heltal) + ISO 4217-valuta. Visning formatteras med Intl enligt
 * användarens språk. Ingen aritmetik på flyttalsbelopp i appen.
 */
import { getLanguageTag } from "./i18n";

const MINOR_DIGITS: Record<string, number> = { ISK: 0, JPY: 0, KWD: 3 };

function minorDigits(currency: string): number {
  return MINOR_DIGITS[currency.toUpperCase()] ?? 2;
}

/** "7900" + "SEK" -> "79,00 kr" (sv-SE) / "SEK 79.00" (en-US). */
export function formatMinor(amountMinor: number, currency: string): string {
  const value = amountMinor / 10 ** minorDigits(currency);
  try {
    return new Intl.NumberFormat(getLanguageTag(), {
      style: "currency",
      currency: currency.toUpperCase(),
      maximumFractionDigits: Number.isInteger(value) ? 0 : 2,
    }).format(value);
  } catch {
    return `${value} ${currency.toUpperCase()}`;
  }
}
