import { computed } from "vue";

/**
 * 播放音频
 */
export function usePlayAudio() {
  let audio: HTMLAudioElement | null = new Audio();
  // 播放结束后自动清理
  // 先定义cleanup，再绑定事件（避免作用域问题）
  let cleanup: any;
  cleanup = () => {
    // 1. 先移除所有事件监听器，切断循环触发链路
    audio!.removeEventListener("ended", cleanup);
    audio!.removeEventListener("error", cleanup);
    // 2. 停止播放（而非清空src），避免触发新error
    audio!.pause();
    // 可选：解除引用，帮助GC（若后续无其他引用）
    audio = null;
    console.log("音频资源已清理");
  };

  audio.addEventListener("ended", cleanup);

  // 播放错误时也清理
  audio.addEventListener("error", cleanup);

  const playAudio = (url: string) => {
    audio!.src = url
    audio!.play().catch((error) => {
      console.error("播放失败:", error);
      cleanup();
    });
  };

  return {
    playAudio
  }
}
