import 'package:get/get_rx/src/rx_types/rx_types.dart';
import 'package:injectable/injectable.dart';

import '../data/api/response/intimacy_analyze_chat_config_response.dart';
import '../data/api/response/intimacy_analyze_config_response.dart';
import '../data/api/response/intimacy_analyze_reply_config_response.dart';
import '../data/repository/intimacy_analyze_repository.dart';

/// 亲密度分析模块的配置的帮助类
@injectable
class IntimacyAnalyzeConfigHelper {
  /// 亲密度分析Repository
  IntimacyAnalyzeRepository intimacyAnalyzeRepository;

  /// 亲密度配置
  Rxn<IntimacyAnalyzeConfigResponse> get intimacyAnalyzeConfig =>
      intimacyAnalyzeRepository.intimacyAnalyzeConfig;

  /// 对话分析配置
  Rxn<IntimacyAnalyzeChatConfigResponse> get intimacyAnalyzeChatConfig =>
      intimacyAnalyzeRepository.intimacyAnalyzeChatConfig;

  /// 识图回复配置
  Rxn<IntimacyAnalyzeReplyConfigResponse> get intimacyAnalyzeReplyConfig =>
      intimacyAnalyzeRepository.intimacyAnalyzeReplyConfig;

  IntimacyAnalyzeConfigHelper(this.intimacyAnalyzeRepository);

  /// 是否可以自定义预测方向
  bool isCanCustomDirection() {
    var config = intimacyAnalyzeConfig.value;
    if (config == null) {
      return false;
    }
    return config.custom ?? false;
  }

  /// 获取自定义预测方向，最大自定义字符数
  int getMaxCustomDirectionWords() {
    var config = intimacyAnalyzeConfig.value;
    if (config == null) {
      return 0;
    }
    return config.maxCustomWords ?? 0;
  }

  /// 获取自定义预测方向，最小自定义字符数
  int getMinCustomDirectionWords() {
    var config = intimacyAnalyzeConfig.value;
    if (config == null) {
      return 0;
    }
    return config.minCustomWords ?? 0;
  }

  /// 最多，可以选多少张图片
  int getMaxAssetsCount() {
    var config = intimacyAnalyzeConfig.value;
    if (config == null) {
      return 1;
    }
    // 最多选多少张
    if (config.maxImageCount != null) {
      return config.maxImageCount!;
    }
    // 最少选多少张
    return config.minImageCount ?? 1;
  }
}
