Skip to content
This repository was archived by the owner on Mar 24, 2026. It is now read-only.

Commit 3257ebe

Browse files
committed
Fixes
1 parent 4730698 commit 3257ebe

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

src/app/meetings/[id]/page.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,13 @@ export default function MeetingDetailPage() {
162162
// Include recordings that have audio media files, whether completed or in_progress
163163
// (in_progress recordings may have snapshot uploads available for playback)
164164
const availableRecordings = recordings
165-
.filter(r => (r.status === "completed" || r.status === "in_progress") && r.media_files?.some(mf => mf.type === "audio"))
165+
.filter(r =>
166+
(r.status === "completed" || r.status === "in_progress") &&
167+
r.media_files?.some(mf => mf.type === "audio") &&
168+
// Exclude recordings that also have video (those are cloud recordings;
169+
// their audio content is the same as the video and is shown there instead)
170+
!r.media_files?.some(mf => mf.type === "video")
171+
)
166172
.sort((a, b) => a.created_at.localeCompare(b.created_at));
167173

168174
return availableRecordings.map(rec => {
@@ -650,9 +656,16 @@ export default function MeetingDetailPage() {
650656
// absolute timestamp so the transcript viewer can match against absolute_start_time.
651657
const playbackAbsoluteTime = useMemo((): string | null => {
652658
if (playbackTime == null || !isPlaybackActive) return null;
653-
// Video mode: currentTime is relative to video recording's createdAt
659+
// Video mode: currentTime is relative to meeting start (same as live audio recording).
660+
// videoRecording.createdAt is the upload time, not the meeting start — use the
661+
// first audio fragment's createdAt, or fall back to the meeting's start_time.
654662
if (videoRecording && !preferAudio) {
655-
const fragStart = new Date(videoRecording.createdAt).getTime();
663+
const base =
664+
recordingFragments[0]?.createdAt ??
665+
currentMeeting?.start_time ??
666+
null;
667+
if (!base) return null;
668+
const fragStart = new Date(base).getTime();
656669
return new Date(fragStart + playbackTime * 1000).toISOString();
657670
}
658671
if (recordingFragments.length === 0) return null;
@@ -672,7 +685,7 @@ export default function MeetingDetailPage() {
672685
remaining -= fragDur;
673686
}
674687
return null;
675-
}, [playbackTime, isPlaybackActive, recordingFragments, videoRecording, preferAudio]);
688+
}, [playbackTime, isPlaybackActive, recordingFragments, videoRecording, preferAudio, currentMeeting]);
676689

677690
if (error) {
678691
return (

0 commit comments

Comments
 (0)