import type { GeoDeviceContext, LocalizationContext } from '../types.js';
import {
  resolveLocaleFromCountry,
  getDefaultLocale,
} from './countryToLocale.js';

/**
 * Определяет locale на основе geo-контекста.
 * По умолчанию — русский. Только если геопозиция из другой страны — язык этой страны.
 */
export function resolveLocale(ctx: GeoDeviceContext | null): LocalizationContext {
  const fallback: LocalizationContext = {
    locale: getDefaultLocale(),
    language: getDefaultLocale(),
    region: null,
    countryCode: null,
    timezone: null,
    source: 'fallback',
  };

  if (!ctx) return fallback;

  const geo = ctx.geo;

  // Геопозиция (countryCode) — если есть, используем язык страны
  if (geo?.countryCode) {
    const locale = resolveLocaleFromCountry(geo.countryCode);
    return {
      locale,
      language: locale,
      region: geo.region ?? null,
      countryCode: geo.countryCode,
      timezone: geo.timezone ?? null,
      source: 'geo',
    };
  }

  // Нет гео — по умолчанию русский
  return fallback;
}
