Refactor: require trigger in all events objects (#1636)

* reqire trigger in all events

* use structuredClone when cloning an event
This commit is contained in:
Alex Christoffer Rasmussen
2025-06-12 09:54:57 +02:00
committed by GitHub
parent 02c30c9681
commit 2a5b053d97
7 changed files with 31 additions and 5 deletions
@@ -28,6 +28,7 @@ describe('cloneEvent()', () => {
delay: 0,
dayOffset: 0,
gap: 0,
triggers: [],
custom: {
lighting: '3',
} as EntryCustomFields,
@@ -36,6 +37,7 @@ describe('cloneEvent()', () => {
const cloned = cloneEvent(original);
expect(cloned).not.toBe(original);
expect(cloned.custom).not.toBe(original.custom);
expect(cloned.triggers).not.toBe(original.triggers);
expect(cloned).toMatchObject({
type: SupportedEntry.Event,
@@ -59,6 +61,8 @@ describe('cloneEvent()', () => {
gap: 0,
timeWarning: original.timeWarning,
timeDanger: original.timeDanger,
triggers: original.triggers,
custom: original.custom,
});
});
});
+2 -1
View File
@@ -30,6 +30,7 @@ export const cloneEvent = (event: OntimeEvent): ClonedEvent => {
gap: 0,
timeWarning: event.timeWarning,
timeDanger: event.timeDanger,
custom: { ...event.custom },
triggers: structuredClone(event.triggers),
custom: structuredClone(event.custom),
};
};
@@ -14,12 +14,12 @@ import style from './EventEditorTriggers.module.scss';
interface EventEditorTriggersProps {
eventId: string;
triggers?: Trigger[];
triggers: Trigger[];
}
export default function EventEditorTriggers(props: EventEditorTriggersProps) {
const { triggers, eventId } = props;
const showTriggers = triggers !== undefined && triggers.length > 0;
const showTriggers = triggers.length > 0;
return (
<>
+15 -1
View File
@@ -81,6 +81,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Sekret',
Artist: 'Ronela Hajati',
@@ -110,6 +111,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Eat Your Salad',
Artist: 'Citi Zeni',
@@ -139,6 +141,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Sentimentai',
Artist: 'Monika Liu',
@@ -168,6 +171,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Boys Do Cry',
Artist: 'Marius Bear',
@@ -197,10 +201,11 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Disko',
Artist: 'LPS',
}
},
},
/// <----- BLOCK
'01e85': {
@@ -243,6 +248,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Stefania',
Artist: 'Kalush Orchestra',
@@ -272,6 +278,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Intention',
Artist: 'Intelligent Music Project',
@@ -301,6 +308,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'De Diepte',
Artist: 'S10',
@@ -330,6 +338,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Trenuletul',
Artist: 'Zdob si Zdub',
@@ -359,6 +368,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Saudade Saudade',
Artist: 'Maro',
@@ -405,6 +415,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Guilty Pleasure',
Artist: 'Mia Dimsic',
@@ -434,6 +445,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'The Show',
Artist: 'Reddi',
@@ -463,6 +475,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Halo',
Artist: 'LUM!X & Pia Maria',
@@ -492,6 +505,7 @@ export const demoDb: DatabaseModel = {
gap: 0,
timeWarning: 500000,
timeDanger: 100000,
triggers: [],
custom: {
Song: 'Die Together',
Artist: 'Amanda Tenfjord',
@@ -25,6 +25,7 @@ export const event: Omit<OntimeEvent, 'id' | 'cue'> = {
colour: '',
timeWarning: 120000,
timeDanger: 60000,
triggers: [],
custom: {},
// !==== RUNTIME METADATA ====! //
parent: null,
@@ -44,6 +44,7 @@ describe('cellRequestFromEvent()', () => {
id: '1358',
timeWarning: 0,
timeDanger: 0,
triggers: [],
custom: {},
};
const metadata = {
@@ -93,6 +94,7 @@ describe('cellRequestFromEvent()', () => {
id: '1358',
timeWarning: 0,
timeDanger: 0,
triggers: [],
custom: {},
};
const metadata = {
@@ -144,6 +146,7 @@ describe('cellRequestFromEvent()', () => {
id: '1358',
timeWarning: 0,
timeDanger: 0,
triggers: [],
custom: {},
};
const metadata = {
@@ -194,6 +197,7 @@ describe('cellRequestFromEvent()', () => {
id: '1358',
timeWarning: 0,
timeDanger: 0,
triggers: [],
custom: {},
};
const metadata = {
@@ -230,6 +234,7 @@ describe('cellRequestFromEvent()', () => {
id: '1358',
timeWarning: 0,
timeDanger: 0,
triggers: [],
custom: {},
};
const metadata = {
@@ -267,6 +272,7 @@ describe('cellRequestFromEvent()', () => {
id: '1358',
timeWarning: 0,
timeDanger: 0,
triggers: [],
custom: {},
};
const metadata = {
@@ -54,7 +54,7 @@ export type OntimeEvent = OntimeBaseEvent & {
timeWarning: number;
timeDanger: number;
custom: EntryCustomFields;
triggers?: Trigger[];
triggers: Trigger[];
parent: EntryId | null;
// !==== RUNTIME METADATA ====! //
revision: number;