From c33003b3c62ee7aadcdff50ad72df3ea5157e8c6 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 12 May 2022 16:52:08 +0200 Subject: [PATCH] added `withEvent` method --- .../app/src/extensions/settings.extension.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/app/src/extensions/settings.extension.js b/packages/app/src/extensions/settings.extension.js index 97595e5c..ec845ea6 100644 --- a/packages/app/src/extensions/settings.extension.js +++ b/packages/app/src/extensions/settings.extension.js @@ -1,6 +1,7 @@ import { Extension } from "evite" import store from "store" import defaultSettings from "schemas/defaultSettings.json" +import { Observable } from "rxjs" export default class SettingsExtension extends Extension { constructor(app, main) { @@ -52,6 +53,23 @@ export default class SettingsExtension extends Extension { return this.settings[key] } + withEvent = (listenEvent, defaultValue) => { + let value = defaultValue ?? this.settings[key] ?? false + + const observable = new Observable((subscriber) => { + subscriber.next(value) + + window.app.eventBus.on(listenEvent, (to) => { + value = to + subscriber.next(value) + }) + }) + + return observable.subscribe((value) => { + return value + }) + } + window = { "settings": this }