From a314139302b80e7de60333a3a820ef59354d297e Mon Sep 17 00:00:00 2001 From: Official Noob <31563761+OfficialNoob@users.noreply.github.com> Date: Wed, 8 Jan 2020 22:22:18 +0000 Subject: [PATCH] Map storage encoding --- SB.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/SB.js b/SB.js index 95153e7e..9b989e26 100644 --- a/SB.js +++ b/SB.js @@ -1,19 +1,36 @@ SB = {}; +Map.prototype.toJSON = function() { + return Array.from(this.entries()); +}; + +function storeEncode(data) { + if(!(data instanceof Map)) return data; + return JSON.stringify(data); +} + +function strParser(data) { + try { + return new Map(JSON.parse(data)); + } catch(e) { + return data + } +} + function configProxy() { chrome.storage.onChanged.addListener((changes, namespace) => { for (key in changes) { - Reflect.set(SB.localconfig, key, changes[key].newValue); + Reflect.set(SB.localconfig, key, changes[key].newValue); } }); var handler = { set: function(obj, prop, value) { chrome.storage.sync.set({ - [prop]: value + [prop]: storeEncode(value) }); }, get: function(obj, prop) { - return Reflect.get(SB.localconfig, prop); + return strParser(Reflect.get(SB.localconfig, prop)); } }; @@ -42,8 +59,6 @@ async function config() { addDefaults(); SB.config = configProxy(); migrate(); - - } SB.defaults = {