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,
},