// // 在 preload 脚本中。
const { ipcRenderer } = require('electron')
window.electron = {
    // socket
    startSignalr: (user) => {
        ipcRenderer.invoke('startSignalr', user)
    },
    offSignalr: () => {
        ipcRenderer.invoke('offSignalr')
    },
    onStop: () => {
        ipcRenderer.invoke('onStop')
    },
    onInvoke: (str, data) => {
        ipcRenderer.invoke('onInvoke', str, data)
    },
    changeLocalStorage: (callback) => {
        ipcRenderer.on('changeLocalStorage', callback)
    },
    onOtherSignalr: (callback) => {
        ipcRenderer.invoke('onOtherSignalr')
        ipcRenderer.removeAllListeners('onOtherSignalr')
        ipcRenderer.on('onOtherSignalr', callback)
    },
    onSignalr: (callback) => {
        ipcRenderer.invoke('onSignalr')
        ipcRenderer.removeAllListeners('onSignalr')
        ipcRenderer.on('onSignalr', callback)
    },
    // 设置窗口大小
    setMainWindowSize: (config) => {
        ipcRenderer.invoke('setMainWindowSize', { ...config })
    },
    // 获取窗口大小
    getWindowSize: (config) => {
        return ipcRenderer.invoke('getWindowSize')
    },
    // 设置窗口状态
    setViewStatus: (status) => {
        ipcRenderer.invoke('setViewStatus', status)
    },
    // 获取当前是否全屏
    getIsMaximized: () => {
        return ipcRenderer.invoke('getIsMaximized')
    },
    // 获取app路径
    getAppPath: () => {
        return ipcRenderer.invoke('getAppPath')
    },
    // 获取版本号
    getVersion: () => {
        return ipcRenderer.invoke('getVersion')
    },
    // 获取窗口是否显示
    isVisible: () => {
        return ipcRenderer.invoke('isVisible')
    },
    // 获取共享屏幕列表
    getSources: () => {
        return ipcRenderer.invoke('getSources')
    },
    // 复制文字
    setWriteText: (text) => {
        return ipcRenderer.invoke('setWriteText', text)
    },
    // 加入房间通知
    joinNotification: (user) => {
        ipcRenderer.invoke('joinNotification', user)
    },
    // 监听退出
    onQuit: (callback) => {
        ipcRenderer.on('onQuit', callback)
    },
    // 退出房间
    quit: (bool) => {
        return ipcRenderer.invoke('quit', bool)
    },
    // 监听更新
    onUpdate: (callback) => {
        ipcRenderer.on('update', callback)
    },
    // 执行退出房间
    quitAndInstall: (callback) => {
        ipcRenderer.on('quitAndInstall', callback)
    },
    // 点击任务栏图标是否打开窗口
    isOpenWindows: (callback) => {
        ipcRenderer.on('isOpenWindows', callback)
    },
    // 设置环境变量
    setEnv: (str) => {
        ipcRenderer.invoke('setEnv', str)
    },
    // 通知下载最新的包
    onDownload: (type) => {
        ipcRenderer.invoke('updateDownload', type)
    },
    // 选择文件夹
    selectFilePath: (data) => {
        ipcRenderer.invoke('selectFilePath', data)
    },
    // 发送文件夹路径
    onFilePath: (callback) => {
        ipcRenderer.on('onFilePath', callback)
    },
    // 下载文件
    downFile: (callback) => {
        ipcRenderer.on('downFile', callback)
    },
    // 读取注册表
    getRegistry: () => {
        return ipcRenderer.invoke('getRegistry')
    },
    // 写入注册表
    setRegistry: (uuid) => {
        ipcRenderer.invoke('setRegistry', uuid)
    },
    // 创建子窗口
    createChildWindow: (str) => {
        switch (str) {
            case 'show':
                ipcRenderer.invoke('setChildWindowShow', {
                    key: 'shareScreenWindow',
                })
                ipcRenderer.invoke('setChildWindowShow', {
                    key: 'chatSmallWindow',
                })
                break;
            case 'hide':
                ipcRenderer.invoke('createChildWindow', {
                    url: location.origin + `/#/noticeWindow`,
                    width: 388,
                    height: 150,
                    key: 'noticeWindow',
                })
                ipcRenderer.invoke('createChildWindow', {
                    url: location.origin + `/#/shareScreenWindow`,
                    width: 400,
                    height: 80,
                    key: 'shareScreenWindow',
                })
                ipcRenderer.invoke('createChildWindow', {
                    url: location.origin + `/#/chatSmallWindow`,
                    width: 200,
                    height: 150,
                    key: 'chatSmallWindow',
                })
                ipcRenderer.invoke('createChildWindow', {
                    url: location.origin + `/#/chatBigWindow`,
                    width: 540,
                    height: 640,
                    key: 'chatBigWindow',
                })
                ipcRenderer.invoke('createChildWindow', {
                    url: location.origin + `/#/userListWindow`,
                    width: 440,
                    height: 540,
                    key: 'userListWindow',
                })
                break;
            case 'stop':
                ipcRenderer.invoke('setChildWindowShow', {
                    key: 'shareScreenWindow',
                    bool: true
                })
                ipcRenderer.invoke('setChildWindowShow', {
                    key: 'chatSmallWindow',
                    bool: true
                })
                break;
        }
    },
    // 关闭子窗口
    closeChildWindow: (key) => {
        ipcRenderer.invoke('closeChildWindow', key)
    },
    // 设置子窗口
    setChildWindow: (config) => {
        ipcRenderer.invoke('setChildWindow', config)
    },
    // 隐藏主窗口
    setChildWindowShow: (config) => {
        ipcRenderer.invoke('setChildWindowShow', config)
    },
    // 定位主窗口
    setPosition: (data) => {
        ipcRenderer.invoke('setPosition', data)
    },
    // 窗口通信传参
    windowHandleMessage: (data) => {
        ipcRenderer.invoke('windowHandleMessage', data)
    },
    // 窗口通信回调
    windowHandleMessageCallBack: (callback) => {
        ipcRenderer.on('windowHandleMessageCallBack', callback)
    },
}
