| | |
| | | |
| | | // 定时轮询通话状态 |
| | | useEffect(() => { |
| | | // 组件挂载时设置为 true |
| | | isMountedRef.current = true; |
| | | |
| | | // 初始加载 |
| | | fetchCallStatus(); |
| | | |
| | | // 设置轮询定时器(10秒间隔) |
| | | const interval = setInterval(fetchCallStatus, POLL_INTERVAL); |
| | | |
| | | // 监听外呼任务更新事件(立即刷新) |
| | | const handleOutboundJobsUpdated = () => { |
| | | console.log('收到外呼任务更新事件,立即刷新'); |
| | | fetchCallStatus(); |
| | | }; |
| | | window.addEventListener('outbound-jobs-updated', handleOutboundJobsUpdated); |
| | | |
| | | // 清理函数 |
| | | return () => { |
| | | clearInterval(interval); |
| | | window.removeEventListener('outbound-jobs-updated', handleOutboundJobsUpdated); |
| | | isMountedRef.current = false; |
| | | }; |
| | | }, [fetchCallStatus]); |
| | |
| | | return true; |
| | | }); |
| | | |
| | | // 如果没有活跃任务且不可见,不渲染任何内容 |
| | | if (activeCalls.length === 0 && !isVisible) { |
| | | return null; |
| | | } |
| | | |
| | | // 如果最小化,显示AI客服图标 |
| | | if (isMinimized) { |
| | | return ( |