Spaces:
Runtime error
Runtime error
| // @ts-ignore | |
| import { rgthreeConfig } from "rgthree/config.js"; | |
| import { getObjectValue, setObjectValue } from "rgthree/common/shared_utils.js"; | |
| import { rgthreeApi } from "rgthree/common/rgthree_api.js"; | |
| /** | |
| * A singleton service exported as `SERVICE` to handle configuration routines. | |
| */ | |
| class ConfigService extends EventTarget { | |
| getConfigValue(key: string, def?: any) { | |
| return getObjectValue(rgthreeConfig, key, def); | |
| } | |
| getFeatureValue(key: string, def?: any) { | |
| key = "features." + key.replace(/^features\./, ""); | |
| return getObjectValue(rgthreeConfig, key, def); | |
| } | |
| /** | |
| * Given an object of key:value changes it will send to the server and wait for a successful | |
| * response before setting the values on the local rgthreeConfig. | |
| */ | |
| async setConfigValues(changed: { [key: string]: any }) { | |
| 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; | |
| } | |
| } | |
| /** The ConfigService singleton. */ | |
| export const SERVICE = new ConfigService(); | |