/**
 * 应用配置管理
 * =============
 *
 * 通过 Tauri IPC 读写本地配置文件 ({app_local_data_dir}/config.json)。
 * 所有环境预设和默认地址均在 Rust 层定义，前端不硬编码任何 API 地址。
 */

import { invoke } from '@tauri-apps/api/core';

export interface AppConfig {
  apiBaseUrl: string;
  environment: string;
}

export interface EnvironmentPreset {
  label: string;
  url: string;
  env: string;
}

/**
 * 加载应用配置
 * 配置文件不存在时返回 Rust 层定义的默认值（生产环境）
 */
export async function loadAppConfig(): Promise<AppConfig> {
  const raw = await invoke<{ api_base_url: string; environment: string }>('load_app_config');
  return {
    apiBaseUrl: raw.api_base_url,
    environment: raw.environment,
  };
}

/**
 * 获取环境预设列表（由 Rust 层定义）
 */
export async function getEnvironmentPresets(): Promise<EnvironmentPreset[]> {
  return await invoke<EnvironmentPreset[]>('get_environment_presets');
}

/**
 * 保存应用配置
 * @param environment 运行模式（production / debug）
 * @param customUrl 已废弃，保留参数仅为兼容旧调用
 */
export async function saveAppConfig(environment: string, customUrl?: string): Promise<void> {
  await invoke('save_app_config', { environment, customUrl });
}
