Migrate DOMConfig in preparation for new settings page

This commit is contained in:
Tamius Han 2025-12-26 21:39:34 +01:00
parent 2a42c3e715
commit 3dbec85269
9 changed files with 247 additions and 152 deletions

View File

@ -1,5 +1,5 @@
export enum PlayerDetectionMode { export enum PlayerDetectionMode {
Auto = 0, Auto = 0,
AncestorIndex = 1, AncestorIndex = 1,
querySelectors = 2, QuerySelectors = 2,
}; };

View File

@ -1,3 +1,4 @@
import { SiteSupportLevel } from './../enums/SiteSupportLevel.enum';
import { Action } from '../../../node_modules/vuex/types/index' import { Action } from '../../../node_modules/vuex/types/index'
import { AardPollingOptions } from '../../ext/lib/aard/enums/aard-polling-options.enum' import { AardPollingOptions } from '../../ext/lib/aard/enums/aard-polling-options.enum'
import { AardSubtitleCropMode } from '../../ext/lib/aard/enums/aard-subtitle-crop-mode.enum' import { AardSubtitleCropMode } from '../../ext/lib/aard/enums/aard-subtitle-crop-mode.enum'
@ -9,6 +10,7 @@ import ExtensionMode from '../enums/ExtensionMode.enum'
import { SiteSupportLevel } from '../enums/SiteSupportLevel.enum' import { SiteSupportLevel } from '../enums/SiteSupportLevel.enum'
import StretchType from '../enums/StretchType.enum' import StretchType from '../enums/StretchType.enum'
import VideoAlignmentType from '../enums/VideoAlignmentType.enum' import VideoAlignmentType from '../enums/VideoAlignmentType.enum'
import { PlayerDetectionMode } from '../enums/PlayerDetectionMode.enum';
export enum ExtensionEnvironment { export enum ExtensionEnvironment {
Normal = ExtensionMode.All, Normal = ExtensionMode.All,
@ -443,8 +445,8 @@ export interface SiteSettingsInterface {
enableKeyboard: ExtensionMode; enableKeyboard: ExtensionMode;
enableUI: ExtensionMode; enableUI: ExtensionMode;
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy; // presumed to be 'Always' if not defined applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy; // presumed to be 'Use as default' if not defined
overrideWhenEmbedded?: boolean; overrideWhenEmbedded?: EmbeddedContentSettingsOverridePolicy;
autocreated?: boolean; autocreated?: boolean;
@ -484,11 +486,10 @@ export interface PlayerAutoConfigInterface {
} }
export interface SiteDOMSettingsInterface { export interface SiteDOMSettingsInterface {
type: 'official' | 'community' | 'user-defined' | 'modified' | undefined; type: SiteSupportLevel; // 'official' | 'community' | 'user-defined' | 'modified' | undefined;
elements?: { elements?: {
player?: SiteDOMElementSettingsInterface, player?: PlayerDOMSettingsInterface,
video?: SiteDOMElementSettingsInterface, video?: PlayerDOMSettingsInterface,
other?: { [x: number]: SiteDOMElementSettingsInterface }
}; };
customCss?: string; customCss?: string;
periodicallyRefreshPlayerElement?: boolean; periodicallyRefreshPlayerElement?: boolean;
@ -499,12 +500,19 @@ export interface SiteDOMSettingsInterface {
anchorElement?: HTMLElement; anchorElement?: HTMLElement;
} }
export interface PlayerDOMSettingsInterface {
playerDetectionMode: PlayerDetectionMode,
allowAutoFallback: boolean,
ancestorIndex?: number,
querySelectors?: string,
customCSS?: string,
}
export interface SiteDOMElementSettingsInterface { export interface SiteDOMElementSettingsInterface {
manual?: boolean; manual?: boolean;
querySelectors?: string; querySelectors?: string;
index?: number; // previously: useRelativeAncestor + videoAncestor index?: number; // previously: useRelativeAncestor + videoAncestor
mode?: 'index' | 'qs'; mode?: 'index' | 'qs';
nodeCss?: {[x: string]: string};
} }
export default SettingsInterface; export default SettingsInterface;

View File

@ -12,6 +12,7 @@ import { update } from 'lodash';
import EmbeddedContentSettingsOverridePolicy from '../../common/enums/EmbeddedContentSettingsOverridePolicy.enum'; import EmbeddedContentSettingsOverridePolicy from '../../common/enums/EmbeddedContentSettingsOverridePolicy.enum';
import LegacyExtensionMode from '../../common/enums/LegacyExtensionMode.enum'; import LegacyExtensionMode from '../../common/enums/LegacyExtensionMode.enum';
import ExtensionMode from '../../common/enums/ExtensionMode.enum'; import ExtensionMode from '../../common/enums/ExtensionMode.enum';
import { PlayerDetectionMode } from '../../common/enums/PlayerDetectionMode.enum';
const ExtensionConfPatch = Object.freeze([ const ExtensionConfPatch = Object.freeze([
@ -316,6 +317,53 @@ const ExtensionConfPatch = Object.freeze([
userOptions.ui = defaultOptions.ui userOptions.ui = defaultOptions.ui
}; };
} }
}, {
forVersion: '6.3.996',
updateFn: (userOptions: SettingsInterface, defaultOptions: SettingsInterface, logger?) => {
for (const site in userOptions.sites) {
for (const domConf in userOptions.sites.DOMConfig) {
const oldConf = userOptions.sites[site].DOMConfig[domConf] as any;
const newConf: any = {
type: oldConf.type ?? userOptions.sites[site].type,
elements: {}
};
if (oldConf.elements.player) {
newConf.elements['player'] = {
playerDetectionMode: oldConf?.elements?.player?.manual ? (
oldConf?.elements?.player?.querySelectors.trim() ? PlayerDetectionMode.QuerySelectors : PlayerDetectionMode.AncestorIndex
) : PlayerDetectionMode.Auto,
allowAutoFallback: true,
ancestorIndex: oldConf?.elements?.player?.parentIndex,
querySelectors: oldConf?.elements?.player?.querySelectors,
customCSS: oldConf?.elements?.player?.customCss,
}
} else {
newConf.elements['player'] = {
playerDetectionMode: PlayerDetectionMode.Auto,
allowAutoFallback: true,
}
}
if (oldConf.elements.video) {
newConf.elements['video'] = {
type: oldConf.type ?? userOptions.sites[site].type,
elements: {
video: {
playerDetectionMode: oldConf?.elements?.video?.manual ? PlayerDetectionMode.QuerySelectors : PlayerDetectionMode.Auto,
allowAutoFallback: true,
querySelectors: oldConf?.elements?.video?.querySelectors,
customCSS: oldConf?.elements?.video?.customCss,
}
}
}
}
userOptions.sites[site].DOMConfig[domConf] = newConf;
}
}
}
} }
]); ]);

View File

@ -13,6 +13,7 @@ import EmbeddedContentSettingsOverridePolicy from '../../common/enums/EmbeddedCo
import { AardPollingOptions } from '../lib/aard/enums/aard-polling-options.enum'; import { AardPollingOptions } from '../lib/aard/enums/aard-polling-options.enum';
import { AardSubtitleCropMode } from '../lib/aard/enums/aard-subtitle-crop-mode.enum'; import { AardSubtitleCropMode } from '../lib/aard/enums/aard-subtitle-crop-mode.enum';
import { SiteSupportLevel } from '../../common/enums/SiteSupportLevel.enum'; import { SiteSupportLevel } from '../../common/enums/SiteSupportLevel.enum';
import { PlayerDetectionMode } from '../../common/enums/PlayerDetectionMode.enum';
if(Debug.debug) if(Debug.debug)
console.log("Loading: ExtensionConf.js"); console.log("Loading: ExtensionConf.js");
@ -820,26 +821,66 @@ const ExtensionConf: SettingsInterface = {
crop: {type: AspectRatioType.Automatic}, crop: {type: AspectRatioType.Automatic},
stretch: {type: StretchType.NoStretch}, stretch: {type: StretchType.NoStretch},
alignment: {x: VideoAlignmentType.Center, y: VideoAlignmentType.Center}, alignment: {x: VideoAlignmentType.Center, y: VideoAlignmentType.Center},
},
activeDOMConfig: 'blank',
DOMConfig: {
'blank': {
type: SiteSupportLevel.Unknown,
elements: {
player: {
playerDetectionMode: PlayerDetectionMode.Auto,
allowAutoFallback: true,
// ancestorIndex: 1, // we leave those on undefined,
// querySelectors: '',
// customCSS: ''
}
}
}
} }
}, },
"@empty": { // placeholder settings object with fallbacks to @global "@empty": {
defaultType: SiteSupportLevel.Unknown,
enable: ExtensionMode.Default, enable: ExtensionMode.Default,
enableAard: ExtensionMode.Default, enableAard: ExtensionMode.Default,
enableKeyboard: ExtensionMode.Default, enableKeyboard: ExtensionMode.Default,
enableUI: ExtensionMode.Default, enableUI: ExtensionMode.Default,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Default,
overrideWhenEmbedded: EmbeddedContentSettingsOverridePolicy.Default,
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Always,
type: SiteSupportLevel.UserDefined,
defaultType: SiteSupportLevel.UserDefined,
persistCSA: CropModePersistence.Default,
defaults: { defaults: {
crop: null, crop: {type: AspectRatioType.Default},
stretch: {type: StretchType.Default}, stretch: {type: StretchType.Default},
alignment: {x: VideoAlignmentType.Default, y: VideoAlignmentType.Default}, alignment: {x: VideoAlignmentType.Default, y: VideoAlignmentType.Default}
},
persistCSA: CropModePersistence.Default,
activeDOMConfig: 'empty',
DOMConfig: {
'empty': {
type: SiteSupportLevel.UserDefined,
elements: {
player: {
playerDetectionMode: PlayerDetectionMode.Auto,
allowAutoFallback: true,
// ancestorIndex: 1,
// querySelectors: '',
// customCSS: ''
},
video: {
playerDetectionMode: PlayerDetectionMode.Auto,
allowAutoFallback: true,
// ancestorIndex: 1,
// querySelectors: '',
// customCSS: ''
}
},
}
} }
}, },
"www.youtube.com" : { "www.youtube.com": {
enable: ExtensionMode.All, enable: ExtensionMode.All,
enableAard: ExtensionMode.All, enableAard: ExtensionMode.All,
enableKeyboard: ExtensionMode.All, enableKeyboard: ExtensionMode.All,
@ -858,7 +899,8 @@ const ExtensionConf: SettingsInterface = {
type: SiteSupportLevel.OfficialSupport, type: SiteSupportLevel.OfficialSupport,
elements: { elements: {
player: { player: {
manual: true, playerDetectionMode: PlayerDetectionMode.QuerySelectors,
allowAutoFallback: true,
querySelectors: "#movie_player, #player, #c4-player", querySelectors: "#movie_player, #player, #c4-player",
} }
} }
@ -885,7 +927,8 @@ const ExtensionConf: SettingsInterface = {
type: SiteSupportLevel.OfficialSupport, type: SiteSupportLevel.OfficialSupport,
elements: { elements: {
player: { player: {
manual: true, playerDetectionMode: PlayerDetectionMode.QuerySelectors,
allowAutoFallback: true,
querySelectors: "#movie_player, #player, #c4-player", querySelectors: "#movie_player, #player, #c4-player",
} }
} }
@ -901,6 +944,21 @@ const ExtensionConf: SettingsInterface = {
override: false, override: false,
type: SiteSupportLevel.CommunitySupport, type: SiteSupportLevel.CommunitySupport,
defaultType: SiteSupportLevel.CommunitySupport, defaultType: SiteSupportLevel.CommunitySupport,
DOMConfig: {
'community': {
type: SiteSupportLevel.CommunitySupport,
elements: {
player: {
playerDetectionMode: PlayerDetectionMode.Auto,
allowAutoFallback: true,
// ancestorIndex: 1,
// querySelectors: '',
// customCSS: ''
}
}
}
}
}, },
"www.disneyplus.com" : { "www.disneyplus.com" : {
enable: ExtensionMode.Theater, enable: ExtensionMode.Theater,
@ -917,11 +975,13 @@ const ExtensionConf: SettingsInterface = {
type: SiteSupportLevel.OfficialSupport, type: SiteSupportLevel.OfficialSupport,
elements: { elements: {
player: { player: {
manual: true, playerDetectionMode: PlayerDetectionMode.QuerySelectors,
allowAutoFallback: true,
querySelectors: ".btm-media-player", querySelectors: ".btm-media-player",
}, },
video: { video: {
manual: true, playerDetectionMode: PlayerDetectionMode.QuerySelectors,
allowAutoFallback: true,
querySelectors: ".btm-media-client-element" querySelectors: ".btm-media-client-element"
} }
}, },
@ -972,19 +1032,6 @@ const ExtensionConf: SettingsInterface = {
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Never, applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.Never,
type: SiteSupportLevel.OfficialBlacklist, type: SiteSupportLevel.OfficialBlacklist,
defaultType: SiteSupportLevel.OfficialBlacklist, defaultType: SiteSupportLevel.OfficialBlacklist,
activeDOMConfig: 'official',
DOMConfig: {
'official': {
type: SiteSupportLevel.OfficialSupport,
// customCss: 'video {\n width: 100% !important;\n height: 100% !important;\n}',
elements: {
player: {
manual: false,
querySelectors: '.reddit-video-player-root, .media-preview-content'
}
}
}
},
}, },
"imgur.com": { "imgur.com": {
enable: ExtensionMode.Disabled, enable: ExtensionMode.Disabled,
@ -1011,7 +1058,8 @@ const ExtensionConf: SettingsInterface = {
type: SiteSupportLevel.CommunitySupport, type: SiteSupportLevel.CommunitySupport,
elements: { elements: {
player: { player: {
manual: true, playerDetectionMode: PlayerDetectionMode.QuerySelectors,
allowAutoFallback: true,
querySelectors: "#jwplayer-container" querySelectors: "#jwplayer-container"
} }
} }
@ -1027,13 +1075,6 @@ const ExtensionConf: SettingsInterface = {
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.UseAsDefault, applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.UseAsDefault,
type: SiteSupportLevel.CommunitySupport, type: SiteSupportLevel.CommunitySupport,
defaultType: SiteSupportLevel.CommunitySupport, defaultType: SiteSupportLevel.CommunitySupport,
activeDOMConfig: 'community',
DOMConfig: {
'community': {
type: SiteSupportLevel.CommunitySupport,
// customCss: "body {\n background-color: #000;\n}\n\n.application {\n background-color: #000;\n}"
}
}
}, },
"metaivi.com": { "metaivi.com": {
enable: ExtensionMode.Theater, enable: ExtensionMode.Theater,
@ -1043,17 +1084,6 @@ const ExtensionConf: SettingsInterface = {
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.UseAsDefault, applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.UseAsDefault,
type: SiteSupportLevel.CommunitySupport, type: SiteSupportLevel.CommunitySupport,
defaultType: SiteSupportLevel.CommunitySupport, defaultType: SiteSupportLevel.CommunitySupport,
activeDOMConfig: 'community',
DOMConfig: {
'community': {
type: SiteSupportLevel.CommunitySupport,
elements: {
video: {
nodeCss: {'position': 'absolute !important'}
}
}
}
},
}, },
"piped.kavin.rocks": { "piped.kavin.rocks": {
enable: ExtensionMode.Theater, enable: ExtensionMode.Theater,
@ -1064,13 +1094,6 @@ const ExtensionConf: SettingsInterface = {
applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.UseAsDefault, applyToEmbeddedContent: EmbeddedContentSettingsOverridePolicy.UseAsDefault,
type: SiteSupportLevel.CommunitySupport, type: SiteSupportLevel.CommunitySupport,
defaultType: SiteSupportLevel.CommunitySupport, defaultType: SiteSupportLevel.CommunitySupport,
activeDOMConfig: 'community',
DOMConfig: {
'community': {
type: SiteSupportLevel.CommunitySupport,
// customCss: ".shaka-video-container {\n flex-direction: column !important;\n}"
}
}
}, },
} }
} }

View File

@ -39,6 +39,7 @@ export class SiteSettings {
temporaryData: SiteSettingsInterface; temporaryData: SiteSettingsInterface;
sessionData: SiteSettingsInterface; sessionData: SiteSettingsInterface;
readonly defaultSettings: SiteSettingsInterface; readonly defaultSettings: SiteSettingsInterface;
readonly blankSettings: SiteSettingsInterface;
storageChangeSubscriptions: {[x: string]: ((newSiteConf, changes, area) => void)[]} = {}; storageChangeSubscriptions: {[x: string]: ((newSiteConf, changes, area) => void)[]} = {};
@ -50,6 +51,7 @@ export class SiteSettings {
this.settings = settings; this.settings = settings;
this.raw = settings.active.sites[this.site]; this.raw = settings.active.sites[this.site];
this.defaultSettings = settings.active.sites['@global']; this.defaultSettings = settings.active.sites['@global'];
this.blankSettings = settings.active.sites['@empty'];
this.compileSettingsObject(); this.compileSettingsObject();
@ -472,7 +474,7 @@ export class SiteSettings {
// If this function is not being called in response to user actin, // If this function is not being called in response to user actin,
// create fake settings object. // create fake settings object.
if (options.scripted && !this.settings.active.sites[targetSite]) { if (options.scripted && !this.settings.active.sites[targetSite]) {
this.settings.active.sites[targetSite] = _cp(this.settings.active.sites['@global']); this.settings.active.sites[targetSite] = _cp(this.blankSettings);
this.settings.active.sites[targetSite].autocreated = true; this.settings.active.sites[targetSite].autocreated = true;
this.settings.active.sites[targetSite].type = SiteSupportLevel.Unknown; this.settings.active.sites[targetSite].type = SiteSupportLevel.Unknown;
} else { } else {

View File

@ -1,60 +1,68 @@
<template> <template>
<!-- ADVANCED OPTIONS --> <!-- ADVANCED OPTIONS -->
<div v-if="DOMConfigData" class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<div class="flex flex-row gap-2 justify-end"> <div class="flex flex-row gap-2 justify-end">
<button>Load existing config</button> <button>Load existing config</button>
<button>Import from file</button> <button>Import from file</button>
</div> </div>
<div class="field">
<div class="label">Player detection:</div>
<div class="select">
<select v-model="DOMConfigData.elements.player.playerDetectionMode">
<option :value="PlayerDetectionMode.Auto">Automatic</option>
<option :value="PlayerDetectionMode.AncestorIndex">Fixed player container offset</option>
<option :value="PlayerDetectionMode.QuerySelectors">Query selectors</option>
</select>
</div>
</div>
<div class="field"> <template v-if="DOMConfigData" >
<div class="label">Use automatic detection for fallback</div> <div class="field">
<div class="checkbox"> <div class="label">Player detection:</div>
<input type="checkbox" v-model="DOMConfigData.elements.player.allowAutoFallback" /> <div class="select">
<select v-model="DOMConfigData.elements.player.playerDetectionMode">
<option :value="PlayerDetectionMode.Auto">Automatic</option>
<option :value="PlayerDetectionMode.AncestorIndex">Fixed player container offset</option>
<option :value="PlayerDetectionMode.QuerySelectors">Query selectors</option>
</select>
</div>
</div> </div>
</div>
<div class="field"> <div class="field">
<div class="label">Player container offset</div> <div class="label">Use automatic detection for fallback</div>
<div class="input"> <div class="checkbox">
<input v-model="DOMConfigData.elements.player.ancestorIndex" /> <input type="checkbox" v-model="DOMConfigData.elements.player.allowAutoFallback" />
</div>
</div> </div>
<div class="hint">
Defines how far away from video the player container element is. If you don't know what you're doing, start
with 1, save settings, and reload the page. If this doesn't fix your problem, increase the number by 1 and
repeat the procedure. If no value between 1-16 works, the site may require additional CSS in order to work.
</div>
</div>
<div class="field"> <div class="field">
<div class="label">Query selector</div> <div class="label">Player container offset</div>
<div class="input"> <div class="input">
<input v-model="DOMConfigData.elements.player.querySelectors" /> <input v-model="DOMConfigData.elements.player.ancestorIndex" />
</div>
<div class="hint">
Defines how far away from video the player container element is. If you don't know what you're doing, start
with 1, save settings, and reload the page. If this doesn't fix your problem, increase the number by 1 and
repeat the procedure. If no value between 1-16 works, the site may require additional CSS in order to work.
</div>
</div> </div>
<div class="hint">
You should be at least somewhat proficient with CSS in order to use this option. If you need to provide more
than one query selector, use commas to separate them.
</div>
</div>
<div class="field"> <div class="field">
<div class="label">Additional CSS for the page</div> <div class="label">Query selector</div>
<div class="input"> <div class="input">
<textbox v-model="DOMConfigData.customCss" /> <input v-model="DOMConfigData.elements.player.querySelectors" />
</div>
<div class="hint">
You should be at least somewhat proficient with CSS in order to use this option. If you need to provide more
than one query selector, use commas to separate them.
</div>
</div> </div>
<div class="hint">
You should be at least somewhat proficient with CSS in order to use this option. <div class="field">
<div class="label">Additional CSS for the page</div>
<div class="input">
<textarea v-model="DOMConfigData.customCSS" />
</div>
<div class="hint">
You should be at least somewhat proficient with CSS in order to use this option.
</div>
</div> </div>
</div>
</template>
<template v-else>
No DOM config for this site.
</template>
</div> </div>
<div class="w-full flex flex-row gap-2 justify-end"> <div class="w-full flex flex-row gap-2 justify-end">
@ -75,6 +83,7 @@ import { SiteSettings } from '@src/ext/lib/settings/SiteSettings';
import { PlayerDetectionMode } from '@src/common/enums/PlayerDetectionMode.enum'; import { PlayerDetectionMode } from '@src/common/enums/PlayerDetectionMode.enum';
import Popup from '@components/common/Popup.vue'; import Popup from '@components/common/Popup.vue';
import { _cp } from '../../../../../common/js/utils';
export default({ export default({
@ -88,6 +97,7 @@ export default({
], ],
data() { data() {
return { return {
PlayerDetectionMode,
DOMConfigData: undefined as any, DOMConfigData: undefined as any,
selectSnapshotDialog: {visible: false}, selectSnapshotDialog: {visible: false},
} }
@ -104,7 +114,11 @@ export default({
}, },
methods: { methods: {
loadSiteSettings(siteSettings: SiteSettings) { loadSiteSettings(siteSettings: SiteSettings) {
this.DOMConfigData = siteSettings.data.DOMConfig[siteSettings.data.activeDOMConfig]; if (siteSettings.data.DOMConfig) {
this.DOMConfigData = siteSettings.data.DOMConfig[siteSettings.data.activeDOMConfig];
} else {
this.DOMConfigData = _cp(siteSettings.blankSettings.DOMConfig.blank)
}
} }
} }

View File

@ -200,23 +200,23 @@ export default defineComponent({
}, },
async setPlayer(index) { async setPlayer(index) {
// yup. // yup.
this.siteSettings.getDOMConfig('modified', 'original'); // this.siteSettings.getDOMConfig('modified', 'original');
await this.siteSettings.setUpdateFlags(['PlayerData']); // await this.siteSettings.setUpdateFlags(['PlayerData']);
await this.siteSettings.set('DOMConfig.modified.type', 'modified', {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.type', 'modified', {noSave: true});
await this.siteSettings.set('activeDOMConfig', 'modified', {noSave: true}); // await this.siteSettings.set('activeDOMConfig', 'modified', {noSave: true});
// if user agrees with ultrawidify on what element player should be, // // if user agrees with ultrawidify on what element player should be,
// we just unset our settings for this site // // we just unset our settings for this site
if (this.elementStack[index].heuristics?.autoMatch) { // if (this.elementStack[index].heuristics?.autoMatch) {
await this.siteSettings.set('DOMConfig.modified.elements.player.manual', false); // await this.siteSettings.set('DOMConfig.modified.elements.player.manual', false);
this.getPlayerTree(); // this.getPlayerTree();
} else { // } else {
// ensure settings exist: // // ensure settings exist:
await this.siteSettings.set('DOMConfig.modified.elements.player.manual', true, {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.elements.player.manual', true, {noSave: true});
await this.siteSettings.set('DOMConfig.modified.elements.player.mode', 'index', {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.elements.player.mode', 'index', {noSave: true});
await this.siteSettings.set('DOMConfig.modified.elements.player.index', index, true); // await this.siteSettings.set('DOMConfig.modified.elements.player.index', index, true);
this.getPlayerTree(); // this.getPlayerTree();
} // }
}, },
/** /**
* Toggles active CSS for element of certain parent index. * Toggles active CSS for element of certain parent index.

View File

@ -56,23 +56,23 @@ export default({
}, },
async setPlayer(index) { async setPlayer(index) {
// yup. // yup.
this.siteSettings.getDOMConfig('modified', 'original'); // this.siteSettings.getDOMConfig('modified', 'original');
await this.siteSettings.setUpdateFlags(['PlayerData']); // await this.siteSettings.setUpdateFlags(['PlayerData']);
await this.siteSettings.set('DOMConfig.modified.type', 'modified', {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.type', 'modified', {noSave: true});
await this.siteSettings.set('activeDOMConfig', 'modified', {noSave: true}); // await this.siteSettings.set('activeDOMConfig', 'modified', {noSave: true});
// if user agrees with ultrawidify on what element player should be, // // if user agrees with ultrawidify on what element player should be,
// we just unset our settings for this site // // we just unset our settings for this site
if (this.elementStack[index].heuristics?.autoMatch) { // if (this.elementStack[index].heuristics?.autoMatch) {
await this.siteSettings.set('DOMConfig.modified.elements.player.manual', false); // await this.siteSettings.set('DOMConfig.modified.elements.player.manual', false);
this.getPlayerTree(); // this.getPlayerTree();
} else { // } else {
// ensure settings exist: // // ensure settings exist:
await this.siteSettings.set('DOMConfig.modified.elements.player.manual', true, {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.elements.player.manual', true, {noSave: true});
await this.siteSettings.set('DOMConfig.modified.elements.player.mode', 'index', {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.elements.player.mode', 'index', {noSave: true});
await this.siteSettings.set('DOMConfig.modified.elements.player.index', index, true); // await this.siteSettings.set('DOMConfig.modified.elements.player.index', index, true);
this.getPlayerTree(); // this.getPlayerTree();
} // }
}, },
edit() { edit() {

View File

@ -156,23 +156,23 @@ export default({
}, },
async setPlayer(index) { async setPlayer(index) {
// yup. // yup.
this.siteSettings.getDOMConfig('modified', 'original'); // this.siteSettings.getDOMConfig('modified', 'original');
await this.siteSettings.setUpdateFlags(['PlayerData']); // await this.siteSettings.setUpdateFlags(['PlayerData']);
await this.siteSettings.set('DOMConfig.modified.type', 'modified', {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.type', 'modified', {noSave: true});
await this.siteSettings.set('activeDOMConfig', 'modified', {noSave: true}); // await this.siteSettings.set('activeDOMConfig', 'modified', {noSave: true});
// if user agrees with ultrawidify on what element player should be, // // if user agrees with ultrawidify on what element player should be,
// we just unset our settings for this site // // we just unset our settings for this site
if (this.elementStack[index].heuristics?.autoMatch) { // if (this.elementStack[index].heuristics?.autoMatch) {
await this.siteSettings.set('DOMConfig.modified.elements.player.manual', false); // await this.siteSettings.set('DOMConfig.modified.elements.player.manual', false);
this.getPlayerTree(); // this.getPlayerTree();
} else { // } else {
// ensure settings exist: // // ensure settings exist:
await this.siteSettings.set('DOMConfig.modified.elements.player.manual', true, {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.elements.player.manual', true, {noSave: true});
await this.siteSettings.set('DOMConfig.modified.elements.player.mode', 'index', {noSave: true}); // await this.siteSettings.set('DOMConfig.modified.elements.player.mode', 'index', {noSave: true});
await this.siteSettings.set('DOMConfig.modified.elements.player.index', index, true); // await this.siteSettings.set('DOMConfig.modified.elements.player.index', index, true);
this.getPlayerTree(); // this.getPlayerTree();
} // }
}, },
/** /**
* Toggles active CSS for element of certain parent index. * Toggles active CSS for element of certain parent index.