ditch the awkward periodic service thing, just use window.postMessage to pass info between file:// origins
This commit is contained in:
parent
fa5e5a1f6a
commit
b66e1c5372
7 changed files with 107 additions and 65 deletions
35
dlibrary/templates/store.html
Normal file
35
dlibrary/templates/store.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{% from 'utils.html' import root with context -%}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="manifest" href="{{ root() }}/static/manifest.json" crossorigin="use-credentials">
|
||||
<script type="text/javascript">
|
||||
const TOKEN = "{{ token }}";
|
||||
|
||||
window.addEventListener("message", (event) => {
|
||||
if (event.data.token !== TOKEN) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.data.operation) {
|
||||
case 'set':
|
||||
localStorage.setItem(event.data.key, event.data.value);
|
||||
break;
|
||||
case 'get':
|
||||
event.source.postMessage({
|
||||
token: TOKEN,
|
||||
key: event.data.key,
|
||||
value: localStorage.getItem(event.data.key),
|
||||
}, "*");
|
||||
break;
|
||||
case 'remove':
|
||||
localStorage.removeItem(event.data.key);
|
||||
break;
|
||||
case 'getAll':
|
||||
event.source.postMessage({ token: TOKEN, store: {...localStorage} }, "*");
|
||||
break;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue