From 186d6c9bc58eb9f6cd23983b552994abfd6e2164 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Mon, 9 Jan 2017 07:42:14 +0200 Subject: [PATCH] Alternate storage lib fix --- lib/BetterDiscord.js | 108 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 9 deletions(-) diff --git a/lib/BetterDiscord.js b/lib/BetterDiscord.js index 0ff0c81..6a1b957 100644 --- a/lib/BetterDiscord.js +++ b/lib/BetterDiscord.js @@ -22,6 +22,53 @@ var _mainWindow; var _cfg = {}; var _extData = {}; +var bdStorage = {}; +var bdPluginStorage = {}; + +bdStorage.defaults = { + data: {} +}; + +bdPluginStorage.defaults = { + data: {} +}; + +function initStorage() { + if(!_fs.existsSync(_cfg.dataPath + "/bdstorage.json")) { + bdStorage.data = bdStorage.defaults.data; + _fs.writeFileSync(_cfg.dataPath + "/bdstorage.json", JSON.stringify(bdStorage, null, 4)); + } else { + bdStorage.data = JSON.parse(_fs.readFileSync(_cfg.dataPath + "/bdStorage.json")); + } + if(!_fs.existsSync(_cfg.dataPath + "/bdPluginStorage.json")) { + bdPluginStorage.data = bdPluginStorage.defaults.data; + _fs.writeFileSync(_cfg.dataPath + "/bdPluginStorage.json", JSON.stringify(bdPluginStorage, null, 4)); + } else { + bdPluginStorage.data = JSON.parse(_fs.readFileSync(_cfg.dataPath + "/bdPluginStorage.json")); + } +}; + + +bdStorage.get = function(i, m, pn) { + if(m) return bdStorage.data[i] || ""; + if(bdPluginStorage.data[pn] === undefined) bdPluginStorage.data[pn] = {}; + return bdPluginStorage.data[pn][i] || ""; +}; + +bdStorage.set = function(i, v, m, pn) { + if(m) { + bdStorage.data[i] = v; + _fs.writeFileSync(_cfg.dataPath + "/bdstorage.json", JSON.stringify(bdStorage.data, null, 4)); + } else { + if(bdPluginStorage.data[pn] === undefined) bdPluginStorage.data[pn] = {}; + bdPluginStorage.data[pn][i] = v; + _fs.writeFileSync(_cfg.dataPath + "/bdPluginStorage.json", JSON.stringify(bdPluginStorage.data, null, 4)); + } + return true; +}; + + + function BetterDiscord(mainWindow) { _mainWindow = mainWindow; _cfg = _config.cfg; @@ -86,6 +133,7 @@ function init() { getUtils().attempt(getHash, 3, 0, "Failed to load hash", initUpdater, function() { exit("Failed to load hash after 3 attempts"); }); + initStorage(); } function getHash(callback) { @@ -94,11 +142,11 @@ function getHash(callback) { _cfg.hash = JSON.parse(data).sha; getUtils().injectVar("_bdhash", _cfg.hash); }catch(err) { - callback(false); + callback(false, err); return; } if(_cfg.hash == undefined) { - callback(false); + callback(false, "_cfg.hash == undefined"); return; } @@ -111,7 +159,7 @@ function getHash(callback) { function initUpdater() { getUtils().log("Getting updater"); getUtils().attempt(getUpdater, 3, 0, "Failed to load updater", waitForDom, function() { - exit("Failed to load updater after 3 attempts"); + exit("Failed to load updater after 3 attempts."); }); } @@ -120,17 +168,22 @@ function getUpdater(callback) { try { _cfg.updater = JSON.parse(data); } catch(err) { - callback(false); + callback(false, err); return; } if(_cfg.updater == undefined) { - callback(false); + callback(false, "_cfg.updater == undefined"); return; } - if(_cfg.updater.LatestVersion == undefined || _cfg.updater.CDN == undefined) { - callback(false); + if(_cfg.updater.LatestVersion == undefined) { + callback(false, "_cfg.updater.LatestVersion == undefined"); + return; + } + + if(_cfg.updater.CDN == undefined) { + callback(false, "_cfg.updater.CDN == undefined"); return; } @@ -170,7 +223,7 @@ function updateExtData() { 'resource': 'Main JS', 'domain': _cfg.updater.CDN, 'url': '//' + _cfg.updater.CDN + '/' + _cfg.repo + '/BetterDiscordApp/' + _cfg.hash + '/js/main.min.js', - 'localurl': _cfg.localServer + '/BetterDiscordApp/js/main.js', + 'localurl': _cfg.localServer + '/BetterDiscordApp/js/main.js?v=1.1', 'message': 'load-emoteData-twitchGlobal', 'cacheable': false, 'variable': null @@ -357,6 +410,7 @@ function load(reload) { } getUtils().log("Hooking ipc async"); _bdIpc.on('asynchronous-message', function(event, arg) { ipcAsyncMessage(event, arg); }); + _bdIpc.on('synchronous-message', function(event, arg) { ipcSyncMessage(event, arg); }); getUtils().log("Hooked ipc async"); } initLoaders(); @@ -511,8 +565,32 @@ function loadApp() { getUtils().injectJavaScriptSync("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", "load-jQueryCookie"); } -function ipcAsyncMessage(event, arg) { +function ipcSyncMessage(event, arg) { + if(typeof(arg) === "object") { + switch(arg.arg) { + case "storage": + if(arg.cmd == "get") { + event.returnValue = bdStorage.get(arg.var, true); + } + if(arg.cmd == "set") { + bdStorage.set(arg.var, arg.data, true); + event.returnValue = "saved"; + } + break; + case "pluginstorage": + if(arg.cmd == "get") { + event.returnValue = bdStorage.get(arg.var, false, arg.pn); + } + if(arg.cmd == "set") { + bdStorage.set(arg.var, arg.data, false, arg.pn); + event.returnValue = "saved"; + } + break; + } + } +} +function ipcAsyncMessage(event, arg) { if(typeof(arg) === "object") { switch(arg.arg) { case "opendir": @@ -530,6 +608,18 @@ function ipcAsyncMessage(event, arg) { } getUtils().openDir(arg.path); break; + case "storage": + if(arg.cmd == "set") { + bdStorage.set(arg.var, arg.data); + break; + } + if(arg.cmd == "get") { + var get = bdStorage.get(arg.var); + console.log(get); + event.sender.send('asynchronous-reply', get); + break; + } + break; } return; }