ultrawidify/src/ext/conf/ExtConfPatches.ts

201 lines
7.0 KiB
TypeScript
Raw Normal View History

2019-07-05 23:45:29 +02:00
// 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 VideoAlignmentType from '../../common/enums/VideoAlignmentType.enum';
2021-04-05 03:30:29 +02:00
import BrowserDetect from './BrowserDetect';
2021-10-28 22:53:23 +02:00
import SettingsInterface from '../../common/interfaces/SettingsInterface';
import { _cp } from '../../common/js/utils';
import CropModePersistence from '../../common/enums/CropModePersistence.enum';
import AspectRatioType from '../../common/enums/AspectRatioType.enum';
2019-07-05 23:45:29 +02:00
2019-09-03 00:28:35 +02:00
const ExtensionConfPatch = [
{
2024-12-31 03:36:08 +01:00
forVersion: '6.1.1',
2021-10-28 22:53:23 +02:00
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
2021-11-02 20:52:01 +01:00
// add new commands
userOptions.commands = defaultOptions.commands;
2024-12-31 03:36:08 +01:00
userOptions.actions = defaultOptions.actions;
2021-10-28 22:53:23 +02:00
}
}, {
// NOTE - when releasing shit, ensure ALL alpha migrations are combined together in one function
2024-12-31 03:36:08 +01:00
forVersion: '6.1.2',
updateFn: (userOptions, defaultOptions) => {
userOptions.commands = defaultOptions.commands;
// migrates old settings regarding whether extension is enabled or not
const copyEnabled = (site) => {
userOptions.sites[site].enable = {
fullscreen: userOptions.sites[site].mode,
theater: userOptions.sites[site].mode,
normal: ExtensionMode.Disabled
};
userOptions.sites[site].enableKeyboard = {
fullscreen: userOptions.sites[site].keyboardShortcutsEnabled,
theater: userOptions.sites[site].keyboardShortcutsEnabled,
normal: ExtensionMode.Disabled
};
userOptions.sites[site].enableAard = {
fullscreen: userOptions.sites[site].autoar,
theater: userOptions.sites[site].autoar,
normal: ExtensionMode.Disabled
};
userOptions.sites[site].stretchModePersistence = userOptions.sites[site].cropModePersistence;
// remove old options
delete userOptions.sites[site].mode;
delete userOptions.sites[site].keyboardShortcutsEnabled;
delete userOptions.sites[site].autoar;
}
// globals get carried over before other sites:
copyEnabled('@global');
// we make another guess about a new option we just added
for (const key in userOptions.sites) {
// we already had this
if (key === '@global') {
continue;
}
copyEnabled(key);
userOptions.sites[key].DOMConfig = _cp(defaultOptions.sites[key].DOMConfig)
// convert old site.DOM to site.DOMConfig[]
if (userOptions.sites[key].type === 'user-defined') {
const DOM = userOptions.sites[key].DOM;
if (DOM) {
userOptions.sites[key].DOMConfig['user-defined'] = {
type: 'user-1',
customCss: DOM?.css,
periodicallyRefreshPlayerElement: DOM?.player?.periodicallyRefreshPlayerElement,
elements: !(DOM?.player) ? undefined : {
player: {
manual: DOM?.player?.manual,
querySelectors: DOM?.player?.useRelativeAncestor ? undefined : DOM?.player?.querySelectors,
index: DOM?.player?.useRelativeAncestor ? DOM?.player?.videoAncestor : undefined,
}
}
}
userOptions.sites[key].activeDOMConfig = 'user-1';
// remove old configuration
delete userOptions.sites[key].DOM;
}
}
}
}
}, {
2024-12-31 03:36:08 +01:00
forVersion: '6.0.3',
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
delete (userOptions as any).sites['@global'].persistOption;
delete (userOptions as any).sites['@empty'].persistOption;
userOptions.sites['@global'].persistCSA = CropModePersistence.Disabled;
userOptions.sites['@empty'].persistCSA = CropModePersistence.Disabled;
}
}, {
2024-12-31 03:36:08 +01:00
forVersion: '6.0.4',
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
// deprecated much?
userOptions.actions.push({
name: 'Cycle aspect ratio',
label: 'Cycle',
cmd: [{
action: 'set-ar',
arg: AspectRatioType.Cycle
}]
});
2024-12-31 03:36:08 +01:00
// userOptions.commands.crop.push({
// action: 'set-ar',
// label: 'Cycle',
// comment: 'Cycle through crop options',
// arguments: {
// type: AspectRatioType.Cycle
// },
// shortcut: {
// key: 'c',
// code: 'KeyC',
// ctrlKey: false,
// metaKey: false,
// altKey: false,
// shiftKey: false,
// onKeyUp: true,
// onKeyDown: false,
// }
// });
// userOptions.commands.crop.push({
// action: 'set-ar',
// label: '32:9',
// comment: 'Crop for 32:9 aspect ratio',
// arguments: {
// type: AspectRatioType.Fixed,
// ratio: 3.56
// },
// })
}
2023-04-16 02:16:57 +02:00
}, {
2024-12-31 03:36:08 +01:00
forVersion: '6.1.5',
2023-04-16 02:16:57 +02:00
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
if (!userOptions.sites['@global'].defaults.alignment || !userOptions.sites['@global'].defaults.alignment.x || !userOptions.sites['@global'].defaults.alignment.y) {
userOptions.sites['@global'].defaults.alignment = {
x: VideoAlignmentType.Center,
y: VideoAlignmentType.Center
};
}
userOptions.sites['@empty'].defaults.alignment = {x: VideoAlignmentType.Default, y: VideoAlignmentType.Default};
}
2023-07-15 01:28:20 +02:00
}, {
2024-12-31 03:36:08 +01:00
forVersion: '6.1.1-6',
2023-07-15 01:28:20 +02:00
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
for (const site in userOptions.sites) {
userOptions.sites[site].defaultType = userOptions.sites[site].type as any;
}
userOptions.sites['@global'].defaultType = 'unknown';
userOptions.sites['@empty'].defaultType = 'modified';
}
2024-06-12 01:55:12 +02:00
}, {
2024-12-31 03:36:08 +01:00
forVersion: '6.1.2-0',
2024-06-12 01:55:12 +02:00
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
// remove custom CSS, as it is no longer needed
for (const site in userOptions.sites) {
for (const domOption in userOptions.sites[site].DOMConfig)
userOptions.sites[site].DOMConfig[domOption].customCss;
}
userOptions.arDetect.aardType = 'auto';
2024-06-12 20:29:00 +02:00
userOptions.ui = {
inPlayer: {
enabled: true, // enable by default on new installs
2024-12-17 14:19:30 +01:00
enabledFullscreenOnly: false,
minEnabledWidth: 0.75,
2024-12-28 01:42:13 +01:00
minEnabledHeight: 0.75,
activation: 'player',
2024-12-17 14:19:30 +01:00
popupAlignment: 'left',
triggerZoneDimensions: {
width: 0.5,
height: 0.5,
offsetX: -50,
offsetY: 0,
}
2024-06-12 20:29:00 +02:00
}
},
userOptions.newFeatureTracker['uw6.ui-popup'] = {show: 10};
2024-06-12 01:55:12 +02:00
}
2024-12-31 03:36:08 +01:00
}, {
forVersion: '6.1.9',
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
userOptions.ui = defaultOptions.ui;
userOptions.arDetect = defaultOptions.arDetect;
userOptions.newFeatureTracker = defaultOptions.newFeatureTracker;
}
2019-09-03 00:28:35 +02:00
}
];
2019-07-05 23:45:29 +02:00
2019-11-02 01:05:36 +01:00
2021-10-28 22:53:23 +02:00
export default ExtensionConfPatch;