/**
 * 本地文件 URL 工具
 * =================
 *
 * 封装 Rust Command 路径校验 + convertFileSrc 的安全文件访问模式。
 * 所有本地文件（视频、图片、字体等）统一通过此工具获取可访问的 URL，
 * 不再直接调用 plugin-fs readFile 创建 Blob URL。
 */

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

/**
 * 获取本地文件的安全访问 URL
 *
 * 流程：
 * 1. 调用 Rust validate_media_path 做路径安全检查（遍历过滤、绝对路径、敏感目录）
 * 2. 通过后使用 convertFileSrc 生成 asset:// 协议 URL
 *
 * @param path 本地文件绝对路径
 * @returns asset:// 协议 URL，可直接用于 img / video / audio 标签
 */
export async function getLocalFileUrl(path: string): Promise<string> {
  const resp = await invoke<{ code: number; message: string; data?: string }>(
    'validate_media_path',
    { path }
  );
  if (resp.code !== 200 || !resp.data) {
    throw new Error(resp.message);
  }
  return convertFileSrc(resp.data);
}
