import 'package:bytedesk_kefu/util/bytedesk_constants.dart'; import 'package:bytedesk_kefu/util/bytedesk_utils.dart'; import 'package:equatable/equatable.dart'; import 'package:sp_util/sp_util.dart'; class Thread extends Equatable { // final String? tid; final String? topic; final String? wid; final String? uid; final String? nickname; final String? avatar; final String? content; final String? timestamp; final int? unreadCount; final String? type; // final bool? current; // final bool? top; final bool? topVisitor; // final bool? nodisturb; final bool? nodisturbVisitor; // final bool? unread; final bool? unreadVisitor; // final String? client; final String? currentUid; Thread( {this.tid, this.topic, this.wid, this.uid, this.nickname, this.avatar, this.content, this.timestamp, this.unreadCount, this.type, this.current, this.top, this.topVisitor, this.nodisturb, this.nodisturbVisitor, this.unread, this.unreadVisitor, this.client, this.currentUid}); static Thread fromWorkGroupJson(dynamic json) { return Thread( tid: json['tid'], topic: json['topic'], wid: json['workGroup']['wid'], nickname: json['workGroup']['nickname'], avatar: json['workGroup']['avatar'], content: json['content'], timestamp: BytedeskUtils.getTimeDuration(json['timestamp']), unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } static Thread fromWorkGroupJson2(dynamic json) { if (json['type'] == BytedeskConstants.THREAD_TYPE_WORKGROUP) { return Thread( tid: json['tid'], topic: json['topic'], wid: json['workGroup']['wid'], nickname: json['workGroup']['nickname'], avatar: json['workGroup']['avatar'], content: json['content'], timestamp: json['timestamp'], unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } else if (json['type'] == BytedeskConstants.THREAD_TYPE_APPOINTED) { return Thread( tid: json['tid'], topic: json['topic'], wid: json['agent']['uid'], nickname: json['agent']['nickname'], avatar: json['agent']['avatar'], content: json['content'], timestamp: json['timestamp'], unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } else if (json['type'] == BytedeskConstants.THREAD_TYPE_CHANNEL) { return Thread( tid: json['tid'], topic: json['topic'], wid: json['channel']['cid'], nickname: json['channel']['nickname'], avatar: json['channel']['avatar'], content: json['content'], timestamp: json['timestamp'], unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } // 其他类型 return Thread( tid: json['tid'], topic: json['topic'], wid: json['admin']['uid'], nickname: json['admin']['nickname'], avatar: json['admin']['avatar'], content: json['content'], timestamp: json['timestamp'], unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } static Thread fromHistoryJson(dynamic json) { return Thread( tid: json['tid'], topic: json['topic'], // wid: json['wid'], nickname: json['nickname'], avatar: json['avatar'], content: json['content'], timestamp: BytedeskUtils.getTimeDuration(json['timestamp']), unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } static Thread fromVisitorJson(dynamic json) { return Thread( tid: json['tid'], topic: json['topic'], uid: json['visitor']['uid'], // nickname: json['visitor']['nickname'], nickname: SpUtil.getString(BytedeskConstants.nickname)!, // avatar: json['visitor']['avatar'], avatar: SpUtil.getString(BytedeskConstants.avatar)!, content: json['content'], timestamp: BytedeskUtils.getTimeDuration(json['timestamp']), unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } static Thread fromContactJson(dynamic json) { return Thread( tid: json['tid'], topic: json['topic'], nickname: json['contact']['nickname'], avatar: json['contact']['avatar'], content: json['content'], timestamp: BytedeskUtils.getTimeDuration(json['timestamp']), unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } static Thread fromGroupJson(dynamic json) { return Thread( tid: json['tid'], topic: json['topic'], nickname: json['group']['nickname'], avatar: json['group']['avatar'], content: json['content'], timestamp: BytedeskUtils.getTimeDuration(json['timestamp']), unreadCount: json['unreadCount'], type: json['type'], current: json['current'], client: json['client'], top: json['top'], topVisitor: json['topVisitor'], nodisturb: json['nodisturb'], nodisturbVisitor: json['nodisturbVisitor'], unread: json['unread'], unreadVisitor: json['unreadVisitor']); } @override List get props => [topic!]; // Convert a Thread into a Map. The keys must correspond to the names of the // columns in the database. Map toMap() { return { 'tid': tid, 'topic': topic, 'wid': wid, 'uid': uid, 'nickname': nickname, 'avatar': avatar, 'content': content, 'timestamp': timestamp, 'unreadCount': unreadCount, 'type': type, 'currentUid': currentUid, 'client': client, 'current': current, 'top': top, 'topVisitor': topVisitor, 'nodisturb': nodisturb, 'nodisturbVisitor': nodisturbVisitor, 'unread': unread, 'unreadVisitor': unreadVisitor }; } // Thread.fromMap(Map map) { // tid = map['tid']; // topic = map['topic']; // wid = map['wid']; // uid = map['uid']; // nickname = map['nickname']; // avatar = map['avatar']; // content = map['content']; // timestamp = map['timestamp']; // unreadCount = map['unreadCount']; // type = map['type']; // current = map['current']; // client = map['client']; // top = map['top']; // topVisitor = map['topVisitor']; // nodisturb = map['nodisturb']; // nodisturbVisitor = map['nodisturbVisitor']; // unread = map['unread']; // unreadVisitor = map['unreadVisitor']; // currentUid = map['currentUid']; // client = map['client']; // } }