feat: cuesheet sharing

feat: locked presets

refactor: simplify locked param

refactor: create share links
This commit is contained in:
Carlos Valente
2025-07-22 05:45:20 +02:00
committed by Carlos Valente
parent 1695b4dc68
commit 6c6f5c2c0f
62 changed files with 1661 additions and 478 deletions
@@ -104,13 +104,14 @@ type old_URLPreset = {
/**
* migrates a url presets from v3 to v4
* - pathAndParams split into a target and search
*
*/
export function migrateURLPresets(jsonData: object): URLPreset[] | undefined {
if (is.objectWithKeys(jsonData, ['urlPresets']) && is.array(jsonData.urlPresets)) {
const oldURLPresets = structuredClone(jsonData.urlPresets) as old_URLPreset;
const newURLPreset: URLPreset[] = oldURLPresets.map(({ enabled, alias, pathAndParams }) => {
const [target, search] = pathAndParams.split('?');
return { enabled, alias, target, search };
return { enabled, alias, target, search, options: {} } as URLPreset;
});
return newURLPreset;
}
@@ -2,6 +2,7 @@ import {
AutomationSettings,
CustomFields,
EndAction,
OntimeView,
ProjectData,
Rundown,
Settings,
@@ -202,16 +203,18 @@ describe('v3 to v4', () => {
{
enabled: true,
alias: 'clock',
target: 'timer',
target: OntimeView.Timer,
search:
'showLeadingZeros=true&timerType=clock&hideClock=true&hideCards=true&hideProgress=true&hideMessage=true&hideSecondary=true&hideLogo=true',
options: {},
},
{
enabled: true,
alias: 'minimal',
target: 'timer',
target: OntimeView.Timer,
search:
'showLeadingZeros=true&hideClock=true&hideCards=true&hideProgress=true&hideMessage=true&hideSecondary=true&hideLogo=true',
options: {},
},
];
const newUrlPreset = v3.migrateURLPresets(oldDb);
@@ -249,10 +252,10 @@ describe('v3 to v4', () => {
colour: '#E80000',
},
};
const { customFields, translationTable } = v3.migrateCustomFields(oldDb)!;
expect(customFields).toEqual(expectCustomFields);
expect(translationTable).toEqual(
const parsedData = v3.migrateCustomFields(oldDb);
expect(parsedData).not.toBeUndefined();
expect(parsedData?.customFields).toEqual(expectCustomFields);
expect(parsedData?.translationTable).toEqual(
new Map([
['song', 'Song_and_Dance'],
['artist', 'Artist_and_Host'],