streamdeck-typescript
Version:
This library will help you build elgato stream deck plugins in typescript
93 lines • 3.08 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SettingsManager = void 0;
class SettingsManager {
constructor(_handler) {
this._handler = _handler;
this._settings = new Map();
this._globalSettings = {};
this._autoSave = true;
this._autoDebounce = true;
this.contextSettingsTimeoutIds = {};
}
disableAutoSave() {
this._autoSave = false;
}
disableAutoDebounce() {
this._autoDebounce = false;
}
getGlobalSettings() {
return this._globalSettings;
}
setGlobalSettings(settings, ms = 0) {
this._globalSettings = settings;
if (this._autoSave)
this.saveGlobalSettings(ms);
}
setGlobalSettingsAttributes(attributes, ms = 0) {
this.setGlobalSettings(Object.assign(Object.assign({}, this.getGlobalSettings()), attributes));
}
getContextSettings(context) {
return this._settings.get(context);
}
getAllContextSettings() {
return this._settings;
}
setContextSettings(context, settings, ms = 0) {
this._settings.set(context, settings);
if (this._autoSave)
this.saveContextSettings(context, ms);
}
setContextSettingsAttributes(context, attributes, ms = 0) {
const oldSettings = this.getContextSettings(context);
if (oldSettings)
this.setContextSettings(context, Object.assign(Object.assign({}, oldSettings), attributes), ms);
else
this.setContextSettings(context, Object.assign({}, attributes), ms);
}
saveGlobalSettings(ms) {
const fn = () => {
this._handler.setGlobalSettings(this._globalSettings);
};
if (this._autoDebounce) {
this.debounceGlobalSettingsCall(fn, ms);
}
else {
fn();
}
}
saveContextSettings(context, ms) {
const fn = () => {
if (context === 'ALL') {
for (let [context, setting] of this._settings) {
this._handler.setSettings(setting, context);
}
}
else if (this._settings.get(context)) {
this._handler.setSettings(this._settings.get(context), context);
}
};
if (this._autoDebounce) {
this.debounceContextSettingsCall(context, fn, ms);
}
else {
fn();
}
}
cacheGlobalSettings(settings) {
this._globalSettings = settings;
}
cacheContextSettings(context, settings) {
this._settings.set(context, settings);
}
debounceGlobalSettingsCall(fn, ms) {
clearTimeout(this.globalSettingsTimeoutId);
this.globalSettingsTimeoutId = setTimeout(fn, ms);
}
debounceContextSettingsCall(context, fn, ms) {
clearTimeout(this.contextSettingsTimeoutIds[context]);
this.contextSettingsTimeoutIds[context] = setTimeout(fn, ms);
}
}
exports.SettingsManager = SettingsManager;
//# sourceMappingURL=settings.manager.js.map