import { toast } from 'react-toastify';
import LocalDataService from './LocalDataService';
class ApiService {
  constructor() {
    this.apiBase = 'https://ts-api.fyshark.com/api'; // 服务器地址
    // 全局引用，用于存储userProfileRef
    this.userProfileRef = null;
  }

  // 设置userProfileRef的方法
  setUserProfileRef(ref) {
    this.userProfileRef = ref;
  }

  // 通用的请求方法
  async request (url, method, data) {
    const requestOptions = {
      method: method,
      headers: {
        'Content-Type': 'application/json',
        'accept': 'application/json'
      },
      body: JSON.stringify(data)
    };

    try {
      const response = await fetch(url, requestOptions);
      const responseData = await response.json();
      if (!response.ok) {
        throw { status: response.status, data: JSON.stringify(responseData) };
      }
      return responseData; // 返回解析后的JSON对象
    } catch (error) {
      // 检查是否是500错误（登录态失效）
      if (error && error.status === 500 && error.data.indexOf('token') != -1) {
        // 清除本地登录信息
        LocalDataService.set_user_data(null);
         
        
        // 显示错误提示
        toast.error('登录已过期，请重新登录');
      } else {
        // 其他错误，如果不是获取命令列表的请求，则显示错误提示
        
        toast.error(`请求错误：${error.data || JSON.stringify(error)}`);
        
      }
      
      throw error; // 将错误抛出，使得调用者能够处理它
    }
  }

  // 视频下载
  down_load_video (token, url) {
    return this.request(`${this.apiBase}/down_load_video`, 'POST', { token, url });
  }



}

export default ApiService;
