This repository was archived by the owner on Nov 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
118 lines (106 loc) · 2.83 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
const { app, BrowserWindow, ipcMain, Menu } = require("electron"),
fs = require("fs"),
path = require("path"),
Store = require("electron-store"),
store = new Store();
// config
app.disableHardwareAcceleration();
Store.initRenderer();
let mainWindow, menuTemplate;
fs.readFile(__dirname + "/token.txt", "utf8", (tokenReadError, token) => {
if (tokenReadError && tokenReadError.code !== "ENOENT") throw tokenReadError;
else if (tokenReadError) {
fs.writeFile(__dirname + "/token.txt", "", (tokenCreateFileError) => {
if (tokenCreateFileError) throw tokenCreateFileError;
console.log(
`Please enter your token in "token.txt"\n File was not found and has been created`
);
process.exit();
});
} else if (!token) {
console.log(`Please enter your token in "token.txt"\n No data in file`);
process.exit();
} else mainApp(token);
});
function mainApp(token) {
function windowSetup() {
mainWindow = new BrowserWindow({
width: 1030,
height: 800,
minWidth: 575,
minHeight: 300,
icon: __dirname + "/res/icon.png",
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
},
});
// Load app
mainWindow.loadFile(path.join(__dirname, "index.html"));
mainWindow.on("closed", () => (mainWindow = null));
menuTemplate = [
{
label: "Options",
submenu: [
{
label: `Turn notifications ${store.get("notifOn") ? "off" : "on"}`,
click() {
store.set("notifOn", !store.get("notifOn"));
menuTemplate[0].submenu[0].label = `Turn notifications ${
store.get("notifOn") ? "off" : "on"
}`;
Menu.setApplicationMenu(Menu.buildFromTemplate(menuTemplate));
},
},
{
label: "Quit",
click() {
app.quit();
},
},
],
},
{
label: "Advanced options",
submenu: [
{
label: "Open Devtools",
accelerator: "CmdOrCtrl+Shift+I",
click() {
mainWindow.openDevTools();
},
},
{
label: "Reload",
accelerator: "CmdOrCtrl+R",
click() {
mainWindow.reload();
},
},
],
},
];
Menu.setApplicationMenu(Menu.buildFromTemplate(menuTemplate));
}
ipcMain.on("ready", () => {
mainWindow.webContents.send("token", token);
});
if (app.isReady()) windowSetup();
app.on("ready", windowSetup);
// Quit when all windows are closed.
app.on("window-all-closed", () => {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("activate", () => {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) windowSetup();
});
}
ipcMain.handle("getSetting", (event, key) => {
return store.get(key, true);
});