import Hls from 'hls.js' import { useEffect, useRef } from 'react' import { getAccessToken } from '@/shared/api/client' import { cn } from '@/shared/lib/cn' /** * Мини-плеер HLS для админки: плейлист и сегменты лежат под admin-роутами (JWT), поэтому запросы * идут через hls.js с Bearer-заголовком. Нативный путь (Safari) — только там, где hls.js не нужен. */ export function HlsVideo({ src, className }: { src: string; className?: string }) { const videoRef = useRef(null) useEffect(() => { const video = videoRef.current if (!video) return let hls: Hls | null = null if (Hls.isSupported()) { hls = new Hls({ xhrSetup: (xhr) => { const token = getAccessToken() if (token) xhr.setRequestHeader('Authorization', `Bearer ${token}`) }, }) hls.loadSource(src) hls.attachMedia(video) } else if (video.canPlayType('application/vnd.apple.mpegurl')) { video.src = src } return () => { hls?.destroy() } }, [src]) return ( ) }