import 'package:flutter/material.dart';

/// 设置主题用例
///
/// 职责：幂等校验——当前模式与目标模式相同时直接返回，不触发任何变更。
///
/// 持久化由 [ThemeModeNotifier.setMode] 负责（在 `onApply` 被调用后执行），
/// UseCase 不感知存储细节。
///
/// ## 数据流
///
/// ```
/// ThemeViewModel.setMode(mode)
///   → ★ SetThemeUseCase.execute() ★   ← 你在这里
///     → 幂等校验（相同模式 → 直接返回）
///     → onApply(mode)
///       → ThemeModeNotifier.setMode()  ← 更新内存 + 写入持久化（TODO）
/// ```
class SetThemeUseCase {
  const SetThemeUseCase();

  /// 执行主题切换
  ///
  /// [current] 当前生效的主题模式
  /// [requested] 用户选择的目标模式
  /// [onApply] 校验通过后回调，由 ViewModel 负责调用 ThemeModeNotifier
  void execute({
    required ThemeMode current,
    required ThemeMode requested,
    required void Function(ThemeMode mode) onApply,
  }) {
    if (current == requested) return;
    onApply(requested);
  }
}
