mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2026-01-31 23:01:07 +03:00
37
SB.js
37
SB.js
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user