initialize static method

Future<void> initialize({
  1. required String apiKey,
  2. GoMailerConfig? config,
})

Initialize the Go Mailer SDK

apiKey Your Go Mailer API key (required) config Optional configuration parameters

Throws GoMailerException if initialization fails

Implementation

static Future<void> initialize({
  required String apiKey,
  GoMailerConfig? config,
}) async {
  if (_isInitialized) {
    _log('SDK already initialized', GoMailerLogLevel.debug);
    return;
  }

  if (apiKey.isEmpty) {
    throw GoMailerException('API key cannot be empty');
  }

  try {
    final finalConfig = config ?? GoMailerConfig();
    finalConfig.apiKey = apiKey;
    _logLevel = finalConfig.logLevel;

    _instance = GoMailer._();

    // Initialize platform-specific code
    await _channel.invokeMethod('initialize', {
      'apiKey': apiKey,
      'config': finalConfig.toMap(),
    });

    _isInitialized = true;
    _log('SDK initialized successfully with version $version',
        GoMailerLogLevel.info);
  } catch (e) {
    _isInitialized = false;
    _instance = null;
    _log('Failed to initialize SDK: $e', GoMailerLogLevel.error);
    throw GoMailerException('Failed to initialize Go Mailer SDK: $e');
  }
}