Simplify extensionMode things

This commit is contained in:
Tamius Han 2025-12-10 22:49:59 +01:00
parent 877fc96da1
commit ee32ae93c3
13 changed files with 163 additions and 428 deletions

View File

@ -1,10 +1,9 @@
enum ExtensionMode {
AutoDisabled = -2,
Disabled = -1,
Default = 0,
Whitelist = 1,
Basic = 2,
Enabled = 3,
};
FullScreen = 1,
Theater = 2,
All = 3
}
export default ExtensionMode;

View File

@ -1,4 +1,4 @@
enum ExtensionMode {
enum LegacyExtensionMode {
AutoDisabled = -2,
Disabled = -1,
Default = 0,
@ -7,4 +7,4 @@ enum ExtensionMode {
Enabled = 3,
};
export default ExtensionMode;
export default LegacyExtensionMode;

View File

@ -10,9 +10,9 @@ import StretchType from '../enums/StretchType.enum'
import VideoAlignmentType from '../enums/VideoAlignmentType.enum'
export enum ExtensionEnvironment {
Normal = 'normal',
Theater = 'theater',
Fullscreen = 'fullscreen',
Normal = ExtensionMode.All,
Theater = ExtensionMode.Theater,
Fullscreen = ExtensionMode.FullScreen,
}
export interface DevUiConfig {
@ -48,12 +48,6 @@ interface RestrictionsSettings {
onlyAllowAutodetectionInFullScreen?: boolean; // if enabled, autodetection will only start once in full screen
}
interface ExtensionEnvironmentSettingsInterface {
normal: ExtensionMode,
theater: ExtensionMode,
fullscreen: ExtensionMode,
}
export interface CommandInterface {
action: string,
label: string,
@ -445,10 +439,10 @@ interface SettingsInterface {
}
export interface SiteSettingsInterface {
enable: ExtensionEnvironmentSettingsInterface;
enableAard: ExtensionEnvironmentSettingsInterface;
enableKeyboard: ExtensionEnvironmentSettingsInterface;
enableUI: ExtensionEnvironmentSettingsInterface; // Lies! enableUI doesn't use 'theater' property (but uses the other two)
enable: ExtensionMode;
enableAard: ExtensionMode;
enableKeyboard: ExtensionMode;
enableUI: ExtensionMode;
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy; // presumed to be 'Always' if not defined
overrideWhenEmbedded?: boolean;

View File

@ -1,41 +1,44 @@
// How to use:
// version: {ExtensionConf object, but only properties that get overwritten}
import StretchType from '../../common/enums/StretchType.enum';
import ExtensionMode from '../../common/enums/ExtensionMode.enum';
// import ExtensionMode from '../../common/enums/ExtensionMode.enum';
import VideoAlignmentType from '../../common/enums/VideoAlignmentType.enum';
import BrowserDetect from './BrowserDetect';
import SettingsInterface from '../../common/interfaces/SettingsInterface';
import SettingsInterface, { SiteSettingsInterface } from '../../common/interfaces/SettingsInterface';
import { _cp } from '../../common/js/utils';
import CropModePersistence from '../../common/enums/CropModePersistence.enum';
import AspectRatioType from '../../common/enums/AspectRatioType.enum';
import { update } from 'lodash';
import EmbeddedContentSettingsOverridePolicy from '../../common/enums/EmbeddedContentSettingsOverridePolicy.enum';
import LegacyExtensionMode from '../../common/enums/LegacyExtensionMode.enum';
import ExtensionMode from '../../common/enums/ExtensionMode.enum';
const ExtensionConfPatch = Object.freeze([
{
forVersion: '6.2.4',
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
updateFn: (userOptions: any, defaultOptions) => {
for (const site in userOptions.sites) {
userOptions.sites[site].enableUI = {
fullscreen: ExtensionMode.Default,
theater: ExtensionMode.Default,
normal: ExtensionMode.Default,
(userOptions as any).sites[site].enableUI = {
fullscreen: LegacyExtensionMode.Default,
theater: LegacyExtensionMode.Default,
normal: LegacyExtensionMode.Default,
}
}
userOptions.sites['@global'].enableUI = {
fullscreen: userOptions.ui.inPlayer.enabled ? ExtensionMode.Enabled : ExtensionMode.Disabled,
theater: ExtensionMode.Enabled,
normal: (userOptions.ui.inPlayer.enabled && !userOptions.ui.inPlayer.enabledFullscreenOnly) ? ExtensionMode.Enabled : ExtensionMode.Disabled
fullscreen: userOptions.ui.inPlayer.enabled ? LegacyExtensionMode.Enabled : LegacyExtensionMode.Disabled,
theater: LegacyExtensionMode.Enabled,
normal: (userOptions.ui.inPlayer.enabled && !userOptions.ui.inPlayer.enabledFullscreenOnly) ? LegacyExtensionMode.Enabled : LegacyExtensionMode.Disabled
}
userOptions.sites['@empty'].enableUI = {
fullscreen: ExtensionMode.Default,
theater: ExtensionMode.Default,
normal: ExtensionMode.Default,
fullscreen: LegacyExtensionMode.Default,
theater: LegacyExtensionMode.Default,
normal: LegacyExtensionMode.Default,
}
}
}, {
forVersion: '6.2.6',
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
updateFn: (userOptions: any, defaultOptions) => {
console.log('[ultrawidify] Migrating settings — applying patches for version 6.2.6');
if (!userOptions.commands) {
@ -241,7 +244,7 @@ const ExtensionConfPatch = Object.freeze([
}
}, {
forVersion: '6.3.92',
updateFn: (userOptions: SettingsInterface) => {
updateFn: (userOptions: any) => {
// applyToEmbeddedContent is now an enum, and also no longer optional
for (const site in userOptions.sites) {
if (userOptions.sites[site].applyToEmbeddedContent === undefined) {
@ -275,6 +278,33 @@ const ExtensionConfPatch = Object.freeze([
userOptions.aardLegacy = defaultOptions.aardLegacy;
delete (userOptions as any).arDetect;
}
},
{
forVersion: '6.3.994',
upgradeFn: (userOptions: SettingsInterface, defaultOptions: SettingsInterface) => {
const convertLegacyExtensionMode = (option: {normal: LegacyExtensionMode, theater: LegacyExtensionMode, fullscreen: LegacyExtensionMode}) => {
if (option.normal === LegacyExtensionMode.Enabled) {
return ExtensionMode.All;
}
if (option.theater === LegacyExtensionMode.Enabled) {
return ExtensionMode.Theater;
}
if (option.fullscreen === LegacyExtensionMode.Enabled) {
return ExtensionMode.FullScreen;
}
if (option.fullscreen === LegacyExtensionMode.Disabled) {
return ExtensionMode.Disabled;
}
return ExtensionMode.Default;
}
for (const key in userOptions.sites) {
userOptions.sites[key].enable = convertLegacyExtensionMode(userOptions.sites[key].enable as any);
userOptions.sites[key].enableAard = convertLegacyExtensionMode(userOptions.sites[key].enable as any);
userOptions.sites[key].enableKeyboard = convertLegacyExtensionMode(userOptions.sites[key].enable as any);
userOptions.sites[key].enableUI = convertLegacyExtensionMode(userOptions.sites[key].enable as any);
}
}
}
]);

View File

@ -757,65 +757,6 @@ const ExtensionConf: SettingsInterface = {
arguments: {
arPersistence: CropModePersistence.Default
}
}, {
action: 'set-extension-enabled',
label: 'Enable extension',
arguments: {
mode: ExtensionMode.Enabled,
},
internalOnly: true,
}, {
action: 'set-extension-enabled',
label: 'Whitelist',
arguments: {
mode: ExtensionMode.Whitelist,
},
internalOnly: true,
}, {
action: 'set-extension-enabled',
label: 'Disable',
arguments: {
mode: ExtensionMode.Disabled
},
internalOnly: true,
}, {
action: 'set-extension-enabled',
label: 'Use default option',
arguments: {
mode: ExtensionMode.Default
},
internalOnly: true
}, {
action: 'set-autoar-enabled',
label: 'Enabled',
comment: 'Enable automatic aspect ratio detection if possible',
arguments: {
mode: ExtensionMode.Enabled
},
internalOnly: true
}, {
action: 'set-autoar-enabled',
label: 'Whitelist',
comment: 'Enable automatic aspect ratio detection if possible, but only on whitelisted sites',
arguments: {
mode: ExtensionMode.Whitelist,
},
internalOnly: true,
}, {
action: 'set-autoar-enabled',
label: 'Disable',
comment: 'Disable aspect ratio detection',
arguments: {
mode: ExtensionMode.Disabled
},
internalOnly: true,
}, {
action: 'set-autoar-enabled',
label: 'Use default option',
arguments: {
mode: ExtensionMode.Default
},
internalOnly: true
}]
},
mitigations: {
@ -862,26 +803,11 @@ const ExtensionConf: SettingsInterface = {
// to avoid writing this multiple times. Tags:
// #g — only available in @global
// #s — only available for specific site
enable: { // How should extension work:
fullscreen: ExtensionMode.Disabled, // 'enabled' - work everywhere except blacklist
theater: ExtensionMode.Disabled, //
normal: ExtensionMode.Disabled, // 'disabled' - work nowhere
}, // 'default' - follow global rules (#s)
enableAard: { // Should we try to automatically detect aspect ratio?
fullscreen: ExtensionMode.Disabled, // Options: 'enabled', 'default' (#s), 'disabled'
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled
},
enableUI: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled, // Lies! means 'theater-ish'
normal: ExtensionMode.Disabled // Not actually used.
},
enable: ExtensionMode.Disabled,
enableAard: ExtensionMode.Disabled,
enableKeyboard: ExtensionMode.Disabled,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
defaultType: 'unknown',
@ -894,26 +820,11 @@ const ExtensionConf: SettingsInterface = {
}
},
"@empty": { // placeholder settings object with fallbacks to @global
enable: {
fullscreen: ExtensionMode.Default,
theater: ExtensionMode.Default,
normal: ExtensionMode.Default,
},
enableAard: {
fullscreen: ExtensionMode.Default,
theater: ExtensionMode.Default,
normal: ExtensionMode.Default,
},
enableKeyboard: {
fullscreen: ExtensionMode.Default,
theater: ExtensionMode.Default,
normal: ExtensionMode.Default
},
enableUI: {
fullscreen: ExtensionMode.Default,
theater: ExtensionMode.Default,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Default,
enableAard: ExtensionMode.Default,
enableKeyboard: ExtensionMode.Default,
enableUI: ExtensionMode.Default,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: 'user-defined',
@ -926,26 +837,11 @@ const ExtensionConf: SettingsInterface = {
}
},
"www.youtube.com" : {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.All,
enableAard: ExtensionMode.All,
enableKeyboard: ExtensionMode.All,
enableUI: ExtensionMode.All,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
overrideWhenEmbedded: true,
override: false, // ignore value localStorage in favour of this
@ -967,26 +863,11 @@ const ExtensionConf: SettingsInterface = {
}
},
"www.youtube-nocookie.com": {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.All,
enableAard: ExtensionMode.All,
enableKeyboard: ExtensionMode.All,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
overrideWhenEmbedded: true,
@ -1009,52 +890,21 @@ const ExtensionConf: SettingsInterface = {
}
},
"www.netflix.com" : {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Default,
},
enableAard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Theater,
enableAard: ExtensionMode.Disabled,
enableKeyboard: ExtensionMode.All,
enableUI: ExtensionMode.All,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
override: false,
type: 'community',
defaultType: 'community',
},
"www.disneyplus.com" : {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Default,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Default,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Default
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Default
},
enable: ExtensionMode.Theater,
enableAard: ExtensionMode.Theater,
enableKeyboard: ExtensionMode.All,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: 'community',
defaultType: 'community',
@ -1077,51 +927,21 @@ const ExtensionConf: SettingsInterface = {
}
},
"www.twitch.tv": {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enable: ExtensionMode.All,
enableAard: ExtensionMode.All,
enableKeyboard: ExtensionMode.All,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: 'official',
defaultType: 'official',
},
"old.reddit.com" : {
enable: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableAard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableUI: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Disabled,
enableAard: ExtensionMode.Disabled,
enableKeyboard: ExtensionMode.Disabled,
enableUI: ExtensionMode.Disabled,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Never,
type: 'officially-disabled',
defaultType: 'officially-disabled',
@ -1140,26 +960,11 @@ const ExtensionConf: SettingsInterface = {
},
},
"www.reddit.com" : {
enable: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableAard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableUI: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Disabled,
enableAard: ExtensionMode.Disabled,
enableKeyboard: ExtensionMode.Disabled,
enableUI: ExtensionMode.Disabled,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Never,
type: 'officially-disabled',
defaultType: 'officially-disabled',
@ -1178,51 +983,21 @@ const ExtensionConf: SettingsInterface = {
},
},
"imgur.com": {
enable: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableAard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled,
},
enableUI: {
fullscreen: ExtensionMode.Disabled,
theater: ExtensionMode.Disabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Disabled,
enableAard: ExtensionMode.Disabled,
enableKeyboard: ExtensionMode.Disabled,
enableUI: ExtensionMode.Disabled,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Never,
type: 'officially-disabled',
defaultType: 'officially-disabled',
},
"www.wakanim.tv": {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Enabled
},
enable: ExtensionMode.All,
enableAard: ExtensionMode.All,
enableKeyboard: ExtensionMode.All,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: 'community',
defaultType: 'community',
@ -1240,26 +1015,11 @@ const ExtensionConf: SettingsInterface = {
},
},
"app.plex.tv": {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Theater,
enableAard: ExtensionMode.Theater,
enableKeyboard: ExtensionMode.Theater,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: 'community',
defaultType: 'community',
@ -1272,26 +1032,10 @@ const ExtensionConf: SettingsInterface = {
}
},
"metaivi.com": {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Theater,
enableAard: ExtensionMode.Theater,
enableKeyboard: ExtensionMode.Theater,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: "community",
defaultType: "community",
@ -1308,26 +1052,11 @@ const ExtensionConf: SettingsInterface = {
},
},
"piped.kavin.rocks": {
enable: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled,
},
enableAard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled,
},
enableKeyboard: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enableUI: {
fullscreen: ExtensionMode.Enabled,
theater: ExtensionMode.Enabled,
normal: ExtensionMode.Disabled
},
enable: ExtensionMode.Theater,
enableAard: ExtensionMode.Theater,
enableKeyboard: ExtensionMode.Theater,
enableUI: ExtensionMode.FullScreen,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: "community",
defaultType: "community",

View File

@ -263,7 +263,7 @@ export class Aard {
// console.log('--- video data: ---\n', this.videoData);
return;
}
if (this.siteSettings.data.enableAard[this.videoData.player.environment] === ExtensionMode.Enabled) {
if (this.siteSettings.data.enableAard <= this.videoData.player.environment) {
this.start();
} else {
this.stop();

View File

@ -1,5 +1,4 @@
import AspectRatioType from '@src/common/enums/AspectRatioType.enum';
import ExtensionMode from '@src/common/enums/ExtensionMode.enum';
import { ArVariant } from '@src/common/interfaces/ArInterface';
import { ExtensionEnvironment } from '@src/common/interfaces/SettingsInterface';
import EventBus from '../EventBus';
@ -16,15 +15,10 @@ import { GlDebugCanvas, GlDebugType } from './gl/GlDebugCanvas';
import { AardCanvasStore } from './interfaces/aard-canvas-store.interface';
import { AardDetectionSample, generateSampleArray, resetSamples } from './interfaces/aard-detection-sample.interface';
import { AardStatus, initAardStatus } from './interfaces/aard-status.interface';
import { AardTestResult_SubtitleRegion, AardTestResults, resetSubtitleScanResults } from './interfaces/aard-test-results.interface';
import { AardTimers, initAardTimers } from './interfaces/aard-timers.interface';
import { ComponentLogger } from '../logging/ComponentLogger';
import { AardPollingOptions } from './enums/aard-polling-options.enum';
import { AardSubtitleCropMode } from './enums/aard-subtitle-crop-mode.enum';
import { LetterboxOrientation } from './enums/letterbox-orientation.enum';
import { Edge } from './enums/edge.enum';
import { AardUncertainReason } from './enums/aard-letterbox-uncertain-reason.enum';
import { result } from 'lodash';
import { AardLegacyTestResults, initAardTestResults, resetAardTestResults, resetGuardLine } from './interfaces/aard-legacy-test-results.interface';
@ -439,7 +433,7 @@ export class AardLegacy {
// console.log('--- video data: ---\n', this.videoData);
return;
}
if (this.siteSettings.data.enableAard[this.videoData.player.environment] === ExtensionMode.Enabled) {
if (this.videoData.player.environment <= this.siteSettings.data.enableAard) {
this.start();
} else {
this.stop();

View File

@ -107,8 +107,8 @@ export class KeyboardHandler extends KbmBase {
}
}
setKeyboardLocal(state) {
if (state === ExtensionMode.Enabled) {
setKeyboardLocal(state: ExtensionMode) {
if (state === ExtensionMode.All) {
this.keyboardLocalDisabled = false;
} else if (state === ExtensionMode.Disabled) {
this.keyboardLocalDisabled = true;

View File

@ -1,6 +1,6 @@
import CropModePersistence from '../../../common/enums/CropModePersistence.enum';
import ExtensionMode from '../../../common/enums/ExtensionMode.enum';
import { SettingsReloadComponent, SettingsReloadFlags, SiteSettingsInterface } from '../../../common/interfaces/SettingsInterface';
import { ExtensionEnvironment, SettingsReloadComponent, SettingsReloadFlags, SiteSettingsInterface } from '../../../common/interfaces/SettingsInterface';
import { _cp } from '../../../common/js/utils';
import Settings from './Settings';
import StretchType from '../../../common/enums/StretchType.enum';
@ -216,10 +216,8 @@ export class SiteSettings {
if (!this.data[enableSegment]) {
this.data[enableSegment] = {};
}
for (const environment of ['normal', 'theater', 'fullscreen']) {
if (!this.data[enableSegment][environment] || this.data[enableSegment][environment] === ExtensionMode.Default) {
this.data[enableSegment][environment] = _cp(this.defaultSettings[enableSegment][environment]);
}
if (!this.data[enableSegment] || this.data[enableSegment] === ExtensionMode.Default) {
this.data[enableSegment] = _cp(this.defaultSettings[enableSegment]);
}
}
@ -339,14 +337,14 @@ export class SiteSettings {
}
}
private _getEnvironment(isTheater: boolean, isFullscreen: boolean): 'fullscreen' | 'theater' | 'normal' {
private _getEnvironment(isTheater: boolean, isFullscreen: boolean): ExtensionEnvironment {
if (isFullscreen) {
return 'fullscreen';
return ExtensionEnvironment.Fullscreen;
}
if (isTheater) {
return 'theater';
return ExtensionEnvironment.Theater;
}
return 'normal';
return ExtensionEnvironment.Normal;
}
/**
@ -355,9 +353,9 @@ export class SiteSettings {
* @param isFullscreen
* @returns ExtensionMode
*/
isEnabledForEnvironment(isTheater: boolean, isFullscreen: boolean): ExtensionMode {
isEnabledForEnvironment(isTheater: boolean, isFullscreen: boolean): boolean {
const env = this._getEnvironment(isTheater, isFullscreen);
return this.data.enable[env];
return env <= this.data.enable;
}
/**
@ -366,9 +364,9 @@ export class SiteSettings {
* @param isFullscreen
* @returns
*/
isAardEnabledForEnvironment(isTheater: boolean, isFullscreen: boolean): ExtensionMode {
isAardEnabledForEnvironment(isTheater: boolean, isFullscreen: boolean): boolean {
const env = this._getEnvironment(isTheater, isFullscreen);
return this.data.enableAard[env];
return env <= this.data.enableAard;
}
/**
@ -377,9 +375,9 @@ export class SiteSettings {
* @param isFullscreen
* @returns
*/
isKeyboardEnabledForEnvironment(isTheater: boolean, isFullscreen: boolean): ExtensionMode {
isKeyboardEnabledForEnvironment(isTheater: boolean, isFullscreen: boolean): boolean {
const env = this._getEnvironment(isTheater, isFullscreen);
return this.data.enableKeyboard[env];
return env <= this.data.enableKeyboard;
}
//#endregion

View File

@ -53,9 +53,7 @@ class UI {
return true;
}
return this.siteSettings?.data.enableUI.fullscreen === ExtensionMode.Enabled
|| this.siteSettings?.data.enableUI.theater === ExtensionMode.Enabled
|| this.siteSettings?.data.enableUI.normal === ExtensionMode.Enabled;
return this.siteSettings?.data.enableUI !== ExtensionMode.Disabled;
}
async init() {
@ -342,7 +340,7 @@ class UI {
canShowUI: false,
}
if (this.playerData?.environment && this.siteSettings.data.enableUI[this.playerData?.environment] !== ExtensionMode.Enabled) {
if (this.playerData?.environment && this.playerData?.environment <= this.siteSettings.data.enableUI) {
return result;
}

View File

@ -1,4 +1,3 @@
import ExtensionMode from '../../../common/enums/ExtensionMode.enum';
import EventBus from '../EventBus';
import { SiteSettings } from '../settings/SiteSettings';
@ -19,9 +18,9 @@ export class ExtensionStatus {
return this.fsStatus.fullscreen;
}
private enabled: ExtensionMode;
private aardEnabled: ExtensionMode;
private kbdEnabled: ExtensionMode;
private enabled: boolean;
private aardEnabled: boolean;
private kbdEnabled: boolean;
constructor(siteSettings: SiteSettings, eventBus: EventBus, fsStatus: {fullscreen: boolean}){
this.siteSettings = siteSettings;
@ -33,27 +32,21 @@ export class ExtensionStatus {
const canAard = this.siteSettings.isAardEnabledForEnvironment(this.isTheaterMode, this.isFullScreen);
const canKbd = this.siteSettings.isKeyboardEnabledForEnvironment(this.isTheaterMode, this.isFullScreen);
if (canRun !== this.enabled) {
if (canRun === ExtensionMode.Enabled) {
if (canRun) {
this.eventBus.send('set-extension-active', {});
} else {
this.eventBus.send('set-extension-inactive', {});
}
}
if (canAard !== this.aardEnabled) {
if (canAard === ExtensionMode.Enabled) {
if (canAard) {
this.eventBus.send('set-aard-active', {});
} else {
this.eventBus.send('set-aard-inactive', {});
}
}
if (canKbd !== this.kbdEnabled) {
if (canKbd === ExtensionMode.Enabled) {
if (canKbd) {
this.eventBus.send('set-kbd-active', {});
} else {
this.eventBus.send('set-kbd-inactive', {});
}
}
this.enabled = canRun;
this.aardEnabled = canAard;

View File

@ -478,7 +478,7 @@ class PlayerData {
this.isTooSmall = this.checkIfTooSmall();
}
const canEnable = this.siteSettings.isEnabledForEnvironment(this.isFullscreen, this.isTheaterMode) === ExtensionMode.Enabled;
const canEnable = this.siteSettings.isEnabledForEnvironment(this.isFullscreen, this.isTheaterMode);
if (this.runLevel === RunLevel.Off && canEnable) {
this.eventBus.send('restore-ar', null);

View File

@ -408,7 +408,7 @@ class VideoData {
this.logger.warn('onEnvironmentChanged', 'environment changed from:', this.currentEnvironment, 'to:', this.player.environment);
this.currentEnvironment = this.player.environment;
if (this.siteSettings.data.enable[this.player.environment] === ExtensionMode.Disabled) {
if (this.player.environment <= this.siteSettings.data.enable) {
this.setRunLevel(RunLevel.Off);
} else {
this.restoreAr();
@ -417,7 +417,7 @@ class VideoData {
}
setRunLevel(runLevel: RunLevel, options?: {fromPlayer?: boolean}) {
if (this.player && this.siteSettings.data.enable[this.player.environment] !== ExtensionMode.Enabled) {
if (this.player && this.siteSettings.data.enable >= this.player.environment) {
runLevel = RunLevel.Off;
}