Use & enforce snake_case naming convention on config.json settings (#8062)
* Document and support the established naming convention for config opts This change: * Rename `ConfigOptions` to `IConfigOptions` to match code convention/style, plus move it to a dedicated file * Update comments and surrounding documentation * Define every single documented option (from element-web's config.md) * Enable a linter to enforce the convention * Invent a translation layer for a different change to use * No attempt to fix build errors from doing this (at this stage) * Add demo of lint rule in action * Fix all obvious instances of SdkConfig case conflicts * Fix tests to use SdkConfig directly * Add docs to make unset() calling safer * Appease the linter * Update documentation to match snake_case_config * Fix more instances of square brackets off SdkConfig
This commit is contained in:
parent
09c57b228e
commit
d8a939df5d
56 changed files with 605 additions and 259 deletions
|
@ -19,6 +19,8 @@ import { isNullOrUndefined } from "matrix-js-sdk/src/utils";
|
|||
|
||||
import SettingsHandler from "./SettingsHandler";
|
||||
import SdkConfig from "../../SdkConfig";
|
||||
import { SnakedObject } from "../../utils/SnakedObject";
|
||||
import { IConfigOptions } from "../../IConfigOptions";
|
||||
|
||||
/**
|
||||
* Gets and sets settings at the "config" level. This handler does not make use of the
|
||||
|
@ -30,10 +32,10 @@ export default class ConfigSettingsHandler extends SettingsHandler {
|
|||
}
|
||||
|
||||
public getValue(settingName: string, roomId: string): any {
|
||||
const config = SdkConfig.get() || {};
|
||||
const config = new SnakedObject<IConfigOptions>(SdkConfig.get());
|
||||
|
||||
if (this.featureNames.includes(settingName)) {
|
||||
const labsConfig = config["features"] || {};
|
||||
const labsConfig = config.get("features") || {};
|
||||
const val = labsConfig[settingName];
|
||||
if (isNullOrUndefined(val)) return null; // no definition at this level
|
||||
if (val === true || val === false) return val; // new style: mapped as a boolean
|
||||
|
@ -45,10 +47,10 @@ export default class ConfigSettingsHandler extends SettingsHandler {
|
|||
|
||||
// Special case themes
|
||||
if (settingName === "theme") {
|
||||
return config["default_theme"];
|
||||
return config.get("default_theme");
|
||||
}
|
||||
|
||||
const settingsConfig = config["settingDefaults"];
|
||||
const settingsConfig = config.get("setting_defaults");
|
||||
if (!settingsConfig || isNullOrUndefined(settingsConfig[settingName])) return null;
|
||||
return settingsConfig[settingName];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue