Skip to main content

Debugging Utilities

Comprehensive debugging tools to help troubleshoot biometric authentication issues.

import {
getDiagnosticInfo,
runBiometricTest,
setDebugMode,
isSensorAvailable,
simplePrompt
} from '@sbaiahmed1/react-native-biometrics';

// ๐Ÿ” Get comprehensive diagnostic information
const getDiagnostics = async () => {
try {
const info = await getDiagnosticInfo();

console.log('๐Ÿ“ฑ Platform:', info.platform);
console.log('๐Ÿ”ข OS Version:', info.osVersion);
console.log('๐Ÿ“ฒ Device Model:', info.deviceModel);
console.log('๐Ÿ” Biometric Capabilities:', info.biometricCapabilities);
console.log('๐Ÿ›ก๏ธ Security Level:', info.securityLevel);
console.log('๐Ÿ”’ Keyguard Secure:', info.keyguardSecure);
console.log('๐Ÿ‘† Enrolled Biometrics:', info.enrolledBiometrics);

if (info.lastError) {
console.log('โš ๏ธ Last Error:', info.lastError);
}

return info;
} catch (error) {
console.error('๐Ÿ’ฅ Failed to get diagnostic info:', error);
}
};

// ๐Ÿงช Run comprehensive biometric functionality test
const testBiometrics = async () => {
try {
console.log('๐Ÿงช Running biometric tests...');
const testResult = await runBiometricTest();

if (testResult.success) {
console.log('โœ… All tests passed!');
} else {
console.log('โŒ Test failures detected:');
testResult.errors.forEach(error => console.log(' ๐Ÿšซ', error));
}

// Warnings are reported independently of success/failure
if (testResult.warnings.length > 0) {
console.log('โš ๏ธ Test warnings:');
testResult.warnings.forEach(warning => console.log(' โš ๏ธ', warning));
}

// Detailed test results
console.log('๐Ÿ“Š Test Results:');
console.log(' ๐Ÿ” Sensor Available:', testResult.results.sensorAvailable);
console.log(' ๐Ÿ” Can Authenticate:', testResult.results.canAuthenticate);
console.log(' ๐Ÿ”ง Hardware Detected:', testResult.results.hardwareDetected);
console.log(' ๐Ÿ‘† Has Enrolled Biometrics:', testResult.results.hasEnrolledBiometrics);
console.log(' ๐Ÿ›ก๏ธ Secure Hardware:', testResult.results.secureHardware);

return testResult;
} catch (error) {
console.error('๐Ÿ’ฅ Failed to run biometric test:', error);
}
};

// ๐Ÿ”ง Debug mode management
const debugModeExample = async () => {
try {
// Enable debug logging
await setDebugMode(true);
console.log('๐Ÿ› Debug mode enabled - all operations will be logged');

// Perform some operations (they will now be logged)
await isSensorAvailable();
await simplePrompt('Debug test authentication');

// Disable debug logging
await setDebugMode(false);
console.log('๐Ÿ”‡ Debug mode disabled');
} catch (error) {
console.error('๐Ÿ’ฅ Failed to manage debug mode:', error);
}
};

// ๐Ÿ” Complete diagnostic workflow
const runDiagnosticWorkflow = async () => {
console.log('๐Ÿš€ Starting comprehensive biometric diagnostics...');

// 1. Enable debug mode
await setDebugMode(true);

// 2. Get device information
const diagnostics = await getDiagnostics();

// 3. Run functionality tests
const testResults = await testBiometrics();

// 4. Generate report
const report = {
timestamp: new Date().toISOString(),
device: diagnostics,
tests: testResults,
summary: {
isFullyFunctional: testResults?.success || false,
criticalIssues: testResults?.errors?.length || 0,
warnings: testResults?.warnings?.length || 0,
}
};

console.log('๐Ÿ“‹ Diagnostic Report:', JSON.stringify(report, null, 2));

// 5. Disable debug mode
await setDebugMode(false);

return report;
};