tjc-sdk
Version:
TIANJI IM SDK
2 lines (1 loc) • 3.06 kB
JavaScript
import e from"../model/conversation.js";import t from"./notification/notificationMessageContent.js";import o from"../client/tjc.js";import n from"../client/messageConfig.js";import s from"./unknownMessageContent.js";import r from"./persistFlag.js";import i from"./messageStatus.js";import a from"../model/conversationType.js";import f from"../config.js";import m from"long";import l from"./unsupportMessageConten.js";import c from"./notification/recallMessageNotification.js";const u=require("base64-arraybuffer");class p{conversation={};from="";content={};messageContent={};messageId=0;direction=0;status=0;messageUid=-1;timestamp=0;to="";localExtra="";constructor(e,t){this.conversation=e,this.messageContent=t}static fromProtoMessage(l){if(!l)return null;if(!l.conversation.target)return null;if([1,2,3,4,7,8,9].indexOf(f.getTJCPlatform())>=0){let i=Object.assign(new p,l);i.messageId=Number(i.messageId),i.messageUid=m.fromValue(i.messageUid),i.timestamp=m.fromValue(i.timestamp).toNumber(),i.localExtra=l.localExtra,i.from||(i.from=l.sender),i.conversation=new e(void 0!==l.conversation.conversationType?l.conversation.conversationType:l.conversation.type,l.conversation.target,l.conversation.line);let a=n.getMessageContentClazz(void 0!==i.content.type?i.content.type:i.content.messageContentType);if(a){let e=new a;try{e.decode(i.content),e instanceof t&&(e.fromSelf=i.from===o.getUserId())}catch(t){let o=n.getMessageContentPersitFlag(i.content.type);if(r.Persist!==o&&r.Persist_And_Count!==o)return null;e=new s(i.content)}i.messageContent=e}return i}{let f=new p;f.from=l.fromUser,f.content=l.content,f.messageUid=l.messageId,f.localExtra=l.localExtra,f.timestamp=l.serverTimestamp;let m=n.getMessageContentClazz(l.content.type);if(m){let e=new m;if(l.content.notLoaded)e.notLoaded=!0,e.type=l.content.type;else try{l.content.data&&l.content.data.length>0&&(l.content.binaryContent=u.encode(l.content.data)),delete f.content.data,e.decode(l.content),e.extra=l.content.extra,e instanceof t&&(e.fromSelf=f.from===o.getUserId())}catch(t){let o=n.getMessageContentPersitFlag(l.content.type);if(r.Persist!==o&&r.Persist_And_Count!==o)return null;e=new s(l.content)}f.messageContent=e}if(f.from===o.getUserId())f.conversation=new e(l.conversation.type,l.conversation.target,l.conversation.line),f.direction=0,f.status=i.Sent;else if(l.conversation.type===a.Single?f.conversation=new e(l.conversation.type,l.fromUser,l.conversation.line):f.conversation=new e(l.conversation.type,l.conversation.target,l.conversation.line),f.direction=1,f.status=i.Unread,2===f.content.mentionedType)f.status=i.AllMentioned;else if(1===f.content.mentionedType)for(const e of f.content.mentionedTarget)if(e===o.getUserId()){f.status=i.Mentioned;break}return f}}static messageContentFromMessagePayload(e,s){let r=n.getMessageContentClazz(e.type);r||(r=l);let i=new r;i.decode(e);let a=o.getUserId();return i instanceof t&&(i instanceof c?i.operatorId===a&&(i.fromSelf=!0):s===a&&(i.fromSelf=!0)),i}static toMessagePayload(e){return e.messageContent.encode()}}export{p as default};