ditch the awkward periodic service thing, just use window.postMessage to pass info between file:// origins

This commit is contained in:
xenofem 2024-07-08 04:30:18 -04:00
parent fa5e5a1f6a
commit b66e1c5372
7 changed files with 107 additions and 65 deletions

View 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>