/**
 * 充电桩大盘 - 轮询模块
 */

import { CONFIG } from './config.js';
import { state } from './state.js';

/**
 * 获取当前轮询间隔
 */
export function getPollInterval() {
  const now = new Date();
  const day = now.getDay();
  const hour = now.getHours();

  // 周末（周六6=周日0）：1小时
  if (day === 0 || day === 6) {
    return CONFIG.POLL_INTERVAL_NIGHT;
  }

  // 工作日 09:00-19:00：1分钟，其他时段：1小时
  if (hour >= 9 && hour < 19) {
    return CONFIG.POLL_INTERVAL_WORKDAY_DAY;
  }
  return CONFIG.POLL_INTERVAL_NIGHT;
}

/**
 * 获取轮询模式文本
 */
export function getPollModeText() {
  const now = new Date();
  const day = now.getDay();
  const hour = now.getHours();

  if (day === 0 || day === 6) {
    return '周末模式 · 1小时刷新';
  }
  if (hour >= 9 && hour < 19) {
    return '工作时段 · 1分钟刷新';
  }
  return '非工作时段 · 1小时刷新';
}

/**
 * 启动轮询
 * @param {Function} refreshCallback - 刷新回调函数
 */
export function startPolling(refreshCallback) {
  // 清除旧定时器
  if (state.pollTimer) {
    clearInterval(state.pollTimer);
  }

  // 根据当前时间设置轮询间隔
  const interval = getPollInterval();
  state.currentInterval = interval;
  state.pollTimer = setInterval(() => {
    refreshCallback(true);
    checkPollInterval(refreshCallback);
  }, interval);

  console.log(`[轮询] ${getPollModeText()}`);
}

/**
 * 检查是否需要切换轮询模式
 */
export function checkPollInterval(refreshCallback) {
  const currentInterval = getPollInterval();
  if (state.currentInterval !== currentInterval) {
    console.log(`[轮询] 切换模式: ${getPollModeText()}`);
    startPolling(refreshCallback);
  }
}
