feat: mac 添加权限

This commit is contained in:
alger
2025-12-20 18:32:14 +08:00
parent 7e59cfee05
commit 00a251b5b6
13 changed files with 197 additions and 34 deletions

View File

@@ -143,6 +143,12 @@ export function initializeWindowManager() {
}
});
// 强制退出应用(用于免责声明拒绝等场景)
ipcMain.on('quit-app', () => {
setAppQuitting(true);
app.quit();
});
ipcMain.on('mini-tray', (event) => {
const win = BrowserWindow.fromWebContents(event.sender);
if (win) {

View File

@@ -23,14 +23,57 @@ ipcMain.handle('unblock-music', async (_event, id, songData, enabledSources) =>
}
});
async function startMusicApi(): Promise<void> {
console.log('MUSIC API STARTED');
const port = (store.get('set') as any).musicApiPort || 30488;
await server.serveNcmApi({
port
/**
* 检查端口是否可用
*/
function checkPortAvailable(port: number): Promise<boolean> {
return new Promise((resolve) => {
const net = require('net');
const tester = net
.createServer()
.once('error', () => {
resolve(false);
})
.once('listening', () => {
tester.close(() => resolve(true));
})
.listen(port);
});
}
async function startMusicApi(): Promise<void> {
console.log('MUSIC API STARTING...');
const settings = store.get('set') as any;
let port = settings?.musicApiPort || 30488;
const maxRetries = 10;
// 检查端口是否可用,如果不可用则尝试下一个端口
for (let i = 0; i < maxRetries; i++) {
const isAvailable = await checkPortAvailable(port);
if (isAvailable) {
break;
}
console.log(`端口 ${port} 被占用,尝试切换到端口 ${port + 1}`);
port++;
}
// 如果端口发生变化,保存新端口到配置
const originalPort = settings?.musicApiPort || 30488;
if (port !== originalPort) {
console.log(`端口从 ${originalPort} 切换到 ${port}`);
store.set('set', { ...settings, musicApiPort: port });
}
try {
await server.serveNcmApi({
port
});
console.log(`MUSIC API STARTED on port ${port}`);
} catch (error) {
console.error(`MUSIC API 启动失败:`, error);
throw error;
}
}
export { startMusicApi };