'use client';

import { useEffect } from 'react';

const BUILD_TIME = process.env.NEXT_PUBLIC_BUILD_TIME ?? '';
const POLL_INTERVAL = 3 * 60 * 1000; // 3 分钟

/**
 * 部署版本守卫
 *
 * 每 3 分钟向 /api/version 轮询服务器 build 时间戳。
 * 若与当前 bundle 的时间戳不一致，说明有新版本已部署，
 * 立即静默刷新页面，用户无感知。
 *
 * 解决：重新部署后浏览器持有旧 bundle → Next.js Server Action
 * ID 不匹配 → "Application error" 崩溃。
 */
export function DeployGuard() {
  useEffect(() => {
    if (!BUILD_TIME) return;

    const check = async () => {
      try {
        const res = await fetch('/api/version', { cache: 'no-store' });
        if (!res.ok) return;
        const { buildTime } = await res.json();
        if (buildTime && buildTime !== BUILD_TIME) {
          window.location.reload();
        }
      } catch {
        // 网络错误忽略，下次轮询再试
      }
    };

    const timer = setInterval(check, POLL_INTERVAL);
    return () => clearInterval(timer);
  }, []);

  return null;
}
