BetterDiscordApp-v1/v2/lib/core.js

108 lines
2.9 KiB
JavaScript

/* BetterDiscordApp Core
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
'use strict';
const
_fs = require('fs'),
_config = require('./config.json'),
{ _utils } = require('./utils'),
{ _logger } = require('./utils'),
{ EOL } = require('os'),
_os = require('os');
const _startDate = new Date();
var _cfg;
// Default configs if for some reason we don't receive config params
const _defaults = {
installPath: (_os.platform() === 'win32' ? process.env.APPDATA : _os.platform() === 'darwin' ? `${process.env.HOME}/Library/Preferences`: `/var/local`) + '/BetterDiscord/lib/',
dataPath: (_os.platform() === 'win32' ? process.env.APPDATA : _os.platform() === 'darwin' ? `${process.env.HOME}/Library/Preferences`: `/var/local`) + '/BetterDiscord/data/',
emotesEnabled: true
};
const _resources = {
"mainjs": {
"path": "js",
"filename": "main.js",
"var": "window.BetterDiscord"
},
"jQuery": {
"path": "vendor",
"filename": "jquery-2.2.4.min.js",
"var": "window.$ = window.jQuery"
}
};
var _self;
class Core {
constructor(args) {
_self = this;
this.continue = true;
_logger.log(`v${this.__version} Loading - OS: ${_os.platform()}`);
this.initConfig(args.cfg);
}
initConfig(args) {
_cfg = _config.cfg;
_cfg.installPath = args.installPath || _defaults.installPath;
_cfg.dataPath = args.dataPath || _defaults.dataPath;
_cfg.emotesEnabled = args.emotesEnabled || _defaults.emotesEnabled;
}
hook(mainWindow) {
if(mainWindow === undefined) {
this.exit("mainWindow is undefined!");
return;
}
this.mainWindow = mainWindow;
this.hookEvent('dom-ready', this.domReady);
}
hookEvent(event, callback) {
if(!this.continue) return;
try {
_logger.log(`Hooking ${event}`);
this.mainWindow.webContents.on(event, callback);
}catch(err) {
this.exit(`Failed to hook event ${event}. Reason: ${err}`);
}
}
domReady() {
for(var key in _resources) {
var resource = _resources[key];
_utils.requireJs(`${_cfg.installPath}/${resource.path}/${resource.filename}`, resource.var, _self.mainWindow);
}
_self.pluginLoader();
}
pluginLoader() {
}
exit(reason, severity) {
this.continue = false;
// TODO show an actual error dialog for user
_logger.log(`Quitting. Reason: ${reason}`, severity || 2);
_logger.save();
}
get __version() {
return _config.core.version;
}
}
exports.BetterDiscord = Core;