diff --git a/lib/BetterDiscordDBG.js b/lib/BetterDiscordDBG.js deleted file mode 100644 index 208770b..0000000 --- a/lib/BetterDiscordDBG.js +++ /dev/null @@ -1,459 +0,0 @@ -/* BetterDiscordApp Entry - * Version: 2.0 - * Author: Jiiks | http://jiiks.net - * Date: 27/08/2015 - 15:51 - * Last Update: 30/11/2015 - 21:41 - * https://github.com/Jiiks/BetterDiscordApp - */ - -//Imports -var _fs = require("fs"); -var _config = require("./config.json"); -var _utils = require("./utils"); -var _ipc = require('ipc'); - - -var _repo = "Jiiks"; - -//Beta flag -var _beta = false; -var _alerts = true; -//Local flag -var _local = false; -var _localServer = "http://localhost"; -//Please note that you must either use https or set web-security to false when using local server -//Everything is loaded from _localServer/BetterDiscordApp/ -//For css use: _localServer/BetterDiscordApp/css/main.css -//For js use: _localServer/BetterDiscordApp/js/main.js - -//Variables -var _version -var _mainWindow; -var _updater; -var _hash; - -var _userDefault = { "cache": null }; -var _userConfig = _userDefault; -var _cacheExpired = true; -var _cacheDays = 0; - -var _dataPath; - -//noinspection JSUnresolvedVariable; -var _os = process.platform; -var _userFile; - -var _this; -function BetterDiscord(mainWindow) { - - _this = this; - - console.log("BetterDiscord: Starting up"); - console.log("BetterDiscord: mainWindow = " + mainWindow); - - - _mainWindow = mainWindow; - _version = _config.Core.Version; - - console.log("BetterDiscord: Version: " + _version); - - _utils = new _utils.Utils(mainWindow); - - this.createAndCheckData(this.init); -} - -BetterDiscord.prototype.getUtils = function() { - return _utils; -} - -BetterDiscord.prototype.createAndCheckData = function(callback) { - - this.getUtils().log("Checking Cache"); - - //New data path - //noinspection JSUnresolvedVariable - _dataPath = _os == "win32" ? process.env.APPDATA : _os == 'darwin' ? process.env.HOME + '/Library/Preferences' : '/var/local'; - _dataPath += "/BetterDiscord"; - _userFile = _dataPath + "/user.json"; - - try { - //Create data path folder if it doesn't exist - if (!_fs.existsSync(_dataPath)) { - this.getUtils().log("Creating Data Folder @" + _dataPath); - _fs.mkdirSync(_dataPath); - } - - //Read user config if it exists - if(_fs.existsSync(_userFile)) { - _this.getUtils().log("Reading userfile"); - _userConfig = JSON.parse(_fs.readFileSync(_userFile)); - } - - //Userfile doesn't exist - if(_userConfig.cache == null) { - _this.getUtils().log("User file doesn't exist"); - _userConfig.cache = new Date(); - } else { - var currentDate = new Date(); - var cacheDate = new Date(_userConfig.cache); - //Check if cache is expired - if(Math.abs(currentDate.getDate() - cacheDate.getDate()) > _cacheDays) { - _this.getUtils().log("Cache expired"); - _userConfig.cache = currentDate; - } else { - _this.getUtils().log("Cache is good"); - _cacheExpired = false; - } - } - - //Write new cache date if expired - if(_cacheExpired) { - this.getUtils().log("Cache Expired or NULL"); - _fs.writeFileSync(_userFile, JSON.stringify(_userConfig)); - } - - callback(); - }catch(err) { - _this.getUtils().log(err); - } -}; - -BetterDiscord.prototype.init = function() { - var self = this; - - this.getUtils().log("Initializing"); - - this.getUtils().log("Getting latest hash"); - - var branch = _beta ? "beta" : "master"; - - this.getUtils().log("Using repo: " + _repo + " and branch: " + branch); - - //Get the latest commit hash - this.getUtils().download("api.github.com", "/repos/" + _repo + "/BetterDiscordApp/commits/" + branch, function(data) { - - try { - _hash = JSON.parse(data).sha; - self.getUtils().execJs("var _hash = " + _hash + ";"); - }catch(err) { - self.quit("Failed to load hash"); - return; - } - - if(typeof(_hash) == "undefined") { - self.quit("Failed to load hash"); - return; - } - - self.getUtils().log("Hash: "+ _hash); - - self.getUtils().log("Downloading updater"); - //Download latest updater - self.getUtils().download("raw.githubusercontent.com", "/" + _repo + "/BetterDiscordApp/" + _hash + "/updater.json", function(data) { - - try { - _updater = JSON.parse(data); - }catch(err) { - self.quit("Failed to load updater data"); - return; - } - - if(typeof(_updater) == "undefined") { - self.quit("Failed to load updater data"); - return; - } - - self.getUtils().log("Latest Versions: " + _updater.LatestVersion); - self.getUtils().log("Using CDN: " + _updater.CDN); - self.getUtils().log("Starting up"); - self.start(); - }); - - }); -}; - -BetterDiscord.prototype.start = function() { - _this.getUtils().log("Hooking dom-ready"); - _this.getUtils().getWebContents().on('dom-ready', function() { _this.domReady(); }); -}; - -BetterDiscord.prototype.quit = function(reason) { - console.log("BetterDiscord ERR: " + reason); -}; - -var ipcHooked = false; - -BetterDiscord.prototype.domReady = function() { - try { - _this.getUtils().log("Hooked dom-ready"); - if(_updater.LatestVersion > _version) { - _this.getUtils().log("Update available"); - _this.getUtils().execJs('alert("An update for BetterDiscord is available(v'+ _updater.LatestVersion +')! Download the latest version from GitHub!")'); - } - - //Create loading element - _this.getUtils().execJs('var loadingNode = document.createElement("DIV");'); - _this.getUtils().execJs('loadingNode.innerHTML = \'
BetterDiscord - Loading Libraries :
\''); - _this.getUtils().execJs('var flex = document.getElementsByClassName("flex-vertical flex-spacer")[0]; flex.appendChild(loadingNode);'); - - //Create ipc - _this.getUtils().execJs("var betterDiscordIPC = require('ipc');"); - - _this.getUtils().log("Hooking ipc async"); - - _ipc.on('asynchronous-message', function(event, arg) { _this.ipcAsyncMessage(event, arg); }); - - _this.getUtils().log("Hooked ipc async"); - - //Inject version - _this.getUtils().execJs('var version = "'+_version+'"'); - //Load jQuery - _this.getUtils().updateLoading("Loading Resources(jQuery)", 0, 100); - _this.getUtils().injectJavaScriptSync("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", "load-jQueryUI"); - }catch(err) { - _this.getUtils().log(err); - } -}; - -BetterDiscord.prototype.ipcAsyncMessage = function(event, arg) { - - var libCount = 9; - - var loadUs = { - 'load-jQueryUI': { - 'type': 'javascript', - 'resource': 'jQueryUI', - 'domain': 'cdnjs.cloudflare.com', - 'url': '//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js', - 'localurl': null, - 'message': 'load-mainCSS', - 'cacheable': false, - 'variable': null - }, - 'load-mainCSS': { - 'type': 'css', - 'resource': 'Main CSS', - 'domain': _updater.CDN, - 'url': '//' + _updater.CDN + '/' + _repo + '/BetterDiscordApp/' + _hash + '/css/main.min.css', - 'localurl': _localServer + '/BetterDiscord/css/main.css', - 'message': 'load-mainJS', - 'cacheable': false, - 'variable': null - }, - 'load-mainJS': { - 'type': 'javascript', - 'resource': 'Main JS', - 'domain': _updater.CDN, - 'url': '//' + _updater.CDN + '/' + _repo + '/BetterDiscordApp/' + _hash + '/js/main.min.js', - 'localurl': _localServer + '/BetterDiscord/js/main.js', - 'message': 'load-publicServers', - 'cacheable': false, - 'variable': null - }, - 'load-publicServers': { - 'type': 'json', - 'resource': 'Public Servers', - 'domain': _updater.CDN, - 'url': '//' + _repo + '/BetterDiscordApp/' + _hash + 'serverlist.json', - 'localurl': null, - 'message': 'load-emoteData-twitchGlobal', - 'cacheable': false, - 'variable': 'publicServers' - }, - 'load-emoteData-twitchGlobal': { - 'type': 'emotedata', - 'resource': 'Twitch Global Emotedata', - 'domain': 'http://twitchemotes.com', - 'url': 'http://twitchemotes.com/api_cache/v2/global.json', - 'localurl': null, - 'message': 'load-emoteData-twitchSub', - 'cacheable': true, - 'variable': 'emotesTwitch', - 'localpath': _dataPath + "/emotes_twitch_global.json", - 'encoding': "utf8", - 'https': false, - 'parse': true, - 'specialparser': 0 - }, - 'load-emoteData-twitchSub': { - 'type': 'emotedata', - 'resource': 'Twitch Subscriber Emotedata', - 'domain': 'http://twitchemotes.com', - 'url': 'http://twitchemotes.com/api_cache/v2/subscriber.json', - 'localurl': null, - 'message': 'load-emoteData-ffz', - 'cacheable': true, - 'variable': 'subEmotesTwitch', - 'localpath': _dataPath + "/emotes_twitch_subscriber.json", - 'encoding': "utf8", - 'https': false, - 'parse': true, - 'specialparser': 1 - }, - 'load-emoteData-ffz': { - 'type': 'emotedata', - 'resource': 'FrankerFaceZ Emotedata', - 'domain': _updater.CDN, - 'url': '/' + _repo + '/BetterDiscordApp/' + _hash + '/emotedata_ffz.json', - 'localurl': null, - 'message': 'load-emoteData-bttv', - 'cacheable': true, - 'variable': 'emotesFfz', - 'localpath': _dataPath + "/emotes_ffz.json", - 'encoding': "utf8", - 'https': true, - 'parse': true, - 'specialparser': 2 - }, - 'load-emoteData-bttv': { - 'type': 'emotedata', - 'resource': 'BTTV Emotedata', - 'domain': 'api.betterttv.net', - 'url': '/emotes', - 'localurl': null, - 'message': 'start-bd', - 'cacheable': true, - 'variable': 'emotesBTTV', - 'localpath': _dataPath + "/emotes_bttv.json", - 'encoding': "utf8", - 'https': true, - 'parse': false, - 'specialparser': 3 - } - }; - try { - var loadCount = 0; - - if(loadUs.hasOwnProperty(arg)) { - loadCount++; - var loadMe = loadUs[arg]; - _this.getUtils().updateLoading("Loading Resources (" + loadMe.resource + ")", loadCount / libCount * 100, 100); - - var url = loadMe.url; - if(_local && loadMe.localurl != null) { - url = loadMe.localurl; - } - - if(loadMe.type == 'javascript') { - _this.getUtils().injectJavaScriptSync(url, loadMe.message); - }else if(loadMe.type == 'css') { - _this.getUtils().injectStylesheetSync(url, loadMe.message); - }else if(loadMe.type == 'json') { - _this.getUtils().download(loadMe.domain, loadMe.url, function(data) { - _this.getUtils().execJs('var ' + loadMe.variable + ' = ' + data + ';'); - _this.getUtils().sendIcpAsync(loadMe.message); - }); - }else if(loadMe.type == 'emotedata') { - - var exists = _fs.existsSync(loadMe.localpath); - - if(exists && !_cacheExpired && loadMe.cacheable) { - _this.getUtils().log("Reading " + loadMe.resource + " from file"); - _this.injectEmoteData(loadMe, _fs.readFileSync(loadMe.localpath, loadMe.encoding)); - } else { - _this.getUtils().log("Downloading " + loadMe.resource); - - if(loadMe.https) { - _this.getUtils().download(loadMe.domain, loadMe.url, function(data) { - var parsedEmoteData = _this.parseEmoteData(loadMe, data); - _this.saveEmoteData(loadMe, parsedEmoteData); - _this.injectEmoteData(loadMe, parsedEmoteData); - }); - - } else { - _this.getUtils().downloadHttp(loadMe.url, function(data) { - var parsedEmoteData = _this.parseEmoteData(loadMe, data); - _this.saveEmoteData(loadMe, parsedEmoteData); - _this.injectEmoteData(loadMe, parsedEmoteData); - }); - } - } - - - } - } - - if(arg == "start-bd") { - _this.getUtils().updateLoading("Starting Up", 100, 100); - _this.getUtils().execJs('var mainCore; var startBda = function() { mainCore = new Core(); mainCore.init(); }; startBda();'); - - //Remove loading node - setTimeout(function() { - _this.getUtils().execJs('$("#bd-status").parent().parent().hide();'); - }, 2000); - } - }catch(err) { _this.getUtils().log(err); } -}; - -BetterDiscord.prototype.parseEmoteData = function(loadMe, emoteData) { - try { - _this.getUtils().log("Parsing: " + loadMe.resource); - - var returnData; - - switch(loadMe.specialparser) { - - case 0: //Twitch Global Emotes - returnData = emoteData.replace(/\$/g, "\\$").replace(/'/g, "\\'").replace(/"/g, "\\\""); - break; - case 1: //Twitch Subscriber Emotes - returnData = {}; - emoteData = JSON.parse(emoteData); - var channels = emoteData["channels"]; - for(var channel in channels) { - var emotes = channels[channel]["emotes"]; - for(var i = 0 ; i < emotes.length ; i++) { - var code = emotes[i]["code"]; - var id = emotes[i]["image_id"]; - returnData[code] = id; - } - } - - returnData = JSON.stringify(returnData); - break; - case 2: //FFZ Emotes - returnData = emoteData; - break; - case 3: //BTTV Emotes - returnData = {}; - emoteData = JSON.parse(emoteData); - - for(var emote in emoteData.emotes) { - emote = emoteData.emotes[emote]; - var url = emote.url; - var code = emote.regex; - - returnData[code] = url; - } - - returnData = JSON.stringify(returnData); - break; - - } - - return returnData; - }catch(err) { _this.getUtils().log(err); } - return ""; -}; - -BetterDiscord.prototype.saveEmoteData = function(loadMe, emoteData) { - try { - _fs.writeFileSync(loadMe.localpath, emoteData, loadMe.encoding); - }catch(err) { _this.getUtils().log(err); } - -}; - -BetterDiscord.prototype.injectEmoteData = function(loadMe, emoteData) { - - if(loadMe.parse) { - _this.getUtils().execJs('var ' + loadMe.variable + ' = JSON.parse(\'' + emoteData + '\');'); - } else { - _this.getUtils().execJs('var ' + loadMe.variable + ' = ' + emoteData + ';'); - } - - - - _this.getUtils().sendIcpAsync(loadMe.message); -}; - -exports.BetterDiscord = BetterDiscord; diff --git a/lib/BetterDiscordT.js b/lib/BetterDiscordT.js deleted file mode 100644 index 623972d..0000000 --- a/lib/BetterDiscordT.js +++ /dev/null @@ -1,559 +0,0 @@ -/* BetterDiscordApp Entry - * Version: 2.1 - * Author: Jiiks | http://jiiks.net - * Date: 27/08/2015 - 15:51 - * Last Update: 30/11/2015 - 21:41 - * https://github.com/Jiiks/BetterDiscordApp - */ - -//Imports -var _fs = require("fs"); -var _config = require("./config.json"); -var _utils = require("./utils"); -var _ipc = require('ipc'); - -var _repo = "Jiiks"; - -//Beta flag -var _beta = false; -//Local flag -var _local = false; -var _localServer = "http://localhost"; - -//Variables -var _version; -var _mainWindow; -var _updater; -var _hash; - -var _userDefault = { "cache": null }; -var _userConfig = _userDefault; -var _cacheExpired = true; -var _cacheDays = 0; - -var _dataPath; - -//IDE -/*_config = { - "Core": { - "Version": "0.2.5" - } -};*/ - -//noinspection JSUnresolvedVariable; -var _os = process.platform; -var _userFile; - -var _this; -function BetterDiscord(mainWindow) { - _this = this; - _mainWindow = mainWindow; - _version = _config.Core.Version; - _utils = new _utils.Utils(mainWindow); - - this.createAndCheckData(this.init); -} - -BetterDiscord.prototype.initLoaders = function(){ - var os = process.platform; - var _dataPath = os == "win32" ? process.env.APPDATA : os == 'darwin' ? process.env.HOME + '/Library/Preferences' : '/var/local'; - _dataPath += "/BetterDiscord/"; - - if (!_fs.existsSync(_dataPath)) { - console.log('BetterDiscord: Creating BD Dir'); - _fs.mkdirSync(_dataPath); - } - - if (!_fs.existsSync(_dataPath + "plugins/")) { - console.log('BetterDiscord: Creating Plugins Dir'); - _fs.mkdirSync(_dataPath + "plugins/"); - } - - if (!_fs.existsSync(_dataPath + "themes/")) { - console.log('BetterDiscord: Creating Themes Dir'); - _fs.mkdirSync(_dataPath + "themes/"); - } - _mainWindow.webContents.executeJavaScript('var themesupport2 = true'); - - _fs.readdir(_dataPath + "plugins/", function(err, files) { - if (err) { - console.log(err); - return; - } - _mainWindow.webContents.executeJavaScript('var bdplugins = {};'); - files.forEach(function(fileName) { - var plugin = _fs.readFileSync(_dataPath + "plugins/" + fileName, 'utf8'); - var meta = plugin.split('\n')[0]; - if (meta.indexOf('META') < 0) { - console.log('BetterDiscord: ERROR[Plugin META not found in file: ' + fileName + ']'); - return; - } - var pluginVar = meta.substring(meta.lastIndexOf('//META') + 6, meta.lastIndexOf('*//')); - var parse = JSON.parse(pluginVar); - var pluginName = parse['name']; - console.log('BetterDiscord: Loading Plugin: ' + pluginName); - _mainWindow.webContents.executeJavaScript(plugin); - _mainWindow.webContents.executeJavaScript('(function() { var plugin = new ' + pluginName + '(); bdplugins[plugin.getName()] = { "plugin": plugin, "enabled": false } })();') - }); - }); - - _fs.readdir(_dataPath + 'themes/', function(err, files) { - if (err) { - console.log(err); - return; - } - _mainWindow.webContents.executeJavaScript('var bdthemes = {};'); - files.forEach(function(fileName) { - var theme = _fs.readFileSync(_dataPath + 'themes/' + fileName, 'utf8'); - var split = theme.split('\n'); - var meta = split[0]; - if (meta.indexOf('META') < 0) { - console.log('BetterDiscord: ERROR[Theme META not found in file: ' + fileName + ']'); - return; - } - var themeVar = meta.substring(meta.lastIndexOf('//META') + 6, meta.lastIndexOf('*//')); - var parse = JSON.parse(themeVar); - var themeName = parse['name']; - var themeAuthor = parse['author']; - var themeDescription = parse['description']; - var themeVersion = parse['version']; - console.log('BetterDiscord: Loading Theme: ' + themeName); - split.splice(0, 1); - theme = split.join('\n'); - theme = theme.replace(/(\r\n|\n|\r)/gm, ''); - _mainWindow.webContents.executeJavaScript('(function() { bdthemes["' + themeName + '"] = { "enabled": false, "name": "' + themeName + '", "css": "' + escape(theme) + '", "description": "' + themeDescription + '", "author":"' + themeAuthor + '", "version":"' + themeVersion + '" } })();'); - }); - }); -}; - -BetterDiscord.prototype.getUtils = function() { - return _utils; -}; - -BetterDiscord.prototype.createAndCheckData = function(callback) { - - this.getUtils().log("Checking Cache"); - - //New data path - //noinspection JSUnresolvedVariable - _dataPath = _os == "win32" ? process.env.APPDATA : _os == 'darwin' ? process.env.HOME + '/Library/Preferences' : '/var/local'; - _dataPath += "/BetterDiscord"; - _userFile = _dataPath + "/user.json"; - - try { - //Create data path folder if it doesn't exist - if (!_fs.existsSync(_dataPath)) { - this.getUtils().log("Creating Data Folder @" + _dataPath); - _fs.mkdirSync(_dataPath); - } - - //Read user config if it exists - if(_fs.existsSync(_userFile)) { - _userConfig = JSON.parse(_fs.readFileSync(_userFile)); - } - - //Userfile doesn't exist - if(_userConfig.cache == null) { - _userConfig.cache = new Date(); - } else { - var currentDate = new Date(); - var cacheDate = new Date(_userConfig.cache); - //Check if cache is expired - if(Math.abs(currentDate.getDate() - cacheDate.getDate()) > _cacheDays) { - _userConfig.cache = currentDate; - } else { - _cacheExpired = false; - } - } - - //Write new cache date if expired - if(_cacheExpired) { - this.getUtils().log("Cache Expired or NULL"); - _fs.writeFileSync(_userFile, JSON.stringify(_userConfig)); - } - - callback(); - }catch(err) { - //Exit BD - } -}; - -BetterDiscord.prototype.init = function() { - var self = this; - - this.getUtils().log("Initializing"); - - this.getUtils().log("Getting latest hash"); - - var branch = _beta ? "beta" : "master"; - - this.getUtils().log("Using repo: " + _repo + " and branch: " + branch); - - //Get the latest commit hash - this.getUtils().download("api.github.com", "/repos/" + _repo + "/BetterDiscordApp/commits/" + branch, function(data) { - - try { - _hash = JSON.parse(data).sha; - self.getUtils().execJs("var _hash = " + _hash + ";"); - }catch(err) { - self.quit("Failed to load hash"); - return; - } - - if(typeof(_hash) == "undefined") { - self.quit("Failed to load hash"); - return; - } - - self.getUtils().log("Hash: "+ _hash); - - //Download latest updater - self.getUtils().download("raw.githubusercontent.com", "/" + _repo + "/BetterDiscordApp/" + _hash + "/data/updater.json", function(data) { - - try { - _updater = JSON.parse(data); - }catch(err) { - self.quit("Failed to load updater data"); - return; - } - - if(typeof(_updater) == "undefined") { - self.quit("Failed to load updater data"); - return; - } - - self.getUtils().log("Latest Versions: " + _updater.LatestVersion); - self.getUtils().log("Using CDN: " + _updater.CDN); - self.getUtils().log("Starting up"); - self.start(); - }); - - }); -}; - -BetterDiscord.prototype.start = function() { - _this.getUtils().log("Hooking dom-ready"); - var webContents = _this.getUtils().getWebContents(); - webContents.on('dom-ready', function() { _this.domReady(); }); - webContents.on("did-finish-loading", function() { if(!_domHooked) { _this.getUtils().log("Failsafe"); _this.domReady(); } }); -}; - -BetterDiscord.prototype.quit = function(reason) { - console.log("BetterDiscord ERR: " + reason); -}; - -var ipcHooked = false; - -var _domHooked = false; - -BetterDiscord.prototype.domReady = function() { - - _domHooked = true; - - if(ipcHooked) { - _this.load(true); - return; - } - - ipcHooked = true; - _this.load(false); -}; - -BetterDiscord.prototype.load = function(reload) { - _this.getUtils().log("Hooked dom-ready"); - - _this.initLoaders(); - - if(reload) { - _this.getUtils().log("Reloading"); - } - - if(!reload) { - if(_updater.LatestVersion > _version) { - _this.getUtils().execJs('alert("An update for BetterDiscord is available(v'+ _updater.LatestVersion +')! Download the latest version from GitHub!")'); - } - } - - //Create loading element - _this.getUtils().execJs('var loadingNode = document.createElement("DIV");'); - _this.getUtils().execJs('loadingNode.innerHTML = \'
BetterDiscord - Loading Libraries :
\''); - _this.getUtils().execJs('var flex = document.getElementsByClassName("flex-vertical flex-spacer")[0]; flex.appendChild(loadingNode);'); - - //Create ipc - _this.getUtils().execJs("var betterDiscordIPC = require('ipc');"); - - - if(!reload) { - _this.getUtils().log("Hooking ipc async"); - _ipc.on('asynchronous-message', function(event, arg) { _this.ipcAsyncMessage(event, arg); }); - _this.getUtils().log("Hooked ipc async"); - } - - //Inject version - _this.getUtils().execJs('var version = "'+_version+'"'); - //Inject cdn - _this.getUtils().execJs('var bdcdn = "' + _updater.CDN + '";'); - //Load jQuery - _this.getUtils().updateLoading("Loading Resources(jQuery)", 0, 100); - _this.getUtils().injectJavaScriptSync("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", "load-jQueryUI"); - -}; - -var loadCount = 0; - -BetterDiscord.prototype.ipcAsyncMessage = function(event, arg) { - - var libCount = 9; - - var loadUs = { - 'load-jQueryUI': { - 'type': 'javascript', - 'resource': 'jQueryUI', - 'domain': 'cdnjs.cloudflare.com', - 'url': '//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js', - 'localurl': null, - 'message': 'load-mainCSS', - 'cacheable': false, - 'variable': null - }, - 'load-mainCSS': { - 'type': 'css', - 'resource': 'Main CSS', - 'domain': _updater.CDN, - 'url': '//' + _updater.CDN + '/' + _repo + '/BetterDiscordApp/' + _hash + '/css/main.min.css', - 'localurl': _localServer + '/BetterDiscordApp/css/main.css', - 'message': 'load-mainJS', - 'cacheable': false, - 'variable': null - }, - 'load-mainJS': { - 'type': 'javascript', - 'resource': 'Main JS', - 'domain': _updater.CDN, - 'url': '//' + _updater.CDN + '/' + _repo + '/BetterDiscordApp/' + _hash + '/js/main.min.js', - 'localurl': _localServer + '/BetterDiscordApp/js/main.js', - 'message': 'load-publicServers', - 'cacheable': false, - 'variable': null - }, - 'load-publicServers': { - 'type': 'json', - 'resource': 'Public Servers', - 'domain': _updater.CDN, - 'url': '/' + _repo + '/BetterDiscordApp/' + _hash + '/data/serverlist.json', - 'localurl': null, - 'message': 'load-emoteData-twitchGlobal', - 'cacheable': false, - 'variable': 'publicServers' - }, - 'load-emoteData-twitchGlobal': { - 'type': 'emotedata', - 'resource': 'Twitch Global Emotedata', - 'domain': _updater.CDN, - 'url': '/' + _repo + '/BetterDiscordApp/' + _hash + '/data/emotedata_twitch_global.json', - 'localurl': null, - 'message': 'load-emoteData-twitchSub', - 'cacheable': true, - 'variable': 'emotesTwitch', - 'localpath': _dataPath + "/emotes_twitch_global.json", - 'encoding': "utf8", - 'https': true, - 'parse': true, - 'specialparser': 0 - }, - 'load-emoteData-twitchSub': { - 'type': 'emotedata', - 'resource': 'Twitch Subscriber Emotedata', - 'domain': _updater.CDN, - 'url': '/' + _repo + '/BetterDiscordApp/' + _hash + '/data/emotedata_twitch_subscriber.json', - 'localurl': null, - 'message': 'load-emoteData-ffz', - 'cacheable': true, - 'variable': 'subEmotesTwitch', - 'localpath': _dataPath + "/emotes_twitch_subscriber.json", - 'encoding': "utf8", - 'https': true, - 'parse': true, - 'specialparser': 1 - }, - 'load-emoteData-ffz': { - 'type': 'emotedata', - 'resource': 'FrankerFaceZ Emotedata', - 'domain': _updater.CDN, - 'url': '/' + _repo + '/BetterDiscordApp/' + _hash + '/data/emotedata_ffz.json', - 'localurl': null, - 'message': 'load-emoteData-bttv', - 'cacheable': true, - 'variable': 'emotesFfz', - 'localpath': _dataPath + "/emotes_ffz.json", - 'encoding': "utf8", - 'https': true, - 'parse': true, - 'specialparser': 2 - }, - 'load-emoteData-bttv': { - 'type': 'emotedata', - 'resource': 'BTTV Emotedata', - 'domain': 'api.betterttv.net', - 'url': '/emotes', - 'localurl': null, - 'message': 'load-emoteData-bttv-2', - 'cacheable': true, - 'variable': 'emotesBTTV', - 'localpath': _dataPath + "/emotes_bttv.json", - 'encoding': "utf8", - 'https': true, - 'parse': false, - 'specialparser': 3 - }, - 'load-emoteData-bttv-2': { - 'type': 'emotedata', - 'resource': 'BTTV Emotedata', - 'domain': _updater.CDN, - 'url': '/' + _repo + '/BetterDiscordApp/' + _hash + '/data/emotedata_bttv.json', - 'localurl': null, - 'message': 'start-bd', - 'cacheable': true, - 'variable': 'emotesBTTV2', - 'localpath': _dataPath + "/emotes_bttv_2.json", - 'encoding': "utf8", - 'https': true, - 'parse': false, - 'specialparser': 4 - } - }; - - - - if(loadUs.hasOwnProperty(arg)) { - loadCount++; - var loadMe = loadUs[arg]; - _this.getUtils().updateLoading("Loading Resources (" + loadMe.resource + ")", loadCount / libCount * 100, 100); - - var url = loadMe.url; - if(_local && loadMe.localurl != null) { - url = loadMe.localurl; - } - - if(loadMe.type == 'javascript') { - _this.getUtils().injectJavaScriptSync(url, loadMe.message); - }else if(loadMe.type == 'css') { - _this.getUtils().injectStylesheetSync(url, loadMe.message); - }else if(loadMe.type == 'json') { - _this.getUtils().download(loadMe.domain, loadMe.url, function(data) { - _this.getUtils().execJs('var ' + loadMe.variable + ' = ' + data + ';'); - _this.getUtils().sendIcpAsync(loadMe.message); - }); - }else if(loadMe.type == 'emotedata') { - - var exists = _fs.existsSync(loadMe.localpath); - - if(exists && !_cacheExpired && loadMe.cacheable) { - _this.getUtils().log("Reading " + loadMe.resource + " from file"); - _this.injectEmoteData(loadMe, _fs.readFileSync(loadMe.localpath, loadMe.encoding)); - } else { - _this.getUtils().log("Downloading " + loadMe.resource); - - if(loadMe.https) { - _this.getUtils().download(loadMe.domain, loadMe.url, function(data) { - var parsedEmoteData = _this.parseEmoteData(loadMe, data); - _this.saveEmoteData(loadMe, parsedEmoteData); - _this.injectEmoteData(loadMe, parsedEmoteData); - }); - - } else { - _this.getUtils().downloadHttp(loadMe.url, function(data) { - var parsedEmoteData = _this.parseEmoteData(loadMe, data); - _this.saveEmoteData(loadMe, parsedEmoteData); - _this.injectEmoteData(loadMe, parsedEmoteData); - }); - } - } - - - } - } - - if(arg == "start-bd") { - _this.getUtils().updateLoading("Starting Up", 100, 100); - _this.getUtils().execJs('var mainCore; var startBda = function() { mainCore = new Core(); mainCore.init(); }; startBda();'); - - //Remove loading node - setTimeout(function() { - _this.getUtils().execJs('$("#bd-status").parent().parent().hide();'); - }, 2000); - } -}; - -BetterDiscord.prototype.parseEmoteData = function(loadMe, emoteData) { - - _this.getUtils().log("Parsing: " + loadMe.resource); - - var returnData; - - switch(loadMe.specialparser) { - - case 0: //Twitch Global Emotes - returnData = emoteData.replace(/\$/g, "\\$").replace(/'/g, "\\'").replace(/"/g, "\\\""); - break; - case 1: //Twitch Subscriber Emotes - returnData = {}; - emoteData = JSON.parse(emoteData); - var channels = emoteData["channels"]; - for(var channel in channels) { - var emotes = channels[channel]["emotes"]; - for(var i = 0 ; i < emotes.length ; i++) { - var code = emotes[i]["code"]; - var id = emotes[i]["image_id"]; - returnData[code] = id; - } - } - - returnData = JSON.stringify(returnData); - break; - case 2: //FFZ Emotes - returnData = emoteData; - break; - case 3: //BTTV Emotes - returnData = {}; - emoteData = JSON.parse(emoteData); - - for(var emote in emoteData.emotes) { - emote = emoteData.emotes[emote]; - var url = emote.url; - var code = emote.regex; - - returnData[code] = url; - } - - returnData = JSON.stringify(returnData); - break; - case 4: - returnData = emoteData; - break; - - } - - return returnData; -}; - -BetterDiscord.prototype.saveEmoteData = function(loadMe, emoteData) { - - _fs.writeFileSync(loadMe.localpath, emoteData, loadMe.encoding); - -}; - -BetterDiscord.prototype.injectEmoteData = function(loadMe, emoteData) { - - if(loadMe.parse) { - _this.getUtils().execJs('var ' + loadMe.variable + ' = JSON.parse(\'' + emoteData + '\');'); - } else { - _this.getUtils().execJs('var ' + loadMe.variable + ' = ' + emoteData + ';'); - } - - - - _this.getUtils().sendIcpAsync(loadMe.message); -}; - -exports.BetterDiscord = BetterDiscord;