let localVersion = '2.2.2608181';
/**
 * 版本检查脚本 (web 端)
 *  - 此脚本在index.html中自动注入，无需手动引入。(需要 hbcli-builder 包支持，否则需要手动引入)
 *  - 用每次更新后，触发版本检查，提示户刷新，减少出现加载白屏现象
 * 1. 获取本地版本号
 * 2. 获取服务器最新版本号
 * 3. 比对版本号
 * 4. 显示更新提示弹窗
 * 5. 刷新页面
 */
let storageVersion = '';
// 版本检查函数
(function checkVersionUpdate() {
    storageVersion = localStorage.getItem('app_version') || '';
    // console.log('[版本检查] 初始化版本检查模块，本地版本号:', storageVersion);
    // 获取 API 基础地址
    const getBaseUrl = () => {
        // 尝试从 window 对象获取 siteroot (需要 siteinfo.js 文件支持)
        if (window.__SITEINFO__ && window.__SITEINFO__.siteroot) {
            // console.log('[版本检查] 从 window.__SITEINFO__.siteroot 获取基础地址:', window.__SITEINFO__.siteroot);
            return window.__SITEINFO__.siteroot;
        }
        // 如果不存在，使用当前域名
        const origin =  window.location.origin;
        // console.log('[版本检查] 使用当前域名作为基础地址:', origin);
        return origin;
    };

    // 构建 API 请求 URL
    const buildApiUrl = () => {
        // console.log('[版本检查] 开始构建 API URL');
        const baseUrl = getBaseUrl();
        // 从 localStorage 获取必要的参数
        const uniacid = localStorage.getItem('uniacid') || '1';
        // console.log('[版本检查] 获取参数 - uniacid:', uniacid);
        // 构建完整的 API URL（参考 util.js 中的格式）
        const apiPath = `api/app/newVersionNumber?i=${uniacid}&platform=H5`;
        const fullUrl = `${baseUrl}/${apiPath}`;
        // console.log('[版本检查] 构建完成的 API URL:', fullUrl);
        return fullUrl;
    };

    // 显示更新提示弹窗
    const showUpdateDialog = (latestVersion) => {
        // console.log('[版本检查] 显示版本更新提示弹窗');
        // 创建弹窗遮罩层
        const overlay = document.createElement('div');
        overlay.style.cssText = `
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 99999999;
            display: flex;
            justify-content: center;
            align-items: center;
        `;

        // 创建弹窗内容
        const dialog = document.createElement('div');
        dialog.style.cssText = `
            background-color: #fff;
            border-radius: 8px;
            padding: 24px;
            max-width: 80%;
            min-width: 280px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        `;

        // 弹窗标题
        const title = document.createElement('div');
        title.textContent = '版本更新提示';
        title.style.cssText = `
            font-size: 18px;
            font-weight: bold;
            margin-bottom: 16px;
            color: #333;
        `;

        // 弹窗内容
        const content = document.createElement('div');
        content.textContent = '检测到新版本，请刷新页面以获取最新功能';
        content.style.cssText = `
            font-size: 14px;
            color: #666;
            margin-bottom: 24px;
            line-height: 1.5;
        `;

        // 按钮容器
        const buttonContainer = document.createElement('div');
        buttonContainer.style.cssText = `
            display: flex;
            justify-content: flex-end;
            gap: 12px;
        `;

        // 取消按钮
        // const cancelBtn = document.createElement('button');
        // cancelBtn.textContent = '稍后';
        // cancelBtn.style.cssText = `
        //     padding: 8px 16px;
        //     border: 1px solid #ddd;
        //     background-color: #fff;
        //     color: #333;
        //     border-radius: 4px;
        //     cursor: pointer;
        //     font-size: 14px;
        // `;
        // cancelBtn.onmouseover = () => {
        //     cancelBtn.style.backgroundColor = '#f5f5f5';
        // };
        // cancelBtn.onmouseout = () => {
        //     cancelBtn.style.backgroundColor = '#fff';
        // };
        // cancelBtn.onclick = () => {
        //     console.log('[版本检查] 用户点击"稍后"按钮，关闭弹窗');
        //     document.body.removeChild(overlay);
        // };

        // 刷新按钮
        const refreshBtn = document.createElement('button');
        refreshBtn.textContent = '立即刷新';
        refreshBtn.style.cssText = `
            padding: 8px 16px;
            border: none;
            background-color: #ff5555;
            color: #fff;
            border-radius: 4px;
            cursor: pointer;
            font-size: 14px;
        `;
        refreshBtn.onmouseover = () => {
            refreshBtn.style.backgroundColor = '#ff4444';
        };
        refreshBtn.onmouseout = () => {
            refreshBtn.style.backgroundColor = '#ff5555';
        };
        refreshBtn.onclick = () => {
            // console.log('[版本检查] 用户点击"立即刷新"按钮，开始刷新页面');
            localStorage.setItem('app_version', latestVersion);
            setTimeout(() => {
                window.location.reload();
            }, 100);
        };

        // 组装弹窗
        // buttonContainer.appendChild(cancelBtn);
        buttonContainer.appendChild(refreshBtn);
        dialog.appendChild(title);
        dialog.appendChild(content);
        dialog.appendChild(buttonContainer);
        overlay.appendChild(dialog);
        document.body.appendChild(overlay);
        // console.log('[版本检查] 版本更新弹窗已添加到页面');
    };

    // 请求接口获取最新版本号
    const fetchLatestVersion = async () => {
        try {
            // console.log('[版本检查] 开始请求最新版本号');
            const apiUrl = buildApiUrl();
            // console.log('[版本检查] 发送请求到:', apiUrl);
            
            const response = await fetch(apiUrl, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json',
                },
                cache: 'no-cache'
            });

            // console.log('[版本检查] 收到响应，状态码:', response.status, '状态文本:', response.statusText);

            if (!response.ok) {
                throw new Error(`请求失败，状态码: ${response.status}`);
            }

            const result = await response.json();
            // console.log('[版本检查] 响应数据:', result);
            
            if (result.code === 1 && result.data && result.data.version_name) {
                const latestVersion = result.data.version_name;
                // console.log('[版本检查] 服务器最新版本号:', latestVersion, '本地版本号:', storageVersion);
                if(!storageVersion){
                    localStorage.setItem('app_version', latestVersion);
                    console.log('本地没有，无需检查');
                    return
                }
                // 比对版本号
                if (latestVersion !== storageVersion) {
                    console.log('[版本检查] 版本不一致，需要更新');
                    // 版本不一致，显示弹窗提示
                    showUpdateDialog(latestVersion);

                } else {
                    localStorage.setItem('app_version', latestVersion);
                    console.log('[版本检查] 版本一致，无需更新');
                }
            } else {
                // console.warn('[版本检查] 响应数据格式不正确或缺少版本信息:', result);
            }
        } catch (error) {
            // console.error('[版本检查] 版本检查失败:', error);
            // console.error('[版本检查] 错误详情:', {
            //     message: error.message,
            //     stack: error.stack
            // });
            // 请求失败时不显示弹窗，避免影响用户体验
        }
    };

    // 页面加载完成后延迟执行版本检查（避免影响页面初始加载）
    const initVersionCheck = () => {
        // console.log('[版本检查] 初始化版本检查，当前页面状态:', document.readyState);
        // 延迟 2 秒执行，确保页面已经加载完成
        // console.log('[版本检查] 将在 2 秒后执行版本检查');
        setTimeout(() => {
            // console.log('[版本检查] 延迟时间到，开始执行版本检查');
            fetchLatestVersion();
        }, 2000);
    };

    if (document.readyState === 'loading') {
        // console.log('[版本检查] DOM 正在加载，等待 DOMContentLoaded 事件');
        document.addEventListener('DOMContentLoaded', () => {
            // console.log('[版本检查] DOMContentLoaded 事件触发');
            initVersionCheck();
        });
    } else {
        // 如果 DOM 已经加载完成，直接执行
        // console.log('[版本检查] DOM 已加载完成，直接执行版本检查');
        initVersionCheck();
    }
})();