diff --git a/src/lib/stores.js b/src/lib/stores.svelte.js
similarity index 86%
rename from src/lib/stores.js
rename to src/lib/stores.svelte.js
index f32d7bb..a0df23f 100644
--- a/src/lib/stores.js
+++ b/src/lib/stores.svelte.js
@@ -1,18 +1,18 @@
-import { writable, get } from 'svelte/store';
+import { writable } from 'svelte/store';
import { browser } from '$app/environment';
+import { SvelteSet } from 'svelte/reactivity';
export const currentStream = writable({});
export const currentSongIndex = writable(null);
-export const favoritedStreams = writable(
- new Set(JSON.parse((browser && localStorage.getItem('favoritedStreams')) || '[]'))
+export const favoritedStreams = new SvelteSet(
+ JSON.parse((browser && localStorage.getItem('favoritedStreams')) || '[]')
);
-
-if (browser) {
- favoritedStreams.subscribe((val) => {
- localStorage.setItem('favoritedStreams', JSON.stringify(Array.from(val)));
+$effect.root(() => {
+ $effect(() => {
+ localStorage.setItem('favoritedStreams', JSON.stringify(Array.from(favoritedStreams)));
});
-}
+});
export const tagList = [
'acoustic',
diff --git a/src/routes/streams/Sidebar.svelte b/src/routes/streams/Sidebar.svelte
index 0ecf1fd..c15e11b 100644
--- a/src/routes/streams/Sidebar.svelte
+++ b/src/routes/streams/Sidebar.svelte
@@ -1,7 +1,7 @@
@@ -57,7 +56,7 @@
{#each streams as stream}
- {@const favorited = $favoritedStreams.has(stream['id'])}
+ {@const favorited = favoritedStreams.has(stream['id'])}
{@const current = $currentStream['id'] === stream['id']}
-
import Select from 'svelte-select';
- import { tagList } from '$lib/stores.js';
+ import { tagList } from '$lib/stores.svelte.js';
let { checked = $bindable([]), remainingTags = [], listOpen = $bindable() } = $props();
let items = $state(tagList.map((x) => ({ value: x, label: x })));
diff --git a/src/routes/streams/WelcomePage.svelte b/src/routes/streams/WelcomePage.svelte
index 28c388c..bf1af3c 100644
--- a/src/routes/streams/WelcomePage.svelte
+++ b/src/routes/streams/WelcomePage.svelte
@@ -1,5 +1,5 @@
diff --git a/src/routes/streams/[stream_id]/+page.svelte b/src/routes/streams/[stream_id]/+page.svelte
index 77d2b59..f8276bb 100644
--- a/src/routes/streams/[stream_id]/+page.svelte
+++ b/src/routes/streams/[stream_id]/+page.svelte
@@ -5,7 +5,7 @@
import MetadataEditor from './MetadataEditor.svelte';
import Player from './Player.svelte';
import { dev } from '$app/environment';
- import { currentStream, updateCurrentStream } from '$lib/stores.js';
+ import { currentStream, updateCurrentStream } from '$lib/stores.svelte.js';
let { data } = $props();
diff --git a/src/routes/streams/[stream_id]/MetadataEditor.svelte b/src/routes/streams/[stream_id]/MetadataEditor.svelte
index 921214e..4b63d55 100644
--- a/src/routes/streams/[stream_id]/MetadataEditor.svelte
+++ b/src/routes/streams/[stream_id]/MetadataEditor.svelte
@@ -1,6 +1,6 @@