// sc-admin-mode.js
import {  showToast } from './sc-utilities.js';

/**
 * @private {boolean} _isAdminModeActive - Interner Status, ob der Admin-Modus aktiv ist.
 */
let _isAdminModeActive = false;

/**
 * Eine Funktion, die den Status des Admin-Modus zurückgibt.
 * Dies ist die Funktion, die an andere Module übergeben wird, die den Status abfragen müssen.
 * @returns {boolean} True, wenn Admin-Modus aktiv ist, sonst false.
 */
export function getAdminModeStatus() {
    return _isAdminModeActive;
}

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

        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; // Zähler zurücksetzen
                if (onAdminActivate && typeof onAdminActivate === 'function') {
                    onAdminActivate(); // Callback auslösen
                }
            }
        });
        console.log("TzTapDetector initialisiert.");
    }
}

/**
 * Initialisiert den "Admin-Modus"-Erkenner (TzTapDetector).
 * @param {HTMLElement} triggerElement - Das DOM-Element, das für die Taps verwendet wird (z.B. das 'tz'-Div).
 * @param {function(boolean): void} [onAdminModeChange] - Optionaler Callback, der aufgerufen wird, wenn sich der Admin-Modus-Status ändert.
 */
export function setupAdminModeDetector(triggerElement, onAdminModeChange = null) {
    if (triggerElement) {
        new TzTapDetector(triggerElement, () => {
            _isAdminModeActive = true;
            showToast( "Zusatzfunktionen aktiviert");
            console.log("Zusatzfunktionen aktiviert durch Taps!");
            if (onAdminModeChange) {
                onAdminModeChange(true);
            }
        });
    } else {
        console.warn("Trigger-Element für Zusatzfunktionen nicht gefunden.");
    }
}

 

