You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
9.0 KiB
291 lines
9.0 KiB
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<Object> get props => [topic!];
|
|
|
|
// Convert a Thread into a Map. The keys must correspond to the names of the
|
|
// columns in the database.
|
|
Map<String, dynamic> 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<String, dynamic> 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'];
|
|
// }
|
|
}
|