

// bs-newaddress-co.js

import { showToast, checkDistance } from './sc-utilities.js';
import { updateSearchFieldWithAddress } from './app-ui-co.js';
/**
 * Konfiguriert und öffnet das Bottom Sheet, um einen neuen Stolperstein an
 * einer geklickten Adresse zu erfassen.
 * @param {object} clickEventData - Das Klick-Ereignis-Objekt mit den Koordinaten (z.B. { latlng: { lat, lng } }).
 * @param {object} bottomSheetUI - Die Instanz des Bottom Sheet UI.
 * @param {object} mapState - Das globale mapState-Objekt.
 * @param {Object} userLocationInstance - Die Instanz der Benutzerstandortverwaltung.
 * @param {function(): boolean} getAdminModeStatus - Funktion zum Abfragen des Admin-Modus-Status.
 * @param {L.MarkerClusterGroup} markers - Die Marker-Cluster-Gruppe.
 * @param {L.Map} map - Die Leaflet-Karteninstanz.
 * @param {Object} backendService - Die Instanz des Backend Service.
 * @param {boolean} isNewAddressMode - Flag, das anzeigt, dass wir uns im Modus "Neue Adresse hinzufügen" befinden.
 */
export async function updateBsForNewAddress(
    clickEventData,
    bottomSheetUI,
    userLocation,
    getAdminModeStatus,
    map,
    backendService
) {
    console.log("DEBUG: --- updateBsForNewAddress START ---");

    if (!bottomSheetUI) {
        console.error("FEHLER: bottomSheetUI ist nicht verfügbar. Breche ab.");
        return;
    }
    if (!clickEventData || !clickEventData.latlng) {
        console.error("FEHLER: Keine gültigen Koordinaten übergeben. Breche ab.");
        showToast("Fehler: Koordinaten nicht gefunden.");
        return;
    }


    // Header und Content für das Bottom Sheet definieren
    const headerText = "Adresse ohne Stolpersteine";
    let contentHtml = `<p>Fügen Sie mit (+) einen Stolperstein hinzu.</p>`;
    // Leeren Sie die Aktionen, da wir hier keine Buttons anzeigen müssen.
    // Die Buttons werden statisch im HTML-Template definiert und nicht dynamisch.
    const options = {
        userLocation,
        showCaretaker: false,
        isCaretaker: false,
        showMainButton: false,
        showAddButton: true,
        showEditButton: false,
    };
    const userPosition = userLocation.getUserPosition();
    let userLat = null;
    let userLng = null;

    if (userPosition) {
        userLat = userPosition[0];
        userLng = userPosition[1];
    }
    if (!(userPosition && checkDistance(
        userLat,
        userLng,
        clickEventData.latlng.lat,
        clickEventData.latlng.lng,
        120))
        && !getAdminModeStatus()) {
        contentHtml = `<p>Adresse aufsuchen, um Stolperstein hinzuzufügen.</p>`;
        options.showAddButton = false;
    }

    // Bottom Sheet konfigurieren
    bottomSheetUI.setBsHeaderText(headerText);
    bottomSheetUI.setContent(contentHtml);
    bottomSheetUI.setActions(options);

    // Setzen der Koordinaten im Bottom Sheet
    bottomSheetUI.setCoords({
        lat: clickEventData.latlng.lat,
        lng: clickEventData.latlng.lng
    });
try{
    const addressData = await backendService.getAddressFromLocation(clickEventData.latlng.lat, clickEventData.latlng.lng);
    const locationText = `${addressData.address.street || ''} ${addressData.address.houseNumber || ''}, ${ addressData.address.postalCode || ''} ${ addressData.address.district || ''}
`;
    updateSearchFieldWithAddress(locationText);
    // Bottom Sheet im erweiterten Zustand öffnen
    // extended state setzen 
    bottomSheetUI.setSheetState(true);
    bottomSheetUI.open(clickEventData.latlng);
}
catch (error) {
        console.error("Fehler beim Abrufen der Adresse:", error);
        showToast('Fehler beim Abrufen der Adresse. Bitte versuchen Sie es erneut.', 'Fehler');
        bottomSheetUI.setSheetState(true);
        bottomSheetUI.open(clickEventData.latlng);
    }

    // Hier könnten Sie, falls nötig, Event-Listener für spezifische Aktionen im NewAddress-Modus anfügen.
    // Aber die Hauptlogik (Klick auf den Plus-Button) wird im Haupt-UI-Koordinator (app-ui-co.js) verwaltet,
    // der auf die `isNewAddressMode` Variable im `mapState` hört.

    console.log("DEBUG: --- updateBsForNewAddress END ---");
}