2019-07-05 23:45:29 +02:00
|
|
|
// How to use:
|
|
|
|
// version: {ExtensionConf object, but only properties that get overwritten}
|
2021-02-08 23:04:54 +01:00
|
|
|
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';
|
2023-01-07 03:05:17 +01:00
|
|
|
import { _cp } from '../../common/js/utils';
|
2023-01-15 22:11:47 +01:00
|
|
|
import CropModePersistence from '../../common/enums/CropModePersistence.enum';
|
2023-03-30 00:45:34 +02:00
|
|
|
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-06-12 20:29:00 +02:00
|
|
|
forVersion: '6.0.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;
|
2021-10-28 22:53:23 +02:00
|
|
|
}
|
2023-01-07 03:05:17 +01:00
|
|
|
}, {
|
|
|
|
// NOTE - when releasing shit, ensure ALL alpha migrations are combined together in one function
|
2024-06-12 20:29:00 +02:00
|
|
|
forVersion: '6.0.1-2',
|
2023-01-07 03:05:17 +01:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-01-15 22:11:47 +01:00
|
|
|
}, {
|
2024-06-12 20:29:00 +02:00
|
|
|
forVersion: '6.0.1-3',
|
2023-01-15 22:11:47 +01:00
|
|
|
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;
|
|
|
|
}
|
2023-03-30 00:45:34 +02:00
|
|
|
}, {
|
2024-06-12 20:29:00 +02:00
|
|
|
forVersion: '6.0.1-4',
|
2023-03-30 00:45:34 +02:00
|
|
|
updateFn: (userOptions: SettingsInterface, defaultOptions) => {
|
|
|
|
|
|
|
|
// deprecated much?
|
|
|
|
userOptions.actions.push({
|
|
|
|
name: 'Cycle aspect ratio',
|
|
|
|
label: 'Cycle',
|
|
|
|
cmd: [{
|
|
|
|
action: 'set-ar',
|
|
|
|
arg: AspectRatioType.Cycle
|
|
|
|
}]
|
|
|
|
});
|
|
|
|
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,
|
|
|
|
}
|
|
|
|
});
|
2023-03-30 00:49:09 +02:00
|
|
|
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-03-30 00:45:34 +02:00
|
|
|
}
|
2023-04-16 02:16:57 +02:00
|
|
|
}, {
|
2024-06-12 20:29:00 +02:00
|
|
|
forVersion: '6.0.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-06-12 20:29:00 +02:00
|
|
|
forVersion: '6.0.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-17 02:02:49 +01:00
|
|
|
forVersion: '6.0.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;
|
|
|
|
}
|
2024-12-26 14:58:14 +01:00
|
|
|
userOptions.arDetect.aardType = 'auto';
|
2024-06-12 20:29:00 +02:00
|
|
|
userOptions.ui = {
|
|
|
|
inPlayer: {
|
2024-12-17 02:02:49 +01:00
|
|
|
enabled: true, // enable by default on new installs
|
2024-12-17 14:19:30 +01:00
|
|
|
enabledFullscreenOnly: false,
|
2024-12-17 02:02:49 +01:00
|
|
|
minEnabledWidth: 0.75,
|
2024-12-28 01:42:13 +01:00
|
|
|
minEnabledHeight: 0.75,
|
2024-12-17 02:02:49 +01:00
|
|
|
activation: 'player',
|
2024-12-17 14:19:30 +01:00
|
|
|
popupAlignment: 'left',
|
2024-12-17 02:02:49 +01:00
|
|
|
triggerZoneDimensions: {
|
|
|
|
width: 0.5,
|
|
|
|
height: 0.5,
|
|
|
|
offsetX: -50,
|
|
|
|
offsetY: 0,
|
|
|
|
}
|
2024-06-12 20:29:00 +02:00
|
|
|
}
|
2024-12-17 02:02:49 +01:00
|
|
|
},
|
|
|
|
userOptions.newFeatureTracker['uw6.ui-popup'] = {show: 10};
|
2024-06-12 01:55:12 +02:00
|
|
|
}
|
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;
|