createSecureConfig static method

ToastrConfig createSecureConfig({
  1. required ToastrType type,
  2. required String message,
  3. String? title,
  4. Duration? duration,
  5. ToastrConfig? baseConfig,
})

Creates a secure configuration from user input

Implementation

static ToastrConfig createSecureConfig({
  required ToastrType type,
  required String message,
  String? title,
  Duration? duration,
  ToastrConfig? baseConfig,
}) {
  // Sanitize inputs
  final secureMessage = sanitizeMessage(message);
  final secureTitle = sanitizeTitle(title);

  // Validate message is not empty after sanitization
  if (secureMessage.isEmpty) {
    throw ArgumentError('Message cannot be empty after sanitization');
  }

  // Ensure duration is within safe limits
  Duration safeDuration = duration ?? const Duration(seconds: 5);
  if (safeDuration < ToastrSecurityConfig.minDuration) {
    safeDuration = ToastrSecurityConfig.minDuration;
  } else if (safeDuration > ToastrSecurityConfig.maxDuration) {
    safeDuration = ToastrSecurityConfig.maxDuration;
  }

  // Use base config or create safe defaults
  final config =
      baseConfig?.copyWith(
        type: type,
        message: secureMessage,
        title: secureTitle,
        duration: safeDuration,
      ) ??
      ToastrConfig(
        type: type,
        message: secureMessage,
        title: secureTitle,
        duration: safeDuration,
      );

  // Final validation
  if (!isValidConfig(config)) {
    throw ArgumentError('Configuration failed security validation');
  }

  return config;
}