98 lines
2.7 KiB
JavaScript
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);
|
|
}
|
|
});
|