// sc-admin-mode.js

/**
 * @private {function(): boolean} _currentStatusGetter - Hält die Funktion, die den Status vom Coordinator abruft.
 */
let _currentStatusGetter = () => false; 

/**
 * Diese Funktion bleibt der allgemeine Abrufpunkt für alle Module.
 * Sie fragt den Status beim zentralen Speicher (Coordinator) ab.
 * @returns {boolean} True, wenn Admin-Modus aktiv ist, sonst false.
 */
export function getAdminModeStatus() {
    return _currentStatusGetter();
}

/**
 * Setter, um dem Modul mitzuteilen, wo der Status liegt (im ApplicationCoordinator).
 * @param {function(): boolean} getterFunc - Die Funktion des Coordinators, die den Status hält.
 */
export function setAdminStatusGetter(getterFunc) {
    _currentStatusGetter = getterFunc;
}

class TzTapDetector {
    constructor(triggerElement, onSuccessfulTapSequence) {
        this._tapCount = 0;
        this._lastTapTime = 0;
        const TAP_THRESHOLD_MS = 1000;
        const REQUIRED_TAPS = 2; // Beispielwert

        if (!triggerElement) {
            console.warn("TzTapDetector: Trigger-Element nicht gefunden. Admin Modus-Trigger wird nicht aktiv sein.");
            return;
        }

        triggerElement.addEventListener('click', () => {
            const now = Date.now();
            if (now - this._lastTapTime < TAP_THRESHOLD_MS) {
                this._tapCount++;
            } else {
                this._tapCount = 1;
            }
            this._lastTapTime = now;

            console.debug(`DEBUG: Tap Count: ${this._tapCount}`);

            if (this._tapCount >= REQUIRED_TAPS) {
                this._tapCount = 0;
                
                // 🛑 PUSH: Event an den ApplicationCoordinator senden
                if (onSuccessfulTapSequence) { 
                    onSuccessfulTapSequence();
                }
            }
        });
        console.log("TzTapDetector initialisiert.");
    }
}

/**
 * Initialisiert den "Admin-Modus"-Erkenner und registriert den Handler.
 * @param {HTMLElement} triggerElement - Das DOM-Element, das für die Taps verwendet wird.
 * @param {function(): void} callback - Der Handler im ApplicationCoordinator.
 */
export function setupAdminModeDetector(triggerElement, callback) {
    if (triggerElement) {
        new TzTapDetector(triggerElement, callback);
    } else {
        console.warn("Trigger-Element für Zusatzfunktionen nicht gefunden.");
    }
}