import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
import { addDemo, listDemo } from '@/api/video';
import Hls from 'hls.js';

export const useVideosStore = defineStore('videos', () => {
  // --- State (状态) ---
  // 相当于 Vuex 中的 state，用 ref 或 reactive 定义
  const hisUrl = ref();

  // --- Getters (计算属性) ---
  // 相当于 Vuex 中的 getters，直接用 computed 定义

  // --- Actions (动作) ---
  // 相当于 Vuex 中的 actions/mutations，直接写同步或异步函数
  async function getVideos(deviceId?: string | number) {
    try {
      const response = await listDemo(deviceId);
      console.log('获取视频:', response);
      hisUrl.value = response.data;
    } catch (error) {
      console.error('获取视频失败', error);
    }
  }

  async function stopVideos(query: any) {
    try {
      const response = await addDemo(query);
      console.log('停止视频:', response);
    } catch (error) {
      console.error('停止视频失败', error);
    }
  }

  // ⚠️ 核心点：必须把需要暴露出去的变量和方法 return 出去！
  return {
    hisUrl,
    getVideos,
    stopVideos
  };
});
