Alternate storage lib fix

This commit is contained in:
Jiiks 2017-01-09 07:42:14 +02:00
parent 6e1816d973
commit 186d6c9bc5
1 changed files with 99 additions and 9 deletions

View File

@ -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;
}