requestEmailVerification method
Request email verification
Implementation
Future<Map<String, dynamic>> requestEmailVerification(String email, {bool testMode = false}) async {
// Use both print and OnairosDebugHelper for maximum visibility
print('🔍 [EMAIL-VERIFY] Starting requestEmailVerification for: $email (testMode: $testMode)');
OnairosDebugHelper.log('📧 [EMAIL-VERIFY] Starting requestEmailVerification');
OnairosDebugHelper.log('📧 [EMAIL-VERIFY] Email: $email, testMode: $testMode');
try {
OnairosDebugHelper.log('📧 Requesting email verification for: $email (testMode: $testMode)');
print('📧 Requesting email verification for: $email (testMode: $testMode)');
// Test mode mock response - NO ACTUAL EMAIL SENT
if (testMode) {
OnairosDebugHelper.log('🚀 Test mode: Skipping real email, returning mock success immediately');
await Future.delayed(const Duration(milliseconds: 300));
final mockRequestId = 'test-request-${DateTime.now().millisecondsSinceEpoch}';
// Store request details for test mode
await _storage.storeValue('email_verification_request_id', mockRequestId);
await _storage.storeValue('email_verification_request_email', email);
OnairosDebugHelper.log('✅ Test mode: Email verification mocked (NO EMAIL SENT)');
return {
'success': true,
'message': 'Ready for verification (test mode - no email sent)',
'requestId': mockRequestId,
'testMode': true,
};
}
// Live mode: Make authenticated API request
print('🌐 [EMAIL-VERIFY] Making API call to: email/verification');
print('🌐 [EMAIL-VERIFY] API Service initialized: ${_apiKeyService.isInitialized}');
OnairosDebugHelper.log('🌐 Making API call to: email/verification');
OnairosDebugHelper.log('📤 Request body: {email: $email, action: request}');
print('📤 [EMAIL-VERIFY] Request body: {email: $email, action: request}');
print('📡 [EMAIL-VERIFY] About to call authenticatedPost...');
final response = await _apiKeyService.authenticatedPost(
'email/verification',
body: {
'email': email,
'action': 'request',
},
).timeout(
const Duration(seconds: 30),
onTimeout: () {
OnairosDebugHelper.log('⏱️ Request timeout after 30 seconds');
throw TimeoutException('Request timed out after 30 seconds', const Duration(seconds: 30));
},
);
OnairosDebugHelper.log('📥 API Response: $response');
OnairosDebugHelper.log('📥 Response success: ${response['success']}');
OnairosDebugHelper.log('📥 Response message: ${response['message']}');
// Store request details for tracking
if (response['success'] == true) {
await _storage.storeValue('email_verification_request_id', response['requestId'] ?? 'unknown');
await _storage.storeValue('email_verification_request_email', email);
await _storage.storeValue('email_verification_request_timestamp', DateTime.now().toIso8601String());
OnairosDebugHelper.log('✅ Email verification requested successfully');
} else {
OnairosDebugHelper.log('⚠️ API returned success=false: ${response['message'] ?? 'Unknown error'}');
}
return response;
} catch (e, stackTrace) {
print('❌ [EMAIL-VERIFY] EXCEPTION CAUGHT!');
print('❌ Error: $e');
print('❌ Type: ${e.runtimeType}');
print('❌ Stack: $stackTrace');
OnairosDebugHelper.log('❌ [EMAIL-VERIFY] Exception caught!');
OnairosDebugHelper.log('❌ Error requesting email verification: $e');
OnairosDebugHelper.log('❌ Error type: ${e.runtimeType}');
OnairosDebugHelper.log('❌ Full stack trace: $stackTrace');
// Extract more specific error message
String errorMessage = 'Failed to send verification email. Please try again.';
if (e.toString().contains('404')) {
errorMessage = 'Email service endpoint not found. Please check backend configuration.';
} else if (e.toString().contains('500')) {
errorMessage = 'Backend server error. Please check backend logs.';
} else if (e.toString().contains('timeout')) {
errorMessage = 'Request timed out. Please check your internet connection.';
}
return {
'success': false,
'message': errorMessage,
'error': e.toString(),
'details': 'Check console logs for full error details',
};
}
}