-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathindex.js
94 lines (83 loc) · 3.28 KB
/
index.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
const join = require("path").join;
// modules to control application life and create native browser window
const { app, BrowserWindow, nativeTheme } = require("electron");
// keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow;
function createWindow() {
nativeTheme.themeSource = 'light';
mainWindow = new BrowserWindow({
width: 1280,
height: 720,
show: false,
}); // https://electronjs.org/docs/api/frameless-window
// notifications https://electronjs.org/docs/tutorial/notifications
// progressbar https://electronjs.org/docs/tutorial/progress-bar
mainWindow.loadFile("./out/index.html");
if (!app.isPackaged || process.env.NODE_ENV === "development") {
const { default: installExtension, REACT_DEVELOPER_TOOLS } = require("electron-devtools-installer");
installExtension(REACT_DEVELOPER_TOOLS)
.then(() => {
mainWindow.show();
mainWindow.webContents.openDevTools();
})
.catch((err) => {
throw err;
});
} else {
mainWindow.once("ready-to-show", () => {
mainWindow.show();
});
}
// emitted when the window is closed.
mainWindow.on("closed", () => {
// dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null;
});
mainWindow.webContents.session.on("will-download",
(_event, item, _webContent) => {
//const fs = require('fs')
switch (item.getFilename()) {
case "data.json":
const path = join(__dirname, "./data.json");
item.setSavePath(path);
break;
}
});
mainWindow.webContents.session.webRequest.onBeforeRequest({urls: ["https://next/*"]}, (details, callback) => {
const path = require("path");
const { url } = details;
const localURL = path.format({
dir: path.normalize(__dirname),
base: url.replace("https://next/", "/out/"),
});
let test = path.resolve(localURL).replace(/\\/g, "/");
callback({
cancel: false,
redirectURL: "file:///" + test,
});
});
}
// this method will be called when Electron has finished
// initialization and is ready to create browser windows.
// some APIs can only be used after this event occurs.
app.on("ready", createWindow);
// 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) {
createWindow();
}
});
// in this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.