UNPKG

tjc-sdk

Version:

TIANJI IM SDK

2 lines (1 loc) 3.18 kB
import e from"./conversationType.js";import s from"../client/tjc.js";import{MessageContentType as t}from"../messages/messageContentType.js";import i from"../messages/message.js";import a from"../messages/textMessageContent.js";import r from"../messages/imageMessageContent.js";import o from"../messages/videoMessageContent.js";import m from"../messages/fileMessageContent.js";import n from"../messages/compositeMessageContent.js";import l from"../messages/messagePayload.js";import h from"../messages/soundMessageContent.js";import c from"long";import g from"../messages/unknownMessageContent.js";import f from"../config.js";import{eq as p}from"../util/longUtil.js";class u{id;messageUid;favType;timestamp;conversation;origin;sender;title;url;thumbUrl;data;static fromMessage(i){let a,r=new u;switch(r.messageUid=i.messageUid,r.conversation=i.conversation,r.favType=i.messageContent.type,r.sender=i.from,i.conversation.type){case e.Group:let t=s.getGroupInfo(i.conversation.target,!1);r.origin=t.name;break;case e.Single:r.origin=s.getUserDisplayName(i.from);break;case e.Channel:let a=s.getChannelInfo(i.conversation.target,!1);r.origin=a.name;case e.ChatRoom:}switch(i.messageContent.type){case t.Text:let e=i.messageContent;r.title=e.content;break;case t.Image:let o=i.messageContent;if(r.url=o.remotePath,o.thumbnail){let e={thumb:o.thumbnail};r.data=JSON.stringify(e)}break;case t.Video:let m=i.messageContent;r.url=m.remotePath,a={duration:m.duration},m.thumbnail&&(a.thumb=m.thumbnail),r.data=JSON.stringify(a);break;case t.File:let n=i.messageContent;r.url=n.remotePath,r.title=n.name,a={size:n.size},r.data=JSON.stringify(a);break;case t.Composite_Message:let l=i.messageContent;r.title=l.title;let h=l.encode();if(h.remoteMediaUrl){let e=s.b64_to_utf8(h.binaryContent),t=JSON.parse(e);t.remote_url=h.remoteMediaUrl,e=JSON.stringify(t),h.binaryContent=s.utf8_to_b64(e)}r.data=h.binaryContent;break;case t.Voice:let c=i.messageContent;r.url=c.remotePath,a={duration:c.duration},r.data=JSON.stringify(a);break;default:r.title=i.messageContent.digest(i)}return f.urlRedirect&&(r.url=f.urlRedirect(r.url)),r}toMessage(){if(this.messageUid){let e=s.getMessageByUid(this.messageUid);if(e&&e.content.type!==t.RecallMessage_Notification&&p(this.timestamp,e.timestamp))return e}let e;try{switch(this.favType?this.favType:this.type){case t.Text:e=new a(this.title);break;case t.Image:e=new r(null,this.url,f.DEFAULT_THUMBNAIL_URL.split(",")[1]),this.data&&(e.thumbnail=this.data.thumb);break;case t.Video:e=new o(null,this.url,f.DEFAULT_THUMBNAIL_URL.split(",")[1]),this.data&&(e.thumbnail=this.data.thumb);break;case t.File:e=new m(null,this.url,this.title),this.data&&(e.size=this.data.size);break;case t.Composite_Message:e=new n,e.title=this.title;let s=new l;if(s.type=this.favType,s.content=this.title,this.data){s.binaryContent=this.data;try{let e=JSON.parse(this.data);s.remoteMediaUrl=e.remote_url,s.binaryContent=null}catch(e){}}e.decode(s);break;case t.Voice:e=new h(null,this.url),this.data&&(e.duration=this.data.duration)}}catch(s){e=new g}let u=new i(this.conversation,e);return this.messageUid&&(u.messageUid=c.fromValue(this.messageUid)),u}}export{u as default};