import { rgthreeConfig } from "../../../rgthree/config.js"; import { getObjectValue, setObjectValue } from "../../../rgthree/common/shared_utils.js"; import { rgthreeApi } from "../../../rgthree/common/rgthree_api.js"; class ConfigService extends EventTarget { getConfigValue(key, def) { return getObjectValue(rgthreeConfig, key, def); } getFeatureValue(key, def) { key = "features." + key.replace(/^features\./, ""); return getObjectValue(rgthreeConfig, key, def); } async setConfigValues(changed) { const body = new FormData(); body.append("json", JSON.stringify(changed)); const response = await rgthreeApi.fetchJson("/config", { method: "POST", body }); if (response.status === "ok") { for (const [key, value] of Object.entries(changed)) { setObjectValue(rgthreeConfig, key, value); this.dispatchEvent(new CustomEvent("config-change", { detail: { key, value } })); } } else { return false; } return true; } } export const SERVICE = new ConfigService();