/**
 * @file clearButton.js
 * @description Hantering av dynamisk knapp för StatusNotifier Extension
 * 
 * Author: Linus Olofsson - Iver 
 * Date: 2025-07-03 
 * Last modified: Linus Olofsson (2026-02-18)
 * 
 * @purpose Hantera dynamisk knapp: "Kontrollera min kö" när tom, "Töm lista" när det finns ärenden
 * @invoked_by popup.js
 * @invokes components/itemList.js, common/storage.js
 */

import { clearItems, displayItems } from '../components/itemList.js';
import { getItems } from '../common/storage.js';

// Initiera clearButton-hanterare
const initClearButton = () => {
    try {
        console.log('Initializing dynamic button handler...');
        
        // Hitta knappen
        const clearButton = document.getElementById('clearBtn');
        if (!clearButton) {
            console.error('Clear button not found in DOM');
            return;
        }
        
        // Lägg till klick-event
        clearButton.addEventListener('click', handleDynamicButtonClick);
        
        // Uppdatera knapp-text baserat på lista-status
        updateButtonState();
        
        console.log('Dynamic button handler initialized');
    } catch (error) {
        console.error('Error initializing dynamic button handler:', error);
    }
};

// Uppdatera knapp-text och stil baserat på om listan är tom
const updateButtonState = async () => {
    try {
        const clearButton = document.getElementById('clearBtn');
        if (!clearButton) return;
        
        const items = await getItems();
        const isEmpty = !items || items.length === 0;
        
        const iconSpan = clearButton.querySelector('.btn-icon');
        const textSpan = clearButton.querySelector('.btn-text');
        
        if (isEmpty) {
            if (iconSpan) iconSpan.textContent = '🔍';
            if (textSpan) textSpan.textContent = 'Kontrollera min kö';
            clearButton.title = 'Hämta ärenden';
            clearButton.dataset.mode = 'check';
        } else {
            if (iconSpan) iconSpan.textContent = '🗑';
            if (textSpan) textSpan.textContent = 'Töm lista';
            clearButton.title = 'Töm kö';
            clearButton.dataset.mode = 'clear';
        }
    } catch (error) {
        console.error('Error updating button state:', error);
    }
};

// Hantera klick på den dynamiska knappen
const handleDynamicButtonClick = async () => {
    try {
        const clearButton = document.getElementById('clearBtn');
        if (!clearButton) return;
        
        const mode = clearButton.dataset.mode || 'check';
        
        if (mode === 'check') {
            // Kontrollera kö - anropa API
            console.log('Checking queue from API...');
            
            const iconEl = clearButton.querySelector('.btn-icon');
            const textEl = clearButton.querySelector('.btn-text');
            if (iconEl) iconEl.textContent = '⏳';
            if (textEl) textEl.textContent = 'Kontrollerar...';
            clearButton.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);
                
                // Uppdatera listan från storage
                await displayItems();
                
                // Uppdatera knapp-status
                await updateButtonState();
                
                clearButton.disabled = false;
            } catch (error) {
                console.error('Error checking queue:', error);
                const errIcon = clearButton.querySelector('.btn-icon');
                const errText = clearButton.querySelector('.btn-text');
                if (errIcon) errIcon.textContent = '❌';
                if (errText) errText.textContent = 'Fel vid kontroll';
                clearButton.disabled = false;
                
                setTimeout(() => {
                    updateButtonState();
                }, 2000);
            }
        } else {
            // Töm lista
            console.log('Clearing list...');
            
            if (confirm('Är du säker på att du vill tömma listan?')) {
                const clrIcon = clearButton.querySelector('.btn-icon');
                const clrText = clearButton.querySelector('.btn-text');
                if (clrIcon) clrIcon.textContent = '⏳';
                if (clrText) clrText.textContent = 'Tömmer...';
                clearButton.disabled = true;
                
                await clearItems();
                
                if (clrIcon) clrIcon.textContent = '✓';
                if (clrText) clrText.textContent = 'Tömd!';
                
                setTimeout(async () => {
                    await updateButtonState();
                    clearButton.disabled = false;
                }, 1500);
            }
        }
    } catch (error) {
        console.error('Error handling dynamic button click:', error);
        
        const clearButton = document.getElementById('clearBtn');
        if (clearButton) {
            clearButton.disabled = false;
            updateButtonState();
        }
    }
};

// Exportera funktioner
export {
    initClearButton,
    updateButtonState
};
