import { NativeBiometric } from '@capgo/capacitor-native-biometric';

const SERVER_KEY = 'com.onoxsoft.panel';

export async function isBiometricAvailable(): Promise<boolean> {
    try {
        const result = await NativeBiometric.isAvailable();
        return result.isAvailable;
    } catch {
        return false;
    }
}

/**
 * Biyometrik kimlik bilgilerini kaydeder.
 * password parametresi için gerçek şifre yerine refresh token kullanılması önerilir.
 */
export async function setupBiometric(username: string, password: string): Promise<void> {
    await NativeBiometric.setCredentials({
        username,
        password,
        server: SERVER_KEY,
    });
}

/**
 * Biyometrik doğrulama yapar ve kayıtlı kimlik bilgilerini döner.
 * Başarısız veya mevcut değilse null döner.
 */
export async function authenticateWithBiometric(): Promise<{ username: string; password: string } | null> {
    const available = await isBiometricAvailable();
    if (!available) return null;

    try {
        await NativeBiometric.verifyIdentity({
            reason: 'ONOX paneline güvenli giriş için kimliğinizi doğrulayın',
            title: 'Biyometrik Giriş',
            subtitle: 'Parmak iziniz veya yüz tanıma',
        });

        const credentials = await NativeBiometric.getCredentials({
            server: SERVER_KEY,
        });
        return credentials;
    } catch {
        return null;
    }
}

/**
 * Kaydedilmiş biyometrik kimlik bilgilerini siler (çıkış veya şifre değişimi).
 */
export async function clearBiometricCredentials(): Promise<void> {
    try {
        await NativeBiometric.deleteCredentials({ server: SERVER_KEY });
    } catch {
        // Kimlik bilgisi yoksa sessizce devam et
    }
}
