// bs-poiless-co.js
import {
    handlePoilessSelectionMap, // <--- Neu benannt

} from './map-gen-mgr.js';
import { L,     mapState, getMap } from './map-service.js';


// Das hier löschen:
// import { handlePoilessAddressMap } from './map-gen-mgr.js';

import { checkDistance } from './utilities.js';
// ⬇️ SINGLETON IMPORTS
import { LocationTrackingCoordinator } from './loc-tracking-co.js';
import { getAdminMode } from './admin-mode-co.js';

import { attachActionListenersForNewAddress } from './bs-poi-co.js';

/**
 * Konfiguriert und öffnet das Bottom Sheet, um einen neuen Stolperstein an
 * einer geklickten Adresse zu erfassen.
 * BEREINIGT: map-Parameter entfernt.
 * @param {object} clickEventData - Das Klick-Ereignis-Objekt (mit .latlng oder ._latlng).
 * @param {object} bottomSheetUI - Die Instanz des Bottom Sheet UI.
 * @param {Object} backendService - Die Instanz des Backend Service.
 */


/**
* Bereitet das UI und die Karte für eine Adresse ohne Stolpersteine vor.
* Nutzt bereits vorhandene addressData (kein neuer Backend-Call nötig).
*/
export async function handlePoilessSelectionBs(
    addressData, // Jetzt direkt das Objekt aus der Suche/Event
    bottomSheetUI,
    backendService,
    addDirectionHint
) {
    console.log("DEBUG: --- handlePoilessSelectionBs START ---");

    // 1. Initialisierung & State
    const map = getMap();
    const locTrackingCoordinator = LocationTrackingCoordinator.getInstance();
    const isAdmin = getAdminMode.getStatus();
    const pos = { lat: addressData.lat, lng: addressData.lng };

    if (!bottomSheetUI) {
        console.error("FEHLER: bottomSheetUI fehlt.");
        return;
    }

    // --- NEU: Map & State Logik (ehemals Teil 1 & 2) ---
    // Karte zentrieren und ggf. alten Marker entfernen
    // handlePoilessSelectionMap(addressData);

    // Virtuellen Marker/Zustand für "Neuanlage" vorbereiten
    // Wir nutzen ein Hilfsobjekt, das sich wie ein Marker verhält
    const tempMarker = {
        options: {
            gid: 'new',
            addressData: addressData,
            isNewAddressMode: true
        },
        getLatLng: () => L.latLng(pos.lat, pos.lng)
    };

    // Den aktiven State auf "Neu" setzen
    mapState.activeMarkerOrCluster = tempMarker;
    mapState.activeMarkerOrClusterGID = 'new';

    // 2. UI-Konfiguration
    const headerText = "Adresse ohne Stolpersteine";
    let contentHtml = `<p>Fügen Sie mit (+) einen Stolperstein hinzu.</p>`;

    const options = {
        showCaretaker: false,
        isCaretaker: false,
        showMainButton: false,
        showAddButton: true,
        showEditButton: false,
    };

    // 3. Standortprüfung
    const userPosition = locTrackingCoordinator.getUserPosition();
    if (userPosition) {
        const isNearby = checkDistance(userPosition[0], userPosition[1], pos.lat, pos.lng, 120);
        if (!isNearby && !isAdmin) {
            contentHtml = `<p>Adresse aufsuchen, um Stolperstein hinzuzufügen.</p>`;
            options.showAddButton = false;
        }
    }

    // 4. Bottom Sheet befüllen
    //bottomSheetUI.setBsHeaderText(headerText);
 
    bottomSheetUI.setBsTitle(addDirectionHint(headerText));  // NEU
    bottomSheetUI.setBsLocation("");

    bottomSheetUI.setContent(contentHtml);
    bottomSheetUI.setActions(options);

    // WICHTIG: Adresse setzen (houseNr und localDistrict beachten)
    bottomSheetUI.updateAddress(
        addressData.street,
        addressData.houseNr || addressData.houseNumber,
        addressData.localDistrict || addressData.district
    );

    bottomSheetUI.setCoords(pos);



    bottomSheetUI.setSheetState(true);
    bottomSheetUI.open(pos);

    // 5. Action-Listener binden
    // Wir nutzen 'new' als GID und geben die Koordinaten/Adressdaten direkt mit
    attachActionListenersForNewAddress(bottomSheetUI);

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