mirror of https://github.com/vector-im/riot-web
move Settings watchers over to an ES6 Map
parent
cf384c2a54
commit
cb2ee0451d
|
@ -26,7 +26,7 @@ import { _t } from '../languageHandler';
|
||||||
import dis from '../dispatcher/dispatcher';
|
import dis from '../dispatcher/dispatcher';
|
||||||
import { ISetting, SETTINGS } from "./Settings";
|
import { ISetting, SETTINGS } from "./Settings";
|
||||||
import LocalEchoWrapper from "./handlers/LocalEchoWrapper";
|
import LocalEchoWrapper from "./handlers/LocalEchoWrapper";
|
||||||
import { WatchManager } from "./WatchManager";
|
import { WatchManager, CallbackFn as WatchCallbackFn } from "./WatchManager";
|
||||||
import { SettingLevel } from "./SettingLevel";
|
import { SettingLevel } from "./SettingLevel";
|
||||||
import SettingsHandler from "./handlers/SettingsHandler";
|
import SettingsHandler from "./handlers/SettingsHandler";
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ export default class SettingsStore {
|
||||||
// We also maintain a list of monitors which are special watchers: they cause dispatches
|
// We also maintain a list of monitors which are special watchers: they cause dispatches
|
||||||
// when the setting changes. We track which rooms we're monitoring though to ensure we
|
// when the setting changes. We track which rooms we're monitoring though to ensure we
|
||||||
// don't duplicate updates on the bus.
|
// don't duplicate updates on the bus.
|
||||||
private static watchers = {}; // { callbackRef => { callbackFn } }
|
private static watchers = new Map<string, WatchCallbackFn>();
|
||||||
private static monitors = {}; // { settingName => { roomId => callbackRef } }
|
private static monitors = {}; // { settingName => { roomId => callbackRef } }
|
||||||
|
|
||||||
// Counter used for generation of watcher IDs
|
// Counter used for generation of watcher IDs
|
||||||
|
@ -163,7 +163,7 @@ export default class SettingsStore {
|
||||||
callbackFn(originalSettingName, changedInRoomId, atLevel, newValAtLevel, newValue);
|
callbackFn(originalSettingName, changedInRoomId, atLevel, newValAtLevel, newValue);
|
||||||
};
|
};
|
||||||
|
|
||||||
SettingsStore.watchers[watcherId] = localizedCallback;
|
SettingsStore.watchers.set(watcherId, localizedCallback);
|
||||||
defaultWatchManager.watchSetting(settingName, roomId, localizedCallback);
|
defaultWatchManager.watchSetting(settingName, roomId, localizedCallback);
|
||||||
|
|
||||||
return watcherId;
|
return watcherId;
|
||||||
|
@ -176,13 +176,13 @@ export default class SettingsStore {
|
||||||
* to cancel.
|
* to cancel.
|
||||||
*/
|
*/
|
||||||
public static unwatchSetting(watcherReference: string) {
|
public static unwatchSetting(watcherReference: string) {
|
||||||
if (!SettingsStore.watchers[watcherReference]) {
|
if (!SettingsStore.watchers.has(watcherReference)) {
|
||||||
console.warn(`Ending non-existent watcher ID ${watcherReference}`);
|
console.warn(`Ending non-existent watcher ID ${watcherReference}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultWatchManager.unwatchSetting(SettingsStore.watchers[watcherReference]);
|
defaultWatchManager.unwatchSetting(SettingsStore.watchers.get(watcherReference));
|
||||||
delete SettingsStore.watchers[watcherReference];
|
SettingsStore.watchers.delete(watcherReference);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue