initialize method
Future<NotificationFailure?>
initialize({
- bool autoRequestPermissions = true,
- UserPreferencesModel? userPreferences,
Initializes the notification manager and sets up all repositories.
Implementation
Future<NotificationFailure?> initialize({
bool autoRequestPermissions = true,
UserPreferencesModel? userPreferences,
}) async {
try {
if (_isInitialized) {
safeDebugLog('Comprehensive notification manager already initialized');
return null;
}
safeDebugLog('Initializing comprehensive notification manager');
// Initialize both repositories
final NotificationFailure? firebaseError = await _firebaseRepository
.initialize();
final NotificationFailure? localError = await _localRepository
.initialize();
if (firebaseError != null && localError != null) {
safeDebugLog(
'''Failed to initialize both repositories: Firebase: ${firebaseError.message}, Local: ${localError.message}''',
);
return NotificationFailure.initialization(
details:
'''Both Firebase and Local initialization failed. Firebase: ${firebaseError.message}, Local: ${localError.message}''',
);
}
if (firebaseError != null) {
safeDebugLog(
'Firebase initialization failed: ${firebaseError.message}',
);
}
if (localError != null) {
safeDebugLog('Local initialization failed: ${localError.message}');
}
// Set up user preferences
if (userPreferences != null) {
_userPreferences = userPreferences;
}
// Request permissions if enabled
if (autoRequestPermissions) {
final (NotificationFailure? permissionError, PermissionStatus status) =
await _permissionManager.requestAllPermissions();
if (permissionError != null) {
safeDebugLog('Permission request failed: ${permissionError.message}');
} else {
safeDebugLog('Permission status: $status');
}
}
// Set up automatic foreground notification display for Firebase messages
_setupForegroundNotificationDisplay();
// Initialize foreground notification manager
final ForegroundNotificationManager? foregroundManager =
_foregroundManager;
if (foregroundManager != null) {
final NotificationFailure? foregroundError = foregroundManager
.initialize();
if (foregroundError != null) {
safeDebugLog(
'''Foreground manager initialization failed: ${foregroundError.message}''',
);
} else {
safeDebugLog('Foreground notification manager initialized');
}
}
_isInitialized = true;
safeDebugLog(
'Comprehensive notification manager initialized successfully',
);
return null;
} catch (e, stackTrace) {
safeDebugLog('Failed to initialize notification manager: $e');
return NotificationFailure.initialization(
details: e.toString(),
stackTrace: stackTrace,
);
}
}