fix(electron): make macOS dev dock icon setup non-fatal

This commit is contained in:
plebeius
2026-02-18 19:52:09 +08:00
parent 023adccddf
commit a39fafa08f
+24 -5
View File
@@ -1,5 +1,5 @@
import './log.js';
import { app, BrowserWindow, Menu, MenuItem, Tray, shell, dialog, nativeTheme, ipcMain, clipboard } from 'electron';
import { app, BrowserWindow, Menu, MenuItem, Tray, shell, dialog, nativeTheme, nativeImage, ipcMain, clipboard } from 'electron';
import { automateUploadMedia } from './media-upload-automation.js';
import isDev from 'electron-is-dev';
import fs from 'fs';
@@ -318,14 +318,33 @@ const createMainWindow = () => {
}
};
const setDevDockIcon = () => {
if (process.platform !== 'darwin' || !isDev || !app.dock) {
return;
}
const iconCandidates = [path.join(dirname, '..', 'public', 'icon.icns'), path.join(dirname, '..', 'public', 'icon.png')];
for (const iconPath of iconCandidates) {
try {
const icon = nativeImage.createFromPath(iconPath);
if (icon.isEmpty()) {
continue;
}
app.dock.setIcon(icon);
return;
} catch (error) {
console.warn(`[Electron Main] Failed to set dock icon from ${iconPath}`, error);
}
}
console.warn(`[Electron Main] Could not load any dock icon (${iconCandidates.join(', ')})`);
};
app.whenReady().then(() => {
// Set app name and dock icon for development mode on macOS
if (process.platform === 'darwin' && isDev) {
app.setName('5chan');
if (app.dock) {
const iconPath = path.join(dirname, '..', 'public', 'icon.icns');
app.dock.setIcon(iconPath);
}
setDevDockIcon();
}
createMainWindow();