// app-startpage-co.js

import { mylog } from './sc-utilities.js'; // Import für Debugging-Zwecke

/**
 * AppStartPageCoordinator.js
 * Verwaltet die Logik und Interaktion des initialen Start- und Login-Bildschirms
 * (inklusive des Klicks auf den "Stolpersteine anzeigen"-Button).
 */
export class AppStartPageCoordinator {
    
    #appStartPageUI;
    #onStartDoneCallback;
    
    /**
     * @param {AppStartPageUI} appStartPageUI - Die UI-Klasse für die Startseite.
     * @param {function(): void} onStartDoneCallback - Callback, der nach erfolgreichem Start an den ApplicationCoordinator gesendet wird.
     */
    constructor(appStartPageUI, onStartDoneCallback) {
        this.#appStartPageUI = appStartPageUI;
        this.#onStartDoneCallback = onStartDoneCallback;
    }

    /**
     * Startet die Koordination der Startseite.
     * Stellt Event Listener für den Haupt-Aktions-Button bereit.
     */
    start() {
        mylog("AppStartPageCoordinator: Startet die Listener-Registrierung.");
        this.#setupGrantLocationButtonListener();
    }

    /**
     * Registriert den Event Listener für den Button, der die Freigabe des Standorts initiiert.
     * @private
     */
    #setupGrantLocationButtonListener() {
        // Der Button ist im Markup der AppShellUI (in #location-permission-overlay) enthalten.
        const grantButton = document.getElementById('grant-location-button');
        
        if (grantButton) {
            grantButton.addEventListener('click', this.#handleGrantLocationClick);
            mylog("AppStartPageCoordinator: Listener für Start-Button erfolgreich registriert.");
        } else {
            console.error("Start-Button (grant-location-button) im DOM nicht gefunden.");
        }
    }
    
    /**
     * Handler für den Klick auf den "Stolpersteine anzeigen"-Button.
     * Signalisiert dem ApplicationCoordinator, den Haupt-Anwendungslauf fortzusetzen.
     * @private
     */
    #handleGrantLocationClick = () => {
        
        mylog("AppStartPageCoordinator: Klick auf 'Stolpersteine anzeigen' erkannt.");
        
        // Entfernen Sie den Listener, um Doppelklicks zu vermeiden
        const grantButton = document.getElementById('grant-location-button');
        if (grantButton) {
            grantButton.removeEventListener('click', this.#handleGrantLocationClick);
        }
        
        // Führt den im ApplicationCoordinator definierten Callback aus
        if (this.#onStartDoneCallback) {
            mylog("AppStartPageCoordinator: Callback an ApplicationCoordinator gesendet.");
            this.#onStartDoneCallback();
        }
    }

    // Zusätzliche Methoden für Login-Felder, Einstellungs-Handling etc. könnten hier folgen.
}