1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
 * 任务计时Hook
 * 用于实时计算和更新任务进行时间
 */
 
import { useState, useEffect, useRef } from 'react';
import { calculateDuration, formatMinutes } from '../utils/timeFormatter';
 
/**
 * 任务计时Hook
 * @param {number|string} startTime - 开始时间戳(毫秒)
 * @param {boolean} isFallback - 是否为降级模式
 * @returns {Object} { duration, formattedTime, isFallback }
 */
export const useTaskTimer = (startTime, isFallback = false) => {
  const [duration, setDuration] = useState(0);
  const timerRef = useRef(null);
  
  // 初始化duration
  useEffect(() => {
    if (startTime) {
      const initialDuration = calculateDuration(startTime);
      setDuration(initialDuration);
    }
  }, [startTime]);
  
  // 启动定时器
  useEffect(() => {
    // 清理之前的定时器
    if (timerRef.current) {
      clearInterval(timerRef.current);
    }
    
    // 只有当startTime存在时才启动定时器
    if (startTime) {
      timerRef.current = setInterval(() => {
        setDuration(prev => prev + 10); // 每10秒增加10秒
      }, 10000); // 10秒间隔
    }
    
    // 组件卸载时清理定时器
    return () => {
      if (timerRef.current) {
        clearInterval(timerRef.current);
        timerRef.current = null;
      }
    };
  }, [startTime]);
  
  // 格式化时间为显示文本
  const formattedTime = formatMinutes(duration);
  
  return {
    duration,           // 持续时间(秒)
    formattedTime,      // 格式化后的时间("XX分钟")
    isFallback          // 是否为降级模式
  };
};