/**
 * @file offscreen.js
 * @description Offscreen document för att hålla service worker aktiv
 * 
 * Author: Linus Olofsson - Iver 
 * Date: 2025-07-09
 * Last modified: Linus Olofsson (2025-07-09)
 * 
 * @purpose Hålla service worker aktiv för bakgrundsuppdateringar
 */

// Lyssna på meddelanden från service worker
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
    if (message.action === 'ping') {
        console.log('Offscreen document received ping');
        // Skicka svar för att bekräfta att offscreen document är aktivt
        sendResponse({ status: 'alive', timestamp: Date.now() });
        return true; // Indikera att vi kommer att skicka ett asynkront svar
    }
    
    if (message.action === 'keepAlive') {
        console.log('Keeping offscreen document alive');
        // Implementera någon minimal aktivitet för att hålla dokumentet aktivt
        setTimeout(() => {
            chrome.runtime.sendMessage({ 
                action: 'offscreenHeartbeat', 
                timestamp: Date.now() 
            }).catch(err => console.error('Error sending heartbeat:', err));
        }, message.interval || 25000);
        
        sendResponse({ status: 'keepingAlive', timestamp: Date.now() });
        return true;
    }
});

// Skicka meddelande när dokumentet laddas för att meddela service worker
chrome.runtime.sendMessage({ 
    action: 'offscreenLoaded', 
    timestamp: Date.now() 
}).catch(err => console.error('Error sending loaded message:', err));

console.log('Offscreen document loaded at', new Date().toISOString());

// Implementera en heartbeat-funktion för att hålla dokumentet aktivt
function startHeartbeat() {
    setInterval(() => {
        chrome.runtime.sendMessage({ 
            action: 'offscreenHeartbeat', 
            timestamp: Date.now() 
        }).catch(err => console.error('Error sending heartbeat:', err));
    }, 25000); // Var 25:e sekund
}

startHeartbeat();
