wildfire-im-sdk
Version:
野火IM SDK for Vue3 projects
71 lines (61 loc) • 2.28 kB
JavaScript
/*
* Copyright (c) 2020 WildFireChat. All rights reserved.
*/
import NotificationMessageContent from './notificationMessageContent'
import wfc from '../../client/wfc'
import MessageContentType from '../messageContentType';
import Long from 'long';
import ConversationType from "../../model/conversationType";
export default class RecallMessageNotification extends NotificationMessageContent {
operatorId = '';
messageUid = new Long(0);
originalSender;
originalContentType;
originalSearchableContent;
originalContent;
originalExtra;
originalMessageTimestamp;
constructor(operatorId, messageUid) {
super(MessageContentType.RecallMessage_Notification);
this.operatorId = operatorId;
this.messageUid = messageUid;
}
formatNotification(message) {
if (this.operatorId === wfc.getUserId()){
return "你撤回了一条消息";
}
if (message.conversation.type === ConversationType.Group) {
return wfc.getGroupMemberDisplayName(message.conversation.target, this.operatorId) + "撤回了一条消息";
} else {
return wfc.getUserDisplayName(this.operatorId) + "撤回了一条消息";
}
}
encode() {
let payload = super.encode();
payload.content = this.operatorId;
payload.binaryContent = wfc.utf8_to_b64(this.messageUid.toString());
return payload;
}
decode(payload) {
super.decode(payload);
this.operatorId = payload.content;
this.messageUid = Long.fromString(wfc.b64_to_utf8(payload.binaryContent));
try {
this.setExtra(payload.extra);
} catch (e) {
console.error('decode recallMessage extra error', e)
}
}
setExtra(extra) {
if (extra) {
extra = extra.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");
let obj = JSON.parse(extra);
this.originalSender = obj["s"];
this.originalContentType = obj["t"];
this.originalSearchableContent = obj["sc"];
this.originalContent = obj["c"];
this.originalExtra = obj["e"];
this.originalMessageTimestamp = Long.fromValue(obj["ts"]);
}
}
}