-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
92 lines (76 loc) · 2.8 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
// Npm libs
import fs from 'fs';
import path from 'path';
// Local libs
import AppDataManagerFactory from './js/AppDataManager.js';
import ConfigManager from './js/ConfigManager.js';
import fileScanner from './fileScanner.js';
import loadModules from './loadModules.js';
import ModuleDownloader from './moduleDownloader.js';
import './windowManager.js';
function getRandomName() {
const names = fs.readFileSync('random-names.txt', 'utf8').split('\n');
return names[Math.floor(Math.random() * (names.length - 1))];
}
export const load = async(electron) => {
const { app, BrowserWindow, ipcMain } = electron;
global.app = app;
global.BrowserWindow = BrowserWindow;
global.ipcMain = ipcMain;
global.cssPath = path.resolve(app.getAppPath(), 'css');
global.modulesPath = path.resolve(app.getAppPath(), 'modules');
global.tmpDir = path.resolve(app.getAppPath(), 'tmp');
global.viewsPath = path.resolve(app.getAppPath(), 'views');
global.AppDataManager = await AppDataManagerFactory(app.getAppPath());
global.ConfigManager = ConfigManager;
global.fileScanner = fileScanner;
await ConfigManager.init();
// Build html file
await loadModules();
// Init app
global.mainWindow = createWindow(`Projet L.U.M.E.N - ${getRandomName()}`, tmpDir + '/index.html', 1920, 1080);
app.on('ready', console.log);
ipcMain.on('app-quit', () => {
// TODO: save data
app.quit();
});
ipcMain.on('app-restart', () => {
// TODO: save data
app.relaunch();
app.exit();
});
ipcMain.on('toggleDevTools', () => {
BrowserWindow.getFocusedWindow().toggleDevTools();
});
ipcMain.handle('getAppPath', () => {
return app.getAppPath();
});
ipcMain.handle('AppDataManager-saveObject', async(e, moduleName, dataName, objectData) => {
return await AppDataManager.saveObject(moduleName, dataName, objectData);
});
ipcMain.handle('AppDataManager-loadObject', async(e, moduleName, dataName,) => {
return await AppDataManager.loadObject(moduleName, dataName);
});
ipcMain.handle('AppDataManager-exists', async(e, moduleName, dataName) => {
console.log(moduleName, dataName);
return await AppDataManager.exists(moduleName, dataName);
});
ipcMain.handle('ConfigManager-get', (e, moduleName, item) => {
return ConfigManager.get(moduleName, item);
});
ipcMain.handle('ConfigManager-getMetadata', (e, moduleName) => {
return ConfigManager.getMetadata(moduleName);
});
ipcMain.handle('ConfigManager-set', (e, moduleName, item, value) => {
return ConfigManager.set(moduleName, item, value);
});
ipcMain.handle('getModulesList', (e) => {
return Object.keys(modulesMetaData);
});
ipcMain.handle('app-install-module', async(e, moduleData, chosenTag) => {
await ModuleDownloader.install(moduleData, chosenTag);
});
ipcMain.handle('app-uninstall-module', async(e, moduleName) => {
await ModuleDownloader.uninstall(moduleName);
});
};