Files
lyroc/electron-app/preload.js
2025-05-27 14:16:48 +08:00

98 lines
2.7 KiB
JavaScript

/*
* @Date: 2025-05-06 17:45:54
* @LastEditors: 陈子健
* @LastEditTime: 2025-05-23 14:14:05
* @FilePath: /mac-lyric-vue/electron-app/preload.js
*/
const { contextBridge, ipcRenderer } = require('electron');
// 暴露安全的API供渲染进程使用
contextBridge.exposeInMainWorld('electronAPI', {
// 获取后端URL
getBackendUrl: () => ipcRenderer.invoke('get-backend-url'),
// 获取前端URL
getFrontendUrl: () => ipcRenderer.invoke('get-frontend-url'),
// 处理窗口拖动 - 改为使用原生拖动
startWindowDrag: () => {
ipcRenderer.send('start-window-drag');
},
// 鼠标悬停状态变化事件
onMouseHoverChange: (callback) => {
// 清除旧的监听器,避免重复
ipcRenderer.removeAllListeners('mouse-hover-change');
// 添加新的监听器
ipcRenderer.on('mouse-hover-change', (_, isHovering) => callback(isHovering));
// 返回一个清理函数
return () => {
ipcRenderer.removeAllListeners('mouse-hover-change');
};
},
// 监听窗口锁定状态变化事件
onToggleLockWindow: (callback) => {
ipcRenderer.removeAllListeners('toggle-lock-window');
ipcRenderer.on('toggle-lock-window', (_, isLocked) => callback(isLocked));
return () => {
ipcRenderer.removeAllListeners('toggle-lock-window');
};
},
// 保持窗口的锁定状态
setWindowLockState: (isLocked) => {
ipcRenderer.send('set-window-lock-state', isLocked);
},
// 渲染close window
setCloseWindowState: (showWindow) => {
ipcRenderer.send('set-close-window-state', showWindow);
},
// 监听删除歌词事件
onDeleteCurrentLyrics: (callback) => {
ipcRenderer.on('delete-current-lyrics', () => {
callback();
});
},
// 监听主窗口数据
onMainWindowData: (callback) => {
ipcRenderer.on('main-window-data', (_, data) => {
callback(data);
});
},
// 监听获取主窗口数据请求
onGetMainWindowData: (callback) => {
ipcRenderer.on('get-main-window-data', () => {
callback();
});
},
// 发送数据到搜索窗口
sendToSearchWindow: (data) => {
ipcRenderer.send('send-to-search-window', data);
},
closeSearchWindow: () => ipcRenderer.send('close-search-window'),
// 简化的语言设置API
getLanguage: () => ipcRenderer.invoke('get-language'),
setLanguage: (lang) => ipcRenderer.invoke('set-language', lang),
onLanguageChange: (callback) => {
ipcRenderer.removeAllListeners('change-language');
ipcRenderer.on('change-language', (_, lang) => callback(lang));
return () => {
ipcRenderer.removeAllListeners('change-language');
};
},
// 发送语言切换事件
changeLanguage: (lang) => {
ipcRenderer.send('change-language', lang);
}
});