From 9d063b9f25c52dd34e3bafc147044affed2151d0 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Thu, 16 Jun 2022 21:53:59 +0200 Subject: [PATCH] create service to manage persistant configuration --- .../services/configuration.service.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/renderer/services/configuration.service.ts diff --git a/src/renderer/services/configuration.service.ts b/src/renderer/services/configuration.service.ts new file mode 100644 index 00000000..0887f99a --- /dev/null +++ b/src/renderer/services/configuration.service.ts @@ -0,0 +1,40 @@ +import { BehaviorSubject } from "rxjs"; + +export class ConfigurationService { + + private static instance: ConfigurationService; + private subscribers: Map[]>; + + private constructor(){ + this.subscribers = new Map[]>(); + } + + public static getInstance(): ConfigurationService{ + if(!ConfigurationService.instance){ ConfigurationService.instance = new ConfigurationService(); } + return ConfigurationService.instance; + } + + public get(key: string): Type{ + const t = JSON.parse(window.localStorage.getItem(key)); + return t; + } + + public set(key: string, value: any){ + window.localStorage.setItem(key, JSON.stringify(value)); + if(this.subscribers.has(key)){ + this.subscribers.get(key).forEach(sub => sub.next(value)); + } + } + + public watch(key: string): BehaviorSubject{ + const newSub = new BehaviorSubject(this.get(key)); + if(!this.subscribers.has(key)){ this.subscribers.set(key, []); } + this.subscribers.get(key).push(newSub); + return newSub; + } + + public stopWatch(key: string, obs: BehaviorSubject){ + const subs = this.subscribers.get(key); + subs.splice(subs.indexOf(obs), 1); + }; +} \ No newline at end of file