forked from gitify-app/gitify
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js
92 lines (80 loc) · 2.37 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
const { ipcMain, app, nativeTheme } = require('electron');
const { menubar } = require('menubar');
const { autoUpdater } = require('electron-updater');
const { onFirstRunMaybe } = require('./first-run');
const path = require('path');
const iconIdle = path.join(
__dirname,
'assets',
'images',
'tray-idleTemplate.png'
);
const iconActive = path.join(__dirname, 'assets', 'images', 'tray-active.png');
const browserWindowOpts = {
width: 500,
height: 400,
minWidth: 500,
minHeight: 400,
resizable: false,
webPreferences: {
enableRemoteModule: true,
overlayScrollbars: true,
nodeIntegration: true,
contextIsolation: false,
},
};
const delayedHideAppIcon = () => {
if (app.dock && app.dock.hide) {
// Setting a timeout because the showDockIcon is not currently working
// See more at https://github.com/maxogden/menubar/issues/306
setTimeout(() => {
app.dock.hide();
}, 1500);
}
};
app.on('ready', async () => {
await onFirstRunMaybe();
});
const menubarApp = menubar({
icon: iconIdle,
index: `file://${__dirname}/index.html`,
browserWindow: browserWindowOpts,
preloadWindow: true,
});
menubarApp.on('ready', () => {
delayedHideAppIcon();
menubarApp.tray.setIgnoreDoubleClickEvents(true);
autoUpdater.checkForUpdatesAndNotify();
nativeTheme.on('updated', () => {
if (nativeTheme.shouldUseDarkColors) {
menubarApp.window.webContents.send('update-native-theme', 'DARK');
} else {
menubarApp.window.webContents.send('update-native-theme', 'LIGHT');
}
});
ipcMain.on('reopen-window', () => menubarApp.showWindow());
ipcMain.on('app-quit', () => menubarApp.app.quit());
ipcMain.on('update-icon', (_, arg) => {
if (!menubarApp.tray.isDestroyed()) {
if (arg === 'TrayActive') {
menubarApp.tray.setImage(iconActive);
} else {
menubarApp.tray.setImage(iconIdle);
}
}
});
menubarApp.window.webContents.on('devtools-opened', () => {
menubarApp.window.setSize(800, 600);
menubarApp.window.center();
menubarApp.window.resizable = true;
});
menubarApp.window.webContents.on('devtools-closed', () => {
const trayBounds = menubarApp.tray.getBounds();
menubarApp.window.setSize(
browserWindowOpts.width,
browserWindowOpts.height
);
menubarApp.positioner.move('trayCenter', trayBounds);
menubarApp.window.resizable = false;
});
});