diff --git a/frontend/src/components/SCTE35Trigger.tsx b/frontend/src/components/SCTE35Trigger.tsx new file mode 100644 index 0000000..ca5a33f --- /dev/null +++ b/frontend/src/components/SCTE35Trigger.tsx @@ -0,0 +1,49 @@ +import React, { useState } from 'react'; + +interface SCTE35TriggerProps { + onInject: (eventId: number, durationSeconds: number) => Promise; +} + +export function SCTE35Trigger({ onInject }: SCTE35TriggerProps) { + const [duration, setDuration] = useState(30); + const [isInjecting, setIsInjecting] = useState(false); + const [lastInjected, setLastInjected] = useState(null); + + const handleInject = async () => { + setIsInjecting(true); + try { + // Generate event ID from current timestamp (Date.now() & 0xFFFFFFFF ensures 32-bit) + const eventId = Date.now() & 0xFFFFFFFF; + await onInject(eventId, duration); + setLastInjected(new Date().toLocaleTimeString()); + } finally { + setIsInjecting(false); + } + }; + + return ( +
+

SCTE35 Ad Marker

+ +
+ + ) => setDuration(Number(e.target.value))} + className="w-full bg-gray-700 text-white border border-gray-600 rounded px-3 py-2" + /> +
+ + + + {lastInjected && ( +

Last injected: {lastInje \ No newline at end of file