/**
 * @file updateButton.js
 * @description Hantering av "Uppdatera nu"-knappen för StatusNotifier Extension
 * 
 * Author: Linus Olofsson - Iver 
 * Date: 2025-07-03 
 * Last modified: Linus Olofsson (2025-07-03)
 * 
 * @purpose Hantera "Uppdatera nu"-knappen
 * @invoked_by popup.js
 * @invokes components/timer.js, components/itemList.js
 */

import { updateButtonState } from './clearButton.js';

// Initiera updateButton-hanterare
const initUpdateButton = () => {
    try {
        console.log('Initializing update button handler...');
        
        // Hitta update-knappen
        const updateButton = document.getElementById('updateBtn');
        if (!updateButton) {
            console.error('Update button not found in DOM');
            return;
        }
        
        // Lägg till klick-event
        updateButton.addEventListener('click', handleUpdateButtonClick);
        
        console.log('Update button handler initialized');
    } catch (error) {
        console.error('Error initializing update button handler:', error);
    }
};

// Hantera klick på update-knappen
const handleUpdateButtonClick = async () => {
    try {
        console.log('Update button clicked');
        
        // Visa laddningsindikator
        const updateButton = document.getElementById('updateBtn');
        if (updateButton) {
            const originalText = updateButton.textContent;
            updateButton.textContent = 'Hämtar...';
            updateButton.disabled = true;
            
            try {
                // Skicka meddelande till service worker för att hämta tickets från API
                // Service worker väntar tills datan är sparad innan den svarar
                const response = await chrome.runtime.sendMessage({ action: 'checkItems' });
                console.log('checkItems response:', response);
                
                // Ladda om listan från storage efter att service worker uppdaterat den
                const { displayItems } = await import('../components/itemList.js');
                await displayItems();
                
                // Uppdatera dynamisk knapp-status
                await updateButtonState();
                
                // Återställ knappen efter uppdatering
                updateButton.textContent = 'Uppdaterad!';
                
                setTimeout(() => {
                    updateButton.textContent = originalText;
                    updateButton.disabled = false;
                }, 2000);
            } catch (error) {
                console.error('Error during update:', error);
                updateButton.textContent = '❌ Fel';
                setTimeout(() => {
                    updateButton.textContent = originalText;
                    updateButton.disabled = false;
                }, 2000);
            }
        }
    } catch (error) {
        console.error('Error handling update button click:', error);
        
        // Återställ knappen vid fel
        const updateButton = document.getElementById('updateBtn');
        if (updateButton) {
            updateButton.textContent = 'Uppdatera nu';
            updateButton.disabled = false;
        }
    }
};

// Exportera funktioner
export {
    initUpdateButton
};
