import Hls from 'hls.js';
let hlsInstance: Hls | null = null;

export const initHls = (monitorVideoUrl, monitorVideoRef) => {
  const url = monitorVideoUrl.value;
  const video = monitorVideoRef.value;
  if (!url || !video) return;

  // 销毁已有实例
  if (hlsInstance) {
    try {
      hlsInstance.destroy();
    } catch (e) {
      // ignore
    }
    hlsInstance = null;
  }

  if (Hls.isSupported()) {
    const hls = new Hls();
    hls.loadSource(url);
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED, () => {
      // 自动播放（若浏览器允许）
      try {
        video.play().catch(() => {});
      } catch (e) {}
    });
    hlsInstance = hls;
  } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
    // Safari/原生支持 HLS
    video.src = url;
    video.addEventListener('loadedmetadata', () => {
      try {
        video.play().catch(() => {});
      } catch (e) {}
    });
  } else {
    //proxy?.$modal.msgWarning('当前浏览器不支持 HLS 播放');
    ElMessage.error('当前浏览器不支持 HLS 播放');
  }
};

export const destroyHls = (monitorVideoRef) => {
  try {
    if (hlsInstance) {
      hlsInstance.destroy();
      hlsInstance = null;
    }
  } catch (e) {}
  const video = monitorVideoRef.value;
  if (video) {
    // 清理原生 src，避免残留
    try {
      video.pause();
      video.removeAttribute('src');
      // 对某些浏览器，需要调用 load() 来重置 media element
      if (typeof video.load === 'function') video.load();
    } catch (e) {}
  }
};

export default { initHls, destroyHls };
