// Модуль проверки обновлений
const CURRENT_VERSION = chrome.runtime.getManifest().version;
const VERSION_URL = 'https://ishakeducation.vercel.app/version.json';
const CHECK_INTERVAL = 6 * 60 * 60 * 1000; // 6 часов

window.latestVersionData = null; // глобально для доступа из ui.js

async function checkForUpdates(force = false) {
    try {
        if (!force) {
            const lastClosed = localStorage.getItem('ishakUpdateClosed');
            if (lastClosed) {
                const timeSinceClosed = Date.now() - parseInt(lastClosed, 10);
                if (timeSinceClosed < CHECK_INTERVAL) {
                    console.log('Уведомление скрыто: прошло менее 6 часов');
                    return;
                }
            }
        }

        const response = await fetch(VERSION_URL + '?t=' + Date.now());
        if (!response.ok) throw new Error('Ошибка загрузки');
        const data = await response.json();

        if (compareVersions(data.version, CURRENT_VERSION) > 0) {
            window.latestVersionData = data;
            showUpdateNotification(data);
            // Если меню уже создано, обновляем кнопку в нём
            if (window.updateMenuButton) {
                window.updateMenuButton(data);
            }
        } else {
            window.latestVersionData = null;
            // Если кнопка была, убираем её
            if (window.updateMenuButton) {
                window.updateMenuButton(null);
            }
        }
    } catch (e) {
        console.log('Не удалось проверить обновления:', e);
    }
}

function compareVersions(v1, v2) {
    const parts1 = v1.split('.').map(Number);
    const parts2 = v2.split('.').map(Number);
    for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
        const n1 = parts1[i] || 0;
        const n2 = parts2[i] || 0;
        if (n1 > n2) return 1;
        if (n1 < n2) return -1;
    }
    return 0;
}

function showUpdateNotification(data) {
    if (document.getElementById('ishak-update-notification')) return;

    const notification = document.createElement('div');
    notification.id = 'ishak-update-notification';
    notification.style.cssText = `
        position: fixed;
        bottom: 20px;
        right: 20px;
        background: rgba(255, 255, 255, 0.7);
        backdrop-filter: blur(5px);
        color: #333;
        padding: 15px 20px;
        border-radius: 8px;
        box-shadow: 0 4px 15px rgba(0,0,0,0.2);
        z-index: 10002;
        font-family: Arial, sans-serif;
        max-width: 300px;
        border-left: 4px solid #4CAF50;
    `;

    const title = document.createElement('strong');
    title.style.fontSize = '16px';
    title.textContent = `Доступно обновление ${data.version}`;

    const message = document.createElement('p');
    message.style.margin = '8px 0';
    message.style.fontSize = '14px';
    message.textContent = data.release_notes || 'Новая версия расширения';

    const downloadLink = document.createElement('a');
    downloadLink.href = data.download_url;
    downloadLink.target = '_blank';
    downloadLink.style.cssText = `
        display: inline-block;
        background: #4CAF50;
        color: white;
        text-decoration: none;
        padding: 8px 15px;
        border-radius: 4px;
        margin-right: 10px;
    `;
    downloadLink.textContent = 'Скачать';

    const closeButton = document.createElement('button');
    closeButton.textContent = 'Закрыть';
    closeButton.style.cssText = `
        background: none;
        border: 1px solid #ccc;
        color: #333;
        padding: 8px 15px;
        border-radius: 4px;
        cursor: pointer;
    `;
    closeButton.onclick = () => {
        notification.remove();
        localStorage.setItem('ishakUpdateClosed', Date.now().toString());
    };

    notification.appendChild(title);
    notification.appendChild(message);
    notification.appendChild(downloadLink);
    notification.appendChild(closeButton);

    document.body.appendChild(notification);
}

window.checkForUpdates = checkForUpdates;

// Автоматическая проверка при загрузке страницы
setTimeout(() => checkForUpdates(false), 5000);