import { app } from 'electron';
import { join } from 'node:path';

/**
 * 桌面端全局配置
 * 打包模式下渲染层加载的是本地 dist，所有「按环境调整」的地址都收敛在这里，
 * 并支持环境变量覆盖，便于联调测试环境时不改代码切换上游。
 */

/** 应用标识：必须与 electron-builder 的 appId 一致，否则 Windows 系统通知不显示 */
export const APP_ID = 'com.xiaokang.xkadmin';

/** 自定义协议，注册为特权协议后 app://local/ 等价一个「本地 https 站点」（安全上下文） */
export const APP_SCHEME = 'app';
export const APP_HOST = 'local';
export const APP_ORIGIN = `${APP_SCHEME}://${APP_HOST}`;
export const APP_INDEX_URL = `${APP_ORIGIN}/`;

/** 开发模式加载 web-antd 的 vite dev server（端口对齐 apps/web-antd/.env.development 的 VITE_PORT=5666） */
export const DEV_SERVER_URL = process.env.XK_DESKTOP_DEV_URL ?? 'http://localhost:5666';

/**
 * /api/admin/* 的转发上游（仅打包后的 app:// 协议使用；dev 模式加载 vite dev server，
 * 由 vite 代理转发到本地后端 localhost:18001，不经过这里）
 * 地址来源：apps/web-antd/vite.config.ts 代理注释中的生产目标 https://api.xiaokang88.com/api/admin/
 */
export const API_UPSTREAM = process.env.XK_DESKTOP_API_UPSTREAM ?? 'https://api.xiaokang88.com';

/**
 * /im-api/* 的转发上游（转发规则对齐开发代理：/im-api/* → 上游 /api/*；同样仅打包后生效，
 * dev 模式由 vite 代理转发到本地 IM localhost:12080）
 * 地址来源：vite.config.ts 代理注释的生产目标 https://api.ws.g.xiaokang88.com/api/，与生产 WS 同主机
 */
export const IM_UPSTREAM = process.env.XK_DESKTOP_IM_UPSTREAM ?? 'https://api.ws.g.xiaokang88.com';

/**
 * 更新包下载页地址（与 electron-builder.config.cjs 的 publish.url 保持一致）
 * 兼作 mac 未签名时「自动更新不可用 → 手动下载」的跳转页
 * TODO(待确认)：更新包静态托管地址
 */
export const DOWNLOAD_PAGE_URL = 'https://static.xiaokang88.com/xk-desktop/';

/** 全局快捷键：唤起/隐藏主窗口（CommandOrControl 在 Windows 映射 Ctrl、mac 映射 Cmd） */
export const MAIN_WINDOW_SHORTCUT = 'CommandOrControl+Alt+X';

/**
 * 解析运行时资源路径（图标等）
 * 打包后 extraResources 位于 process.resourcesPath，开发时直接读工程 resources 目录
 */
export function getResourcePath(name: string): string {
  return app.isPackaged
    ? join(process.resourcesPath, name)
    : join(app.getAppPath(), 'resources', name);
}
