1// Modified from https://gist.githubusercontent.com/arantius/3123124/raw/grant-none-shim.js
3// %1 - unique script id
5function GM_deleteValue(aKey) {
6 localStorage.removeItem("%1" + aKey);
9function GM_getValue(aKey, aDefault) {
10 var val = localStorage.getItem("%1" + aKey)
11 if (null === val) return aDefault;
15function GM_listValues() {
17 for (var i = 0; i < localStorage.length; i++) {
18 var k = localStorage.key(i);
19 if (k.indexOf("%1") === 0) {
20 values.push(k.replace("%1", ""));
26function GM_setValue(aKey, aVal) {
27 localStorage.setItem("%1" + aKey, aVal);
30// GreaseMonkey 4.0 support
31var asyncCall = (func) => {
32 if (window._falkon_external) {
35 document.addEventListener("_falkon_external_created", func);
39var decode = (val) => {
44 var v = val.substr(1);
46 return Boolean(v == "true" ? true : false);
47 } else if (val[0] == "i") {
49 } else if (val[0] == "s") {
56var encode = (val) => {
57 if (typeof val == "boolean") {
58 return "b" + (val ? "true" : "false");
59 } else if (typeof val == "number") {
60 return "i" + String(val);
61 } else if (typeof val == "string") {
68GM.deleteValue = function(name) {
69 return new Promise((resolve, reject) => {
71 external.extra.greasemonkey.deleteValue("%1", name, (res) => {
82GM.getValue = function(name, value) {
83 return new Promise((resolve) => {
85 external.extra.greasemonkey.getValue("%1", name, encode(value), (res) => {
92GM.setValue = function(name, value) {
93 return new Promise((resolve, reject) => {
95 external.extra.greasemonkey.setValue("%1", name, encode(value), (res) => {
106GM.listValues = function() {
107 return new Promise((resolve) => {
109 external.extra.greasemonkey.listValues("%1", resolve);