aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--import_map.json1
-rw-r--r--package.json1
-rw-r--r--pnpm-lock.yaml8
-rw-r--r--src/lib/storage.ts7
-rw-r--r--src/routes/blog/+layout.svelte6
5 files changed, 20 insertions, 3 deletions
diff --git a/import_map.json b/import_map.json
index 4b3c413..ab4ff7d 100644
--- a/import_map.json
+++ b/import_map.json
@@ -5,6 +5,7 @@
"$lib": "./src/lib",
"$lib/": "./src/lib/",
"@memdmp/keyframegen": "jsr:@memdmp/keyframegen",
+ "@dmpmem/storage": "npm:@dmpmem/storage",
"openpgp": "npm:openpgp",
"mdsvex": "npm:mdsvex"
}
diff --git a/package.json b/package.json
index 3e3e787..2b96c9e 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
},
"license": "AGPL-1.0-only",
"dependencies": {
+ "@dmpmem/storage": "^0.1.0",
"@memdmp/keyframegen": "https://npm.jsr.io/~/11/@jsr/memdmp__keyframegen/0.2.1.tgz",
"mdsvex": "0.12.6",
"openpgp": "6.1.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5f22a7a..1bf99da 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
dependencies:
+ '@dmpmem/storage':
+ specifier: ^0.1.0
+ version: 0.1.0
'@memdmp/keyframegen':
specifier: https://npm.jsr.io/~/11/@jsr/memdmp__keyframegen/0.2.1.tgz
version: '@jsr/memdmp__keyframegen@https://npm.jsr.io/~/11/@jsr/memdmp__keyframegen/0.2.1.tgz'
@@ -64,6 +67,9 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
+ '@dmpmem/storage@0.1.0':
+ resolution: {integrity: sha512-L4JPc/LDxqUtEv4/vTueCYevP6KjzoUWRPekZJykACKsCJwb/Z6QNTvf85xvvlltlWD/IRfFRQe+ASFk1RFgIg==}
+
'@esbuild/aix-ppc64@0.25.1':
resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
engines: {node: '>=18'}
@@ -1074,6 +1080,8 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
+ '@dmpmem/storage@0.1.0': {}
+
'@esbuild/aix-ppc64@0.25.1':
optional: true
diff --git a/src/lib/storage.ts b/src/lib/storage.ts
new file mode 100644
index 0000000..60ecfa3
--- /dev/null
+++ b/src/lib/storage.ts
@@ -0,0 +1,7 @@
+import { StorageManager } from '@dmpmem/storage'
+
+export const localStorage = new StorageManager('local', 'mem.estrogen.zone:');
+export const sessionStorage = new StorageManager('session', 'mem.estrogen.zone:');
+export const memoryStorage = new StorageManager('memory', 'mem.estrogen.zone:');
+
+export const blogStorage = new StorageManager(localStorage, 'blog:');
diff --git a/src/routes/blog/+layout.svelte b/src/routes/blog/+layout.svelte
index 86447b4..61ab5f3 100644
--- a/src/routes/blog/+layout.svelte
+++ b/src/routes/blog/+layout.svelte
@@ -1,4 +1,5 @@
<script lang="ts">
+ import { blogStorage } from '$/lib/storage';
import { page } from '$app/state';
import { onDestroy, onMount, type Snippet } from 'svelte';
@@ -10,10 +11,9 @@
onMount(() => {
const theme =
- page.url.searchParams.get('theme') ??
- localStorage.getItem('mem.estrogen.zone:blog:theme');
+ page.url.searchParams.get('theme') ?? blogStorage.getItem('theme');
if (theme) {
- localStorage.setItem('mem.estrogen.zone:blog:theme', theme);
+ blogStorage.setItem('theme', theme);
document.documentElement.setAttribute('data-blog-theme', theme);
page.url.searchParams.delete('theme');
}