/**
 * 客户端环境变量统一入口（Expo 推荐使用 EXPO_PUBLIC_ 前缀）
 *
 * 注意：
 * - 这里读取的是构建时/运行时注入的环境变量（EXPO_PUBLIC_*）
 * - 真机联调时不要用 localhost，改为电脑局域网 IP，例如：http://192.168.1.10:8000
 */

export type AppEnv = 'dev' | 'prod';

function getRequiredEnv(name: string): string {
  const value = process.env[name];
  if (!value) {
    throw new Error(`缺少环境变量：${name}（请检查 .env 配置）`);
  }
  return value;
}

function getOptionalEnv(name: string, fallback: string): string {
  return process.env[name] ?? fallback;
}

export type AppRuntimeEnv = 'local' | 'dev' | 'prod';

export const APP_ENV = (getOptionalEnv('EXPO_PUBLIC_ENV', 'local') as AppRuntimeEnv) ?? 'local';

function getApiBaseUrl(env: AppRuntimeEnv): string {
  // 向后兼容：若直接提供了 EXPO_PUBLIC_API_BASE_URL，则优先使用（不再强制要求 *_DEV/_PROD）
  const direct = process.env.EXPO_PUBLIC_API_BASE_URL;
  if (direct && String(direct).trim()) return String(direct).trim();

  // 约定：local/dev/prod 三套域名分别配置， 便于后续直接切环境而不改代码
  if (env === 'local') {
    return getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_LOCAL', 'http://localhost:8000');
  }
  if (env === 'dev') {
    return getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_DEV', getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_LOCAL', 'http://localhost:8000'));
  }
  return getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_PROD', getOptionalEnv('EXPO_PUBLIC_API_BASE_URL_LOCAL', 'http://localhost:8000'));
}

export const API_BASE_URL = getApiBaseUrl(APP_ENV);

/**
 * 默认语言策略：
 * - auto：优先设备语言（支持列表内时），否则回退 en
 * - en/zh-TW：固定默认语言（仍允许用户在设置中手动切换并持久化）
 */
export const DEFAULT_LANGUAGE = getOptionalEnv('EXPO_PUBLIC_DEFAULT_LANGUAGE', 'auto');

