diff --git a/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/Timeline/TrimmControls.tsx b/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/Timeline/TrimmControls.tsx index be836923c..a85cb7f72 100644 --- a/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/Timeline/TrimmControls.tsx +++ b/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/Timeline/TrimmControls.tsx @@ -12,7 +12,7 @@ const TrimmControls = ({ blocked: boolean; }) => { const { startTime, endTime, handleMouseDown } = useTrimmControlsContext(); - const { videoDuration, timelineWidth, pixelsPerSecond } = + const { videoDuration, timelineWidth, pixelsPerSecond, isPreviewMode } = useTimelineContext(); const { calculatePositionOnTimeline } = useTimeline(); @@ -39,7 +39,7 @@ const TrimmControls = ({ : 'rounded-l-xl' } `} style={{ - background: 'rgba(200, 75, 80, 1)', + background: isPreviewMode ? 'rgba(255, 191, 0, 1)' : 'rgba(200, 75, 80, 1)', }} /> @@ -49,7 +49,7 @@ const TrimmControls = ({ export const TrimmOverlay = () => { const { startTime, endTime } = useTrimmControlsContext(); - const { videoDuration, timelineWidth } = useTimelineContext(); + const { videoDuration, timelineWidth, isPreviewMode } = useTimelineContext(); const { calculatePositionOnTimeline } = useTimeline(); const startPosition = calculatePositionOnTimeline( @@ -67,7 +67,7 @@ export const TrimmOverlay = () => {
+

No transcript available

@@ -40,7 +40,7 @@ const Transcripts = ({ } return ( -

+
); diff --git a/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/sidebar/index.tsx b/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/sidebar/index.tsx index 8103ced0c..891d01fc3 100644 --- a/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/sidebar/index.tsx +++ b/packages/app/app/studio/[organization]/(no-side-bar)/clips/[stageId]/sidebar/index.tsx @@ -77,7 +77,7 @@ export default function Sidebar({ - +
Team members @@ -55,31 +55,33 @@ const Settings = async ({
- - - - - Email - Role - Actions - - - - {members?.map(({ _id, email, role }) => ( - - {email} - {role} - - - - + +
+
+ + + Email + Role + Actions - ))} - -
+ + + {members?.map(({ _id, email, role }) => ( + + {email} + {role} + + + + + + ))} + + +
diff --git a/packages/server/src/controllers/index.controller.ts b/packages/server/src/controllers/index.controller.ts index 893b2acf6..c38f5ef17 100644 --- a/packages/server/src/controllers/index.controller.ts +++ b/packages/server/src/controllers/index.controller.ts @@ -182,11 +182,21 @@ export class IndexController extends Controller { break; case LivepeerEvent.streamStarted: + console.log('🎥 Stream started event received:', { + streamId: payload.stream?.id, + status: payload.stream?.status, + isActive: payload.stream?.isActive, + isHealthy: payload.stream?.isHealthy + }); + await this.stageService.findStreamAndUpdate(payload.stream.id); + break; + case LivepeerEvent.streamIdle: - console.log('🎥 Stream event received:', { - event: payload.event, + console.log('🎥 Stream idle event received:', { streamId: payload.stream?.id, status: payload.stream?.status, + isActive: payload.stream?.isActive, + isHealthy: payload.stream?.isHealthy, }); await this.stageService.findStreamAndUpdate(payload.stream.id); break; diff --git a/packages/server/src/services/stage.service.ts b/packages/server/src/services/stage.service.ts index fc919c52b..9853a38da 100644 --- a/packages/server/src/services/stage.service.ts +++ b/packages/server/src/services/stage.service.ts @@ -140,14 +140,17 @@ export default class StageService { const stream = await getStreamInfo(id); let stage = await Stage.findOne({ 'streamSettings.streamId': id }); if (!stage) throw new HttpException(400, 'stage not found'); - // send message to redis - const queue = await stageTranscriptionsQueue(); - await queue.add({ - stageId: stage._id, - }); + + if (!stream.isActive) { + const queue = await stageTranscriptionsQueue(); + await queue.add({ + stageId: stage._id, + }); + } + await stage.updateOne( { - 'stageSettings.transcripts.status': 'in-queue', + 'stageSettings.transcripts.status': !stream.isActive ? 'in-queue' : undefined, 'streamSettings.isActive': stream.isActive, 'streamSettings.isHealthy': stream.isHealthy ?? false, },