更新
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
import TUIBase from '../tui-base';
|
||||
import type { IConversationModel } from '../interface/model';
|
||||
import { isPrivateKey, isUrl, calculateTimeAgo, JSONToObject } from '../utils/common-utils';
|
||||
import type { MuteConversationParams } from '../type';
|
||||
import { AVATAR } from '../config';
|
||||
import isEmpty from '../utils/is-empty';
|
||||
import { IN_WX_MINI_APP } from '../utils/env';
|
||||
|
||||
const LAST_MSG_FOR_SHOW = [
|
||||
'[图片]',
|
||||
'[语音]',
|
||||
'[视频]',
|
||||
'[文件]',
|
||||
'[位置]',
|
||||
'[地理位置]',
|
||||
'[动画表情]',
|
||||
'[自定义消息]',
|
||||
'[群提示消息]',
|
||||
'[聊天记录]',
|
||||
];
|
||||
|
||||
export default class ConversationModel extends TUIBase implements IConversationModel {
|
||||
public conversationID!: string;
|
||||
public type!: string;
|
||||
public subType!: string;
|
||||
public unreadCount!: number;
|
||||
public lastMessage!: {
|
||||
nick: string;
|
||||
nameCard: string;
|
||||
lastTime: number;
|
||||
lastSequence: string;
|
||||
fromAccount: string;
|
||||
isRevoked: boolean;
|
||||
revoker?: string | undefined;
|
||||
isPeerRead: boolean;
|
||||
messageForShow: string;
|
||||
type: string;
|
||||
payload: any;
|
||||
};
|
||||
|
||||
public groupProfile?: any;
|
||||
public userProfile?: any;
|
||||
public groupAtInfoList!: any[];
|
||||
public remark!: string;
|
||||
public isPinned!: boolean;
|
||||
public messageRemindType!: string;
|
||||
public markList!: string[];
|
||||
public customData!: string;
|
||||
public conversationGroupList!: any[];
|
||||
public draftText!: string;
|
||||
public isMuted!: boolean;
|
||||
public operationType!: number;
|
||||
public _conversation: any;
|
||||
|
||||
constructor(options: any) {
|
||||
super();
|
||||
this.initProxy(options);
|
||||
this.isMuted = (this.messageRemindType === this.getEngine().TYPES.MSG_REMIND_ACPT_NOT_NOTE)
|
||||
|| (this.messageRemindType === this.getEngine().TYPES.MSG_REMIND_DISCARD);
|
||||
this.operationType = 0;
|
||||
this._conversation = options;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化挂载 conversation 字段
|
||||
*/
|
||||
private initProxy(options: any) {
|
||||
Object.keys(options).forEach((key) => {
|
||||
if (!isPrivateKey(key)) {
|
||||
(this as any)[key] = options[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateProperties(options: any) {
|
||||
Object.keys(options).forEach((key) => {
|
||||
if (!isPrivateKey(key)) {
|
||||
(this as any)[key] = options[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateOperationType(operationType: number) {
|
||||
this.operationType = operationType;
|
||||
}
|
||||
|
||||
getConversation() {
|
||||
return this._conversation;
|
||||
}
|
||||
|
||||
setMessageRead() {
|
||||
return this.getEngine().TUIConversation.setMessageRead(this.conversationID);
|
||||
}
|
||||
|
||||
// 以下方法用于处理 conversation 需要展示的数据
|
||||
getAvatar() {
|
||||
const chatEngine = this.getEngine();
|
||||
let avatar = '';
|
||||
switch (this.type) {
|
||||
case chatEngine.TYPES.CONV_C2C:
|
||||
avatar = isUrl(this.userProfile?.avatar) ? this.userProfile?.avatar : AVATAR.C2C;
|
||||
break;
|
||||
case chatEngine.TYPES.CONV_GROUP:
|
||||
avatar = isUrl(this.groupProfile?.avatar) ? this.groupProfile?.avatar : AVATAR.GROUP;
|
||||
break;
|
||||
case chatEngine.TYPES.CONV_SYSTEM:
|
||||
avatar = isUrl(this.groupProfile?.avatar) ? this.groupProfile?.avatar : AVATAR.SYSTEM;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return avatar;
|
||||
}
|
||||
|
||||
getShowName() {
|
||||
const chatEngine = this.getEngine();
|
||||
let name = '';
|
||||
switch (this.type) {
|
||||
case chatEngine.TYPES.CONV_C2C:
|
||||
name = this.remark || this.userProfile?.nick || this.userProfile?.userID || '';
|
||||
break;
|
||||
case chatEngine.TYPES.CONV_GROUP:
|
||||
name = this.groupProfile?.name || this.groupProfile?.groupID || '';
|
||||
break;
|
||||
case chatEngine.TYPES.CONV_SYSTEM:
|
||||
name = '系统通知';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user