/// Application configuration for different environments.
///
/// This class provides environment-specific settings like API URLs
/// and logging levels, supporting both development and production builds.
class AppConfig {
  final String apiBaseUrl;
  final bool enableLogging;
  final String environment;

  const AppConfig._({
    required this.apiBaseUrl,
    required this.enableLogging,
    required this.environment,
  });

  /// Development configuration (uses local backend)
  static const AppConfig dev = AppConfig._(
    apiBaseUrl: 'http://10.0.2.2:8000', // Android emulator localhost
    enableLogging: true,
    environment: 'development',
  );

  /// Production configuration (Linode VPS)
  static const AppConfig prod = AppConfig._(
    apiBaseUrl: 'http://172.104.152.69',
    enableLogging: false,
    environment: 'production',
  );

  /// Current active configuration (set at app startup)
  static AppConfig _current = dev;

  /// Get the current configuration
  static AppConfig get current => _current;

  /// Initialize configuration from dart-define or default to dev
  static void initialize({String? environment}) {
    const envFromDefine = String.fromEnvironment('ENV', defaultValue: 'dev');
    final env = environment ?? envFromDefine;

    switch (env) {
      case 'prod':
      case 'production':
        _current = prod;
        break;
      case 'dev':
      case 'development':
      default:
        _current = dev;
    }
  }

  @override
  String toString() => 'AppConfig(env: $environment, api: $apiBaseUrl)';
}
