Merge pull request #247 from OfficialNoob/patch-6

Save Map content
This commit is contained in:
Ajay Ramachandran
2020-01-19 10:09:28 -05:00
committed by GitHub

37
SB.js
View File

@@ -9,21 +9,28 @@ SB = {
// Function setup // Function setup
// Allows a map to be conveted into json form
// Currently used for local storage
Map.prototype.toJSON = function() { Map.prototype.toJSON = function() {
return Array.from(this.entries()); return Array.from(this.entries());
}; };
// Proxy Map changes to Map in SB.localConfig
// Saves the changes to chrome.storage in json form
class MapIO { class MapIO {
constructor(id) { constructor(id) {
// The name of the item in the array
this.id = id; this.id = id;
// A local copy of the map (SB.config.mapname.map)
this.map = SB.localConfig[this.id]; this.map = SB.localConfig[this.id];
} }
set(key, value) { set(key, value) {
// Proxy to map
this.map.set(key, value); this.map.set(key, value);
// Store updated map locally
SB.config.handler.set(undefined, this.id, encodeStoredItem(this.map)); chrome.storage.sync.set({
[this.id]: encodeStoredItem(this.map)
});
return this.map; return this.map;
} }
@@ -35,23 +42,24 @@ class MapIO {
return this.map.has(key); return this.map.has(key);
} }
deleteProperty(key) {
if (this.map.has(key)) {
this.map.delete(key);
return true;
} else {
return false;
}
}
size() { size() {
return this.map.size; return this.map.size;
} }
delete(key) { delete(key) {
// Proxy to map
this.map.delete(key); this.map.delete(key);
// Store updated map locally
chrome.storage.sync.set({
[this.id]: encodeStoredItem(this.map)
});
}
SB.config.handler.set(undefined, this.id, encodeStoredItem(this.map)); clear() {
this.map.clear();
chrome.storage.sync.set({
[this.id]: encodeStoredItem(this.map)
});
} }
} }
@@ -62,6 +70,7 @@ class MapIO {
* @param {*} data * @param {*} data
*/ */
function encodeStoredItem(data) { function encodeStoredItem(data) {
// if data is Map convert to json for storing
if(!(data instanceof Map)) return data; if(!(data instanceof Map)) return data;
return JSON.stringify(data); return JSON.stringify(data);
} }