parent
6b817008c3
commit
8011a8fcd0
@ -1,79 +1,80 @@
|
|||||||
var ElmLocalStoragePorts = function() {};
|
const ElmLocalStoragePorts = function () {}
|
||||||
|
const localStorage = window.localStorage
|
||||||
|
|
||||||
ElmLocalStoragePorts.prototype.subscribe =
|
ElmLocalStoragePorts.prototype.subscribe =
|
||||||
function(app, getPortName, setPortName, clearPortName, responsePortName, listKeysPortName) {
|
function (app, getPortName, setPortName, clearPortName, responsePortName, listKeysPortName) {
|
||||||
if (!getPortName) getPortName = "getItem";
|
if (!getPortName) getPortName = 'getItem'
|
||||||
if (!setPortName) setPortName = "setItem";
|
if (!setPortName) setPortName = 'setItem'
|
||||||
if (!clearPortName) clearPortName = "clear";
|
if (!clearPortName) clearPortName = 'clear'
|
||||||
if (!listKeysPortName) listKeysPortName = "listKeys";
|
if (!listKeysPortName) listKeysPortName = 'listKeys'
|
||||||
if (!responsePortName) responsePortName = "response";
|
if (!responsePortName) responsePortName = 'response'
|
||||||
|
|
||||||
if (app.ports[responsePortName]) {
|
if (app.ports[responsePortName]) {
|
||||||
var responsePort = app.ports[responsePortName];
|
const responsePort = app.ports[responsePortName]
|
||||||
|
|
||||||
if (app.ports[getPortName]) {
|
if (app.ports[getPortName]) {
|
||||||
app.ports[getPortName].subscribe(function(key) {
|
app.ports[getPortName].subscribe(function (key) {
|
||||||
var val = null;
|
let val = null
|
||||||
try {
|
try {
|
||||||
val = JSON.parse(localStorage.getItem(key))
|
val = JSON.parse(localStorage.getItem(key))
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
responsePort.send({
|
responsePort.send({
|
||||||
key:key,
|
key,
|
||||||
value:val
|
value: val
|
||||||
})
|
})
|
||||||
});
|
})
|
||||||
} else {
|
} else {
|
||||||
console.warn(getPortName + ": This port is not connected.");
|
console.warn(getPortName + ': This port is not connected.')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app.ports[setPortName]) {
|
if (app.ports[setPortName]) {
|
||||||
app.ports[setPortName].subscribe(function(kv) {
|
app.ports[setPortName].subscribe(function (kv) {
|
||||||
var key = kv[0];
|
const key = kv[0]
|
||||||
var json = kv[1];
|
const json = kv[1]
|
||||||
if (json === null) {
|
if (json === null) {
|
||||||
localStorage.removeItem(key);
|
localStorage.removeItem(key)
|
||||||
} else {
|
|
||||||
localStorage.setItem(key, JSON.stringify(json));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
console.warn(setPortName + ": This port is not connected.");
|
localStorage.setItem(key, JSON.stringify(json))
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.warn(setPortName + ': This port is not connected.')
|
||||||
|
}
|
||||||
|
|
||||||
if (app.ports[clearPortName]) {
|
if (app.ports[clearPortName]) {
|
||||||
app.ports[clearPortName].subscribe(function(prefix) {
|
app.ports[clearPortName].subscribe(function (prefix) {
|
||||||
if (prefix) {
|
if (prefix) {
|
||||||
var cnt = localStorage.length;
|
const cnt = localStorage.length
|
||||||
for (var i = cnt - 1; i >= 0; --i) {
|
for (let i = cnt - 1; i >= 0; --i) {
|
||||||
var key = localStorage.key(i);
|
const key = localStorage.key(i)
|
||||||
if (key && key.startsWith(prefix)) {
|
if (key && key.startsWith(prefix)) {
|
||||||
localStorage.removeItem(key);
|
localStorage.removeItem(key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
localStorage.clear();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
console.warn(clearPortName + ": This port is not connected.");
|
localStorage.clear()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.warn(clearPortName + ': This port is not connected.')
|
||||||
|
}
|
||||||
|
|
||||||
if (app.ports[listKeysPortName]) {
|
if (app.ports[listKeysPortName]) {
|
||||||
app.ports[listKeysPortName].subscribe(function(prefix) {
|
app.ports[listKeysPortName].subscribe(function (prefix) {
|
||||||
var cnt = localStorage.length;
|
const cnt = localStorage.length
|
||||||
var keys = [];
|
const keys = []
|
||||||
for (var i = 0; i < cnt; i++) {
|
for (let i = 0; i < cnt; i++) {
|
||||||
var key = localStorage.key(i);
|
const key = localStorage.key(i)
|
||||||
if (key && key.startsWith(prefix)) {
|
if (key && key.startsWith(prefix)) {
|
||||||
keys.push(key);
|
keys.push(key)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
responsePort.send(keys);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
console.warn(listKeysPortName + ": This port is not connected.");
|
|
||||||
}
|
}
|
||||||
|
responsePort.send(keys)
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
console.warn(responsePortName + ": This port is not connected.");
|
console.warn(listKeysPortName + ': This port is not connected.')
|
||||||
}
|
}
|
||||||
};
|
} else {
|
||||||
|
console.warn(responsePortName + ': This port is not connected.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in new issue