From 2627204112f0a102353daa807100bd30e3533711 Mon Sep 17 00:00:00 2001 From: sethburkart123 Date: Fri, 1 Nov 2024 16:31:23 +1100 Subject: [PATCH] fix: standalone not correctly being set --- src/svelte-interface/components/Switch.svelte | 3 +- src/svelte-interface/index.ts | 18 ++++++++ src/svelte-interface/pages/settings.svelte | 9 ++-- .../utils/standalone.svelte.ts | 42 ++++++++++++++----- 4 files changed, 53 insertions(+), 19 deletions(-) diff --git a/src/svelte-interface/components/Switch.svelte b/src/svelte-interface/components/Switch.svelte index a053fbb0..645c63ff 100644 --- a/src/svelte-interface/components/Switch.svelte +++ b/src/svelte-interface/components/Switch.svelte @@ -1,10 +1,9 @@ diff --git a/src/svelte-interface/utils/standalone.svelte.ts b/src/svelte-interface/utils/standalone.svelte.ts index 163bb8d7..b5274a7e 100644 --- a/src/svelte-interface/utils/standalone.svelte.ts +++ b/src/svelte-interface/utils/standalone.svelte.ts @@ -1,16 +1,36 @@ -export function createStandalone() { - let standalone = $state(false); +import type { Subscriber, Unsubscriber } from "svelte/store"; - function setStandalone(value: boolean) { - standalone = value; +export class Standalone { + private static instance: Standalone; + private _standalone = $state(false); + private subscribers = new Set>(); + + private constructor() {} + + public static getInstance(): Standalone { + if (!Standalone.instance) { + Standalone.instance = new Standalone(); + } + return Standalone.instance; } - return { - get standalone() { - return standalone; - }, - setStandalone - }; + public setStandalone(value: boolean) { + this._standalone = value; + this.subscribers.forEach(subscriber => subscriber(value)); + } + + public get standalone() { + return this._standalone; + } + + public subscribe(run: Subscriber): Unsubscriber { + this.subscribers.add(run); + run(this._standalone); + + return () => { + this.subscribers.delete(run); + }; + } } -export const standalone = createStandalone(); \ No newline at end of file +export const standalone = Standalone.getInstance(); \ No newline at end of file