diff --git a/src/enums/pref-keys.ts b/src/enums/pref-keys.ts index 54872ea6..db37f739 100755 --- a/src/enums/pref-keys.ts +++ b/src/enums/pref-keys.ts @@ -219,10 +219,10 @@ export type StreamPrefTypeMap = { export type AllPrefs = GlobalPref | StreamPref; export const ALL_PREFS: { - global: GlobalPref[], - stream: StreamPref[], + global: Set, + stream: Set, } = { - global: [ + global: new Set([ GlobalPref.AUDIO_MIC_ON_PLAYING, GlobalPref.AUDIO_VOLUME_CONTROL_ENABLED, GlobalPref.BLOCK_FEATURES, @@ -272,8 +272,8 @@ export const ALL_PREFS: { GlobalPref.SCRIPT_LOCALE, GlobalPref.USER_AGENT_PROFILE, - ], - stream: [ + ]), + stream: new Set([ StreamPref.AUDIO_VOLUME, StreamPref.CONTROLLER_POLLING_RATE, StreamPref.CONTROLLER_SETTINGS, @@ -306,7 +306,7 @@ export const ALL_PREFS: { StreamPref.VIDEO_RATIO, StreamPref.VIDEO_SATURATION, StreamPref.VIDEO_SHARPNESS, - ], + ]), } as const; export type AnySettingsStorage = BaseSettingsStorage | BaseSettingsStorage; diff --git a/src/utils/pref-utils.ts b/src/utils/pref-utils.ts index 3a614cc2..82c0aed4 100644 --- a/src/utils/pref-utils.ts +++ b/src/utils/pref-utils.ts @@ -49,11 +49,11 @@ export const setGlobalPref = globalSettingsStorage.setSetting.bind(globalSetting export function isGlobalPref(prefKey: AnyPref): prefKey is GlobalPref { - return ALL_PREFS.global.includes(prefKey as GlobalPref); + return ALL_PREFS.global.has(prefKey as GlobalPref); } export function isStreamPref(prefKey: AnyPref): prefKey is StreamPref { - return ALL_PREFS.stream.includes(prefKey as StreamPref); + return ALL_PREFS.stream.has(prefKey as StreamPref); } export function getPrefInfo(prefKey: AnyPref): PrefInfo { diff --git a/src/utils/settings-storages/base-settings-storage.ts b/src/utils/settings-storages/base-settings-storage.ts index d145070d..398ce272 100755 --- a/src/utils/settings-storages/base-settings-storage.ts +++ b/src/utils/settings-storages/base-settings-storage.ts @@ -147,10 +147,8 @@ export class BaseSettingsStorage { } } else if ('multipleOptions' in def) { if (value.length) { - const validOptions = Object.keys(def.multipleOptions!); - value.forEach((item: any, idx: number) => { - (validOptions.indexOf(item) === -1) && value.splice(idx, 1); - }); + const validOptions = new Set(Object.keys(def.multipleOptions!)); + value = value.filter((item: any) => validOptions.has(item)); } if (!value.length) {