// preload.js
const { contextBridge, ipcRenderer } = require('electron');

// 暴露安全的API给渲染进程
contextBridge.exposeInMainWorld('electron', {
  // IPC通信
  ipcRenderer: {
    // 发送消息到主进程（无返回值）
    send: (channel, ...args) => {
      ipcRenderer.send(channel, ...args);
    },
    // 调用主进程方法并获取返回值（Promise）
    invoke: (channel, ...args) => {
      return ipcRenderer.invoke(channel, ...args);
    },
    // 监听来自主进程的消息
    on: (channel, func) => {
      const subscription = (event, ...args) => func(...args);
      ipcRenderer.on(channel, subscription);
      return () => {
        ipcRenderer.removeListener(channel, subscription);
      };
    },
    // 一次性监听来自主进程的消息
    once: (channel, func) => {
      ipcRenderer.once(channel, (event, ...args) => func(...args));
    }
  },
  
  // 操作系统与应用相关信息
  system: {
    // 获取应用版本
    getAppVersion: () => ipcRenderer.invoke('get-app-version')
  },
  
  // 文件操作
  files: {
    // 打开文件选择对话框
    openDirectoryDialog: () => ipcRenderer.invoke('open-directory-dialog'),
    // 在文件管理器中显示文件
    showItemInFolder: (path) => ipcRenderer.invoke('open-file-path', path),
    // 获取文件状态信息
    getFileStats: (path) => ipcRenderer.invoke('get-file-stats', path)
  },
  
  // 外部链接
  shell: {
    // 在默认浏览器中打开URL
    openExternal: (url) => ipcRenderer.invoke('open-url', url)
  }
});

window.addEventListener('DOMContentLoaded', () => {
  console.log('Preload script loaded');
});
  