part of '../../core_app.dart';

/// 壳应用的品牌环境配置。
/// 每个白标应用都在 `main.dart` 中传入自己的 [ShellEnvironment] 实例。
class ShellEnvironment {
  /// 创建 Android 平板壳应用的环境配置。
  const ShellEnvironment({
    required this.appName,
    required this.appKey,
    required this.accentColor,
    required this.backgroundColor,
    required this.textColor,
    required this.mutedTextColor,
    this.splashImage,
    this.initialUrl,
    this.bootstrapConfigAsset,
    this.preferredOrientations,
  });

  /// 应用显示名称（如 "全学通"、"点智学"）。
  final String appName;

  /// 应用唯一标识符（用于后端区分品牌）。
  final String appKey;

  /// 品牌主题强调色。
  final Color accentColor;

  /// 品牌背景色。
  final Color backgroundColor;

  /// 品牌正文文字色。
  final Color textColor;

  /// 品牌次要文字色。
  final Color mutedTextColor;

  /// 可选的品牌启动页图标；为空时使用默认图标。
  final ImageProvider? splashImage;

  /// 可选的初始地址；作为本地默认启动配置缺省时的兜底值。
  final String? initialUrl;

  /// 可选的本地默认启动配置文件路径，配置中可指定远程 URL 和升级地址。
  final String? bootstrapConfigAsset;

  /// 可选的页面首屏方向锁定配置；为空时使用默认竖屏。
  final List<DeviceOrientation>? preferredOrientations;

  /// 返回带局部覆盖的新配置对象。
  ShellEnvironment copyWith({
    String? appName,
    String? appKey,
    Color? accentColor,
    Color? backgroundColor,
    Color? textColor,
    Color? mutedTextColor,
    ImageProvider? splashImage,
    String? initialUrl,
    String? bootstrapConfigAsset,
    List<DeviceOrientation>? preferredOrientations,
  }) {
    return ShellEnvironment(
      appName: appName ?? this.appName,
      appKey: appKey ?? this.appKey,
      accentColor: accentColor ?? this.accentColor,
      backgroundColor: backgroundColor ?? this.backgroundColor,
      textColor: textColor ?? this.textColor,
      mutedTextColor: mutedTextColor ?? this.mutedTextColor,
      splashImage: splashImage ?? this.splashImage,
      initialUrl: initialUrl ?? this.initialUrl,
      bootstrapConfigAsset: bootstrapConfigAsset ?? this.bootstrapConfigAsset,
      preferredOrientations:
          preferredOrientations ?? this.preferredOrientations,
    );
  }
}
