package com.intellisync.modulo.biometria_continua;

import androidx.annotation.NonNull;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Promise;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class BiometriaContinuaModule extends ReactContextBaseJavaModule {

    public BiometriaContinuaModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @NonNull
    @Override
    public String getName() {
        return "BiometriaContinuaModule";
    }

    // ✅ Função para criar um hash biométrico
    @ReactMethod
    public void criarHashBiometria(String digital, Promise promise) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(digital.getBytes());
            StringBuilder hexString = new StringBuilder();

            for (byte b : hash) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) hexString.append('0');
                hexString.append(hex);
            }

            promise.resolve(hexString.toString());
        } catch (NoSuchAlgorithmException e) {
            promise.reject("HashError", "Erro ao criar hash: " + e.getMessage());
        }
    }

    // ✅ Função para validar um hash biométrico
    @ReactMethod
    public void validarHashBiometria(String[] hashesCadastrados, String hashAtual, Promise promise) {
        for (String hash : hashesCadastrados) {
            if (hash.equals(hashAtual)) {
                promise.resolve(true);
                return;
            }
        }
        promise.resolve(false);
    }

    // ✅ Função para escutar continuamente a biometria (simulação)
    @ReactMethod
    public void escutarBiometria(Promise promise) {
        // Simulação de escuta contínua da biometria
        promise.resolve("Escutando biometria...");
    }
}
