/**
 * 文件服务器 URL 集中管理
 * 单一数据源：从后端 GetFileServerURL() 获取动态端口
 * 所有模块统一引用此处，消除硬编码端口号
 */

import { GetFileServerURL } from '@bindings/u-desk/app'

const FALLBACK_URL = 'http://localhost:2652'

let _cachedURL: string | null = null
let _initPromise: Promise<string> | null = null

/** 初始化（调用一次即可，内部缓存） */
export function initFileServerURL(): Promise<string> {
  if (_cachedURL) return Promise.resolve(_cachedURL)
  if (_initPromise) return _initPromise
  _initPromise = GetFileServerURL().then(url => {
    _cachedURL = url
    return url
  }).catch(() => {
    _cachedURL = FALLBACK_URL
    return FALLBACK_URL
  })
  return _initPromise
}

/** 同步获取（需先调用过 initFileServerURL，否则返回 fallback） */
export function getFileServerBaseURL(): string {
  return _cachedURL || FALLBACK_URL
}

/** 获取带 /localfs 后缀的完整 base */
export function getLocalFsBaseURL(): string {
  return `${getFileServerBaseURL()}/localfs`
}

/** 启动时自动初始化 */
initFileServerURL().catch(() => {})
