import 'package:get/get.dart';
import 'package:json_annotation/json_annotation.dart';

part 'talks.g.dart';

@JsonSerializable()
class TalkBean {
  @JsonKey(name: 'id')
  late final String id;

  @JsonKey(name: 'taskId')
  String? taskId;

  @JsonKey(name: 'ssid')
  String? ssid;

  @JsonKey(name: 'audioUrl')
  String? audioUrl;

  @JsonKey(name: 'duration')
  double? duration;

  @JsonKey(name: 'characters')
  int? characters;

  @JsonKey(name: 'status', fromJson: _intFromJson, includeToJson: false)
  Rxn<int> status;

  @JsonKey(name: 'title', fromJson: _stringFromJson, includeToJson: false)
  Rxn<String> title;

  @JsonKey(name: 'summary', fromJson: _stringFromJson, includeToJson: false)
  Rxn<String> summary;

  @JsonKey(name: 'createTime')
  String? createTime;

  @JsonKey(name: 'example')
  bool? isExample;

  @JsonKey(name: 'oversizeFile')
  bool? oversizeFile;

  TalkBean(
      {required this.id,
      this.taskId,
      this.ssid,
      this.audioUrl,
      this.duration,
      this.characters,
      required this.status,
      required this.title,
      required this.summary,
      this.createTime,
      this.isExample,
      this.oversizeFile});

  factory TalkBean.fromJson(Map<String, dynamic> json) =>
      _$TalkBeanFromJson(json);

  static _stringFromJson(String? txt) => Rxn(txt);

  static _intFromJson(int? txt) => Rxn(txt);

  void updateBean(TalkBean talkBean) {
    taskId = talkBean.taskId;
    ssid = talkBean.ssid;
    audioUrl = talkBean.audioUrl;
    duration = talkBean.duration;
    characters = talkBean.characters;
    status.value = talkBean.status.value;
    title.value = talkBean.title.value;
    summary.value = talkBean.summary.value;
    createTime = talkBean.createTime;
    isExample = talkBean.isExample;
    oversizeFile = talkBean.oversizeFile;
  }
}

class TalkStatus {
  TalkStatus._();

  //(0等待生成 1生成中,都处于生成中)  2成功 3失败 4未分析
  static int analysing = 0;
  static int waitAnalysis = 1;
  static int analysisSuccess = 2;
  static int analysisFail = 3;
  static int notAnalysis = 4;
}
