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:
Travis Ralston 2022-03-18 10:12:36 -06:00 committed by GitHub
parent 09c57b228e
commit d8a939df5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 605 additions and 259 deletions

View file

@ -14,23 +14,37 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import { ConfigOptions } from "../SdkConfig";
import { logger } from "matrix-js-sdk/src/logger";
export function getHomePageUrl(appConfig: ConfigOptions): string | null {
const pagesConfig = appConfig.embeddedPages;
let pageUrl = pagesConfig?.homeUrl;
import { IConfigOptions } from "../IConfigOptions";
import { SnakedObject } from "./SnakedObject";
export function getHomePageUrl(appConfig: IConfigOptions): string | null {
const config = new SnakedObject(appConfig);
const pagesConfig = config.get("embedded_pages");
let pageUrl = pagesConfig ? (new SnakedObject(pagesConfig).get("home_url")) : null;
if (!pageUrl) {
// This is a deprecated config option for the home page
// (despite the name, given we also now have a welcome
// page, which is not the same).
pageUrl = appConfig.welcomePageUrl;
pageUrl = (<any>appConfig).welcomePageUrl;
if (pageUrl) {
logger.warn(
"You are using a deprecated config option: `welcomePageUrl`. Please use " +
"`embedded_pages.home_url` instead, per https://github.com/vector-im/element-web/issues/21428",
);
}
}
return pageUrl;
}
export function shouldUseLoginForWelcome(appConfig: ConfigOptions): boolean {
const pagesConfig = appConfig.embeddedPages;
return pagesConfig?.loginForWelcome === true;
export function shouldUseLoginForWelcome(appConfig: IConfigOptions): boolean {
const config = new SnakedObject(appConfig);
const pagesConfig = config.get("embedded_pages");
return pagesConfig
? ((new SnakedObject(pagesConfig).get("login_for_welcome")) === true)
: false;
}