From fe1b78b1759060b53a615a731ee896fa6a05571f Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Thu, 23 Jun 2022 03:44:11 +0200 Subject: [PATCH] add default configuration values --- .../config/default-configuration.config.ts | 6 +++++ .../services/configuration.service.ts | 22 ++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 src/renderer/config/default-configuration.config.ts diff --git a/src/renderer/config/default-configuration.config.ts b/src/renderer/config/default-configuration.config.ts new file mode 100644 index 00000000..390a2d55 --- /dev/null +++ b/src/renderer/config/default-configuration.config.ts @@ -0,0 +1,6 @@ +export const defaultConfiguration: {[key in DefaultConfigKey]: any} = { + "first-color": "#3b82ff", + "second-color": "#ff4444" +} + +export type DefaultConfigKey = "first-color" | "second-color"; \ No newline at end of file diff --git a/src/renderer/services/configuration.service.ts b/src/renderer/services/configuration.service.ts index 0887f99a..1ad5c7c8 100644 --- a/src/renderer/services/configuration.service.ts +++ b/src/renderer/services/configuration.service.ts @@ -1,4 +1,5 @@ import { BehaviorSubject } from "rxjs"; +import { DefaultConfigKey, defaultConfiguration } from "renderer/config/default-configuration.config"; export class ConfigurationService { @@ -9,24 +10,35 @@ export class ConfigurationService { this.subscribers = new Map[]>(); } + private emitChange(key: string){ + if(this.subscribers.has(key)){ + const val = this.get(key); + this.subscribers.get(key).forEach(sub => sub.next(val)); + } + } + public static getInstance(): ConfigurationService{ if(!ConfigurationService.instance){ ConfigurationService.instance = new ConfigurationService(); } return ConfigurationService.instance; } - public get(key: string): Type{ + public get(key: string | DefaultConfigKey): Type{ const t = JSON.parse(window.localStorage.getItem(key)); + if(!t){ return defaultConfiguration[key as DefaultConfigKey]; } 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)); - } + this.emitChange(key); } - public watch(key: string): BehaviorSubject{ + public delete(key: string){ + window.localStorage.setItem(key, null); + this.emitChange(key); + } + + public watch(key: DefaultConfigKey | string): BehaviorSubject{ const newSub = new BehaviorSubject(this.get(key)); if(!this.subscribers.has(key)){ this.subscribers.set(key, []); } this.subscribers.get(key).push(newSub);