Conform more code to strict null checking (#10153)

* Conform more code to strict null checking

* Conform more code to strict null checking

* Iterate

* Iterate
This commit is contained in:
Michael Telatynski 2023-02-15 13:36:22 +00:00 committed by GitHub
parent a4ff959aa1
commit 145a5a8a8d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
89 changed files with 520 additions and 551 deletions

View file

@ -91,7 +91,7 @@ function getLevelOrder(setting: ISetting): SettingLevel[] {
export type CallbackFn = (
settingName: string,
roomId: string,
roomId: string | null,
atLevel: SettingLevel,
newValAtLevel: any,
newVal: any,
@ -133,7 +133,7 @@ export default class SettingsStore {
// when the setting changes. We track which rooms we're monitoring though to ensure we
// don't duplicate updates on the bus.
private static watchers = new Map<string, WatchCallbackFn>();
private static monitors = new Map<string, Map<string, string>>(); // { settingName => { roomId => callbackRef } }
private static monitors = new Map<string, Map<string | null, string>>(); // { settingName => { roomId => callbackRef } }
// Counter used for generation of watcher IDs
private static watcherCount = 1;
@ -205,7 +205,7 @@ export default class SettingsStore {
return;
}
defaultWatchManager.unwatchSetting(SettingsStore.watchers.get(watcherReference));
defaultWatchManager.unwatchSetting(SettingsStore.watchers.get(watcherReference)!);
SettingsStore.watchers.delete(watcherReference);
}
@ -223,7 +223,7 @@ export default class SettingsStore {
if (!this.monitors.has(settingName)) this.monitors.set(settingName, new Map());
const registerWatcher = (): void => {
this.monitors.get(settingName).set(
this.monitors.get(settingName)!.set(
roomId,
SettingsStore.watchSetting(
settingName,
@ -242,7 +242,7 @@ export default class SettingsStore {
);
};
const rooms = Array.from(this.monitors.get(settingName).keys());
const rooms = Array.from(this.monitors.get(settingName)!.keys());
const hasRoom = rooms.find((r) => r === roomId || r === null);
if (!hasRoom) {
registerWatcher();
@ -250,9 +250,9 @@ export default class SettingsStore {
if (roomId === null) {
// Unregister all existing watchers and register the new one
rooms.forEach((roomId) => {
SettingsStore.unwatchSetting(this.monitors.get(settingName).get(roomId));
SettingsStore.unwatchSetting(this.monitors.get(settingName)!.get(roomId));
});
this.monitors.get(settingName).clear();
this.monitors.get(settingName)!.clear();
registerWatcher();
} // else a watcher is already registered for the room, so don't bother registering it again
}
@ -265,7 +265,7 @@ export default class SettingsStore {
* The level to get the display name for; Defaults to 'default'.
* @return {String} The display name for the setting, or null if not found.
*/
public static getDisplayName(settingName: string, atLevel = SettingLevel.DEFAULT): string {
public static getDisplayName(settingName: string, atLevel = SettingLevel.DEFAULT): string | null {
if (!SETTINGS[settingName] || !SETTINGS[settingName].displayName) return null;
let displayName = SETTINGS[settingName].displayName;
@ -296,7 +296,7 @@ export default class SettingsStore {
*/
public static isFeature(settingName: string): boolean {
if (!SETTINGS[settingName]) return false;
return SETTINGS[settingName].isFeature;
return !!SETTINGS[settingName].isFeature;
}
/**
@ -319,7 +319,7 @@ export default class SettingsStore {
}
}
public static getLabGroup(settingName: string): LabGroup {
public static getLabGroup(settingName: string): LabGroup | undefined {
if (SettingsStore.isFeature(settingName)) {
return (<IFeature>SETTINGS[settingName]).labsGroup;
}
@ -333,7 +333,7 @@ export default class SettingsStore {
*/
public static isEnabled(settingName: string): boolean {
if (!SETTINGS[settingName]) return false;
return SETTINGS[settingName].controller ? !SETTINGS[settingName].controller.settingDisabled : true;
return !SETTINGS[settingName].controller?.settingDisabled ?? true;
}
/**
@ -559,7 +559,7 @@ export default class SettingsStore {
throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
}
return level === SettingLevel.DEFAULT || setting.supportedLevels.includes(level);
return level === SettingLevel.DEFAULT || !!setting.supportedLevels?.includes(level);
}
/**
@ -568,7 +568,7 @@ export default class SettingsStore {
* @param {string} settingName The setting name.
* @return {SettingLevel}
*/
public static firstSupportedLevel(settingName: string): SettingLevel {
public static firstSupportedLevel(settingName: string): SettingLevel | null {
// Verify that the setting is actually a setting
const setting = SETTINGS[settingName];
if (!setting) {
@ -723,10 +723,10 @@ export default class SettingsStore {
logger.log(`--- END DEBUG`);
}
private static getHandler(settingName: string, level: SettingLevel): SettingsHandler {
private static getHandler(settingName: string, level: SettingLevel): SettingsHandler | null {
const handlers = SettingsStore.getHandlers(settingName);
if (!handlers[level]) return null;
return handlers[level];
return handlers[level]!;
}
private static getHandlers(settingName: string): HandlerMap {