/**
 * modules/hardware/deviceDetector.js — Capacidades del dispositivo para UI de login.
 * Depende de: namespace (opcional), constante global IS_MOBILE desde PHP.
 */
(function (g) {
    g.modules = g.modules || {};
    g.modules.hardware = g.modules.hardware || {};

    function secureContext() {
        return !!(g.isSecureContext !== false && (g.location && g.location.protocol === 'https:' || g.location.hostname === 'localhost' || g.location.hostname === '127.0.0.1'));
    }

    g.modules.hardware.deviceDetector = {
        isMobileFlag: typeof IS_MOBILE !== 'undefined' ? !!IS_MOBILE : false,

        isMobile: function () {
            return this.isMobileFlag || /Android|iPhone|iPad|iPod/i.test(navigator.userAgent || '');
        },

        secureContext: secureContext,

        /**
         * WebAuthn usable para huella / Windows Hello / Face ID / Touch ID:
         * contexto seguro, API presente y (si el navegador lo permite) autenticador
         * de plataforma con verificación de usuario.
         */
        canUseWebAuthn: async function () {
            if (!secureContext()) return false;
            if (!g.navigator || !g.navigator.credentials || !g.PublicKeyCredential) return false;
            try {
                if (PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable) {
                    return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();
                }
            } catch (_) {
                return false;
            }
            return false;
        },

        /** UI: mostrar huella/WebAuthn solo si el dispositivo declara autenticador usable (móvil o PC con Hello, etc.). */
        showBiometricOption: async function () {
            return await this.canUseWebAuthn();
        },
    };
})(typeof window !== 'undefined' ? window : this);
