diff --git a/app/(dashboard)/projects/[projectId]/videos/[videoId]/compare/page.tsx b/app/(dashboard)/projects/[projectId]/videos/[videoId]/compare/page.tsx index 1afd506..75ab95e 100644 --- a/app/(dashboard)/projects/[projectId]/videos/[videoId]/compare/page.tsx +++ b/app/(dashboard)/projects/[projectId]/videos/[videoId]/compare/page.tsx @@ -43,6 +43,20 @@ interface Version { _count: { comments: number }; } +interface PlayerAdapter { + playVideo: () => void; + pauseVideo: () => void; + seekTo: (time: number, allowSeekAhead?: boolean) => void; + mute: () => void; + unMute: () => void; + isMuted: () => boolean; + getCurrentTime: () => number; + getDuration: () => number; + getPlayerState: () => number; + setPlaybackRate?: (rate: number) => void; + destroy: () => void; +} + interface Comment { id: string; content: string | null; @@ -96,8 +110,8 @@ export default function CompareVersionsPage() { const [isDragging, setIsDragging] = useState(false); const timelineRef = useRef(null); - // Map of versionId -> YT.Player - const playersRef = useRef>(new Map()); + // Map of versionId -> YT.Player or Custom Adapter + const playersRef = useRef>(new Map()); const rafRef = useRef(null); // Comments state per panel @@ -219,7 +233,7 @@ export default function CompareVersionsPage() { }, [isDragging]); // Register/unregister players - const registerPlayer = useCallback((versionId: string, player: YT.Player) => { + const registerPlayer = useCallback((versionId: string, player: YT.Player | PlayerAdapter) => { playersRef.current.set(versionId, player); }, []); @@ -319,7 +333,7 @@ export default function CompareVersionsPage() { e.preventDefault(); players.forEach((p) => { try { - if (p.isMuted()) { p.unMute(); } else { p.mute(); } + if (p.isMuted?.()) { p.unMute?.(); } else { p.mute?.(); } } catch { /* */ } }); break; @@ -552,6 +566,13 @@ export default function CompareVersionsPage() { onRegister={registerPlayer} onUnregister={unregisterPlayer} /> + ) : version.providerId === 'bunny' ? ( + ) : (