@tencentcloud/lite-chat 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- function e(e,a,i,c){return new(i=i||Promise)(function(s,t){function r(e){try{o(c.next(e))}catch(e){t(e)}}function n(e){try{o(c.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?s(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(r,n)}o((c=c.apply(e,a||[])).next())})}let t=new class{init(e){this.core=e}};var s,o;!function(e){e.MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem"}(s=s||{}),function(e){e[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD"}(o=o||{});let n="MSG_REACTION",r="MSG_EXT",i=0,a=1,c={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},d="16k_zh",u="16k_en",l="16k_yue",g="16k_ja",m="16k_zh-PY",h={[c.ZH_CN]:d,[c.EN_US]:u,[c.YUE_HK]:l,[c.JA_JP]:g,[c.ZH_PY]:m},p=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,_={READ:0,UNREAD:1},v=1,M=2,E=3,f=1,y=2,I=2116,C=2500,S="C2C",R="GROUP",D=20;function A(i){return e(this,void 0,void 0,function*(){var s,n=t.core["appStore"],{messageList:r,conversationID:o}=i,n=n.conversationStore.getConversationMap();let a=null==(s=n.get(o))?void 0:s.peerReadTime;if(!a){let s=o.replace(S,""),r=yield function(s){return e(this,void 0,void 0,function*(){var e={To_Account:s};return t.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([s]);if(r){let e=r["ReadTime"];a=null==e?void 0:e[0],n.has(o)&&(n.get(o).peerReadTime=a)}}r.forEach(e=>{e.time<=a&&!e.isPeerRead&&"out"===e.flow&&(e.isPeerRead=!0)})})}function L(c){return e(this,void 0,void 0,function*(){var e;let{message:s,user:r,appStore:n,constants:{OuterConstant:o}}=t.core,a=n.conversationStore.getConversationMap();if(a.has(c)){let r=null==(e=a.get(c))?void 0:e.userProfile;if(r&&c.startsWith(o.CONV_C2C)){let{avatar:e,nick:s}=r;t.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:c,latestAvatar:e,latestNick:s,isSentByMe:!1})}}var i=((yield r.userProfile.getMyProfile())||{})["data"];if(i){let{avatar:e,nick:t}=i;s.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:c,latestAvatar:e,latestNick:t,isSentByMe:!0})}})}function O(e){let s,r=t.core["message"],{conversationID:n,messageID:o}=e;return s=(s=r.messageDataHandler.getLocalMessageList(n).find(e=>e.ID===o))||r.messageDataHandler.getSparseMessageList(n).find(e=>e.ID===o)}function x(e){return e.map(e=>{var{from:t,to:s,cloudCustomData:r,avatar:n,nick:o,ID:a,clientSequence:i,clientTime:c,messageRandom:l,messageSequence:u,time:d}=e;return{ClientSeq:i,CloudCustomData:r,From_Account:t,From_AccountHeadurl:n,From_AccountNick:o,Id:a,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:l,Random:l,MsgSeq:u,MsgTimeStamp:d,ReceiverId:s,SenderId:t,To_Account:s}})}function T(e){var{From_Account:s,From_AccountHeadurl:r,From_AccountNick:n,GroupId:o,MsgClientTime:a,ClientSeq:i,To_Account:c,MsgTimeStamp:l,TinyId:u,MsgRandom:d,MsgSeq:g}=e;return{from:s,avatar:r,nick:n,clientTime:a,time:l,tinyID:u,random:d,sequence:g,to:c,groupID:o,clientSequence:i,_elements:null==(s=e.MsgBody)?void 0:s.map(e=>{var s=e["MsgType"];return t.core.message.messageFactory.getElementClass(s).parseServerPushElement(e)})}}var q=new class{constructor(){this._reactionsMap=new Map}init(e){var{helper:e,notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{MESSAGE_REACTION_UPDATED:r,MESSAGE_REACTION_UPDATED_SYNC:n}}=this._core=e;e.registerApi({apiName:"addMessageReaction",context:this}),e.registerApi({apiName:"removeMessageReaction",context:this}),e.registerApi({apiName:"getMessageReactions",context:this}),e.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),t.subscribeInnerEvent(s,r,this._handleReactionUpdated,this),t.subscribeInnerEvent(s,n,this._handleReactionSync,this)}addMessageReaction(h,v){return e(this,void 0,void 0,function*(){var{OuterConstant:s,ssoLog:r,helper:n}=this._core,r=(this._validateMessageReactionBusinessCapability(),r.createSSOLogData({method:"addMessageReaction"})),{conversationID:o,ID:a,conversationType:i,from:c,to:l,clientSequence:u,random:d,time:g,sequence:m}=h;try{return this._recordMessageReactedByMe(a,v),i===s.CONV_C2C?yield function(i,c){return e(this,void 0,void 0,function*(){var{from:e,to:s,clientSequence:r,random:n,time:o,reactionID:a}=i,s={From_Account:e,To_Account:s,MsgKey:r+`_${n}_`+o,Reaction:a,Add_Account:[null==(e=c.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:s})})}({from:c,to:l,clientSequence:u,random:d,time:g,reactionID:v},this._core):i===s.CONV_GROUP&&(yield function(n,o){return e(this,void 0,void 0,function*(){var{to:e,reactionID:s,sequence:r}=n,r={GroupId:e,MsgSeq:r,Reaction:s,Add_Account:[null==(e=o.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:r})})}({to:l,reactionID:v,sequence:m},this._core)),r.setLogInfo({message:`conversationID:${o} messageID:${a} reactionID:`+v}).end(),{code:0}}catch(e){this._removeMyReactionRecord(a,v);let t=(e||{})["errorCode"],s=new n.ChatError({functionName:"addMessageReaction",code:t});r.setError(s).end(),console.error("addMessageReaction error: ",e)}})}removeMessageReaction(m,h){return e(this,void 0,void 0,function*(){let{OuterConstant:d,ssoLog:s,helper:r}=this._core;this._validateMessageReactionBusinessCapability();var g=s.createSSOLogData({method:"removeMessageReaction"});try{let{conversationID:s,ID:r,conversationType:n,from:o,to:a,clientSequence:i,random:c,time:l,sequence:u}=m;return this._removeMyReactionRecord(r,h),n===d.CONV_C2C?yield function(i,c){return e(this,void 0,void 0,function*(){var{from:e,to:s,clientSequence:r,random:n,time:o,reactionID:a}=i,s={From_Account:e,To_Account:s,MsgKey:r+`_${n}_`+o,Reaction:a,Del_Account:[null==(e=c.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:s})})}({from:o,to:a,clientSequence:i,random:c,time:l,reactionID:h},this._core):n===d.CONV_GROUP&&(yield function(n,o){return e(this,void 0,void 0,function*(){var{to:e,reactionID:s,sequence:r}=n,r={GroupId:e,MsgSeq:r,Reaction:s,Del_Account:[null==(e=o.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:r},o)})}({to:a,reactionID:h,sequence:u},this._core)),g.setLogInfo({message:`conversationID:${s} messageID:${r} reactionID:`+h}).end(),{code:0}}catch(e){let t=(e||{})["errorCode"],s=new r.ChatError({functionName:"removeMessageReaction",code:t});g.setError(s).end(),console.error("removeMessageReaction error: ",e)}})}getAllUserListOfMessageReaction(d){return e(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();let{message:s,reactionID:r,nextSeq:n=0}=d,o=100<d.count?100:d.count,a=s["conversationID"],{ssoLog:i,helper:c,constants:l}=this._core;try{var u;if(u=a.startsWith(l.OuterConstant.CONV_C2C)?yield function(l){return e(this,void 0,void 0,function*(){var{message:e,nextSeq:s,reactionID:r,count:n}=l,{from:e,to:o,clientSequence:a,random:i,time:c}=e,r={Reaction:r,NextSeq:s,Count:n,From_Account:e,To_Account:o,MsgKey:a+`_${i}_`+c};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:r})})}({message:s,reactionID:r,nextSeq:n,count:o}):yield function(a){return e(this,void 0,void 0,function*(){var{message:e,nextSeq:s,reactionID:r,count:n}=a,{sequence:e,to:o}=e,r={Reaction:r,NextSeq:s,GroupId:o,Count:n,MsgSeq:e};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:r})})}({message:s,reactionID:r,nextSeq:n,count:o})){let{Reaction_Account:e,NextSeq:t}=u,s=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===n,userList:s}}}}catch(e){let t=(e||{})["errorCode"],s=new c.ChatError({functionName:"getAllUserListOfMessageReaction",code:t});i.createSSOLogData({method:"removeMessageReaction"}).setError(s).end(),console.error("getAllUserListOfMessageReaction error: ",e)}})}getMessageReactions(v){return e(this,void 0,void 0,function*(){var s=this._core["constants"],{messageList:r,maxUserCountPerReaction:n=10}=(this._validateMessageReactionBusinessCapability(),v),o=r[0];let a=null,i=new Map,{from:c,to:l,conversationType:u}=o,d=this._generateMessageKeyList(r,i),{Results:g=[]}=(u===s.OuterConstant.CONV_C2C?a=yield function(o){return e(this,void 0,void 0,function*(){var{from:e,to:s,messageKeyList:r,maxUserCountPerReaction:n}=o,e={From_Account:e,To_Account:s,MsgKeyList:r,Count:n};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:e})})}({from:c,to:l,messageKeyList:d,maxUserCountPerReaction:n}):u===s.OuterConstant.CONV_GROUP&&(a=yield function(n){return e(this,void 0,void 0,function*(){var{groupId:e,messageSequenceList:s,maxUserCountPerReaction:r}=n,e={GroupId:e,MsgSeqList:s,Count:r};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:e})})}({groupId:l,messageSequenceList:d,maxUserCountPerReaction:n})),a||{}),m=this._extractUserIDsFromReactionResults(g),h=yield this._getUserProfileMap(m);return{code:0,data:{resultList:g.map(e=>{var{ReactionList:e,MsgSeq:t,MsgKey:s}=e;return{messageID:this._generateMessageID({messageSequence:t,messageKey:s,messageIDMap:i}),reactionList:e.map(e=>{var{Reaction:e,Count:t,Reaction_Account:s,ReactedByMe:r}=e;return{reactionID:e,totalUserCount:t,partialUserList:this._generatePartialUserInfo({userIDList:s,userProfileMap:h}),reactedByMyself:1===r}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(e){let t=[];return null!=e&&e.forEach(e=>{var{ReactionList:e=[]}=e;e.forEach(e=>{e.Reaction_Account&&t.push(...e.Reaction_Account)})}),t}_getUserProfileList(s){return e(this,void 0,void 0,function*(){var e;try{var t=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:s});return t?t.data:[]}catch(e){return[]}})}_getUserProfileMap(t){return e(this,void 0,void 0,function*(){let r=new Map;return(yield this._getUserProfileList(t)).forEach(e=>{var{nick:e,avatar:t,userID:s}=e;r.set(s,{nick:e,avatar:t,userID:s})}),r})}_recordMessageReactedByMe(e,t){e=e+"-"+t;this._reactionsMap.has(e)?this._reactionsMap.get(e).reactedByMe=!0:this._reactionsMap.set(e,{reactedByMe:!0})}_removeMyReactionRecord(e,t){e=e+"-"+t;this._reactionsMap.has(e)&&(this._reactionsMap.get(e).reactedByMe=!1)}_recordMessageReactionInfo(e){var{messageID:e,reactionID:t,reactionInfo:s}=e,e=e+"-"+t,t=this._reactionsMap.get(e)||{};this._reactionsMap.set(e,Object.assign(Object.assign({},t),s))}_validateMessageReactionBusinessCapability(){var{helper:e,constants:t}=this._core;if(!e.checkBusinessCapabilityBits(n))throw new e.ChatError({functionName:"addMessageReaction",code:t.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(t){let s=t["MsgReactionNotifyList"],{notificationCenter:d,constants:g}=this._core;s.forEach(u=>e(this,void 0,void 0,function*(){let{C2CMsgInfo:e,GroupMsgInfo:t,MsgReactionSummary:s}=u,{TinyId:r,MsgClientTime:n,MsgRandom:o}=Object.assign(Object.assign({},e),t),a=r+`-${n}-`+o,i=this._extractUserIDsFromReactionResults([{ReactionList:s}]),c=yield this._getUserProfileMap(i),l=s.map(e=>{var{Reaction:t,Reaction_Account:s}=e,r=this._generatePartialUserInfo({userIDList:s,userProfileMap:c}),s=s?e.Count:0,e=(null==(e=this._reactionsMap.get(a+"-"+t))?void 0:e.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:a,reactionID:t,reactionInfo:{reactionID:t,totalUserCount:s,partialUserList:r}}),{reactionID:t,totalUserCount:s,partialUserList:r,reactedByMyself:e}});d.emitOuterEvent(g.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:g.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:a,reactionList:l}})}))}_handleReactionSync(e){var{notificationCenter:t,constants:s}=this._core,{C2CMsgInfo:e={},GroupMsgInfo:r={},Reaction:n,OperateType:o}=e.MsgReactionNotify,{TinyId:e="",MsgClientTime:r=0,MsgRandom:a=0}=Object.assign(Object.assign({},e),r),r=e+`-${r}-`+a,a=r+"-"+n;if(1===o?this._recordMessageReactedByMe(r,n):this._removeMyReactionRecord(r,n),null!=(e=this._reactionsMap.get(a))&&e.reactionID){let e=this._reactionsMap.get(a);e.reactedByMyself=1===o,t.emitOuterEvent(s.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:s.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:r,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){let s=[];return null!=e&&e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){var{messageSequence:e,messageKey:t,messageIDMap:s}=e;return t?s.get(t):s.get(e)}_generateMessageKeyList(e,n){var t=this._core["constants"],s=e[0]["conversationType"];let r=[];return s===t.OuterConstant.CONV_C2C?r=e.map(e=>{var{clientSequence:e,random:t,time:s,ID:r}=e,e=e+`_${t}_`+s;return n.set(e,r),e}):s===t.OuterConstant.CONV_GROUP&&(r=e.map(e=>{var{ID:e,sequence:t}=e;return n.set(t,e),t})),r}},b=new class{init(e){var{helper:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:s,GROUP_MESSAGE_READ_RECEIPT:r},notificationCenter:n}=this._core=e;e.registerApi({apiName:"sendMessageReadReceipt",context:this}),e.registerApi({apiName:"getMessageReadReceiptList",context:this}),e.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),n.subscribeInnerEvent(t,s,this._handleC2CMessageReadReceipt,this),n.subscribeInnerEvent(t,r,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(s){return e(this,void 0,void 0,function*(){var{common:r,constants:n}=this._core,o=this._filterValidMessageSendByOther(s);if(0===o.length)throw new r.ChatError({code:n.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{let s=o[0]["conversationType"];return s===n.OuterConstant.CONV_C2C?yield function(r){return e(this,void 0,void 0,function*(){var{common:e,constants:s}=t.core,s={Peer_Account:r[0].conversationID.replace(s.OuterConstant.CONV_C2C,""),C2CMsgInfo:r.map(e=>{var{from:e,to:t,sequence:s,random:r,time:n,clientTime:o}=e;return{From_Account:e,To_Account:t,MsgSeq:s,MsgRandom:r,MsgTime:n,MsgClientTime:o}})};return e.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:s})})}(o):yield function(r){return e(this,void 0,void 0,function*(){var{common:e,constants:s}=t.core,s={GroupId:r[0].conversationID.replace(s.OuterConstant.CONV_GROUP,""),MsgSeqList:r.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:s})})}(o),{code:0,data:{}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getMessageReadReceiptList(o){return e(this,void 0,void 0,function*(){let{common:r,constants:n}=this._core;try{let s=o[0]["conversationType"];if(s===n.OuterConstant.CONV_GROUP){let n=this._filterValidMessageSendByMe(o);if(0<(null==n?void 0:n.length)){let s=yield function(r){return e(this,void 0,void 0,function*(){var{common:e,constants:s}=t.core,s={GroupId:r[0].conversationID.replace(s.OuterConstant.CONV_GROUP,""),MsgSeqList:r.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:s})})}(n),r=(s||{})["GroupMsgReceiptList"];this._updateGroupMessagesReadReceiptInfo({messageList:o,readReceiptList:r})}}return{code:0,data:{messageList:o}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getGroupMessageReadMemberList(g){return e(this,void 0,void 0,function*(){let{constants:s,common:r}=this._core,{message:n,filter:a=_.READ,cursor:i=""}=g,{conversationID:o,sequence:c,ID:l}=n,u=o.replace(s.OuterConstant.CONV_GROUP,""),d=100<=g.count?100:g.count;try{let o=yield function(a){return e(this,void 0,void 0,function*(){var{sequence:e,groupID:s,filter:r,cursor:n,count:o}=a,e={MsgSeq:e,GroupId:s,Filter:r,Cursor:n,Num:o};return t.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:e})})}({groupID:u,sequence:c,filter:a,cursor:i,count:d});if(o){let{Cursor:e,IsFinish:t,UnreadList:s,ReadList:r}=o,n={cursor:e,isCompleted:1===t,messageID:l,unreadUserIDList:[],readUserIDList:[]};return a===_.READ?n.readUserIDList=r.map(e=>e.Read_Account):a===_.UNREAD&&(n.unreadUserIDList=s.map(e=>e.Unread_Account)),{code:0,data:n}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}_handleC2CMessageReadReceipt(e){let n=[],{constants:t,helper:s}=this._core,{C2cMsgInfo:o,PeerReadTime:a,Peer_Account:i}=e;if(!s.isEmpty(o)){let r=""+t.OuterConstant.CONV_C2C+i;null!=o&&o.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s}=e,e=e+`-${t}-`+s,t=O({conversationID:r,messageID:e});t&&!t.readReceiptInfo.isPeerRead&&(t.readReceiptInfo.isPeerRead=!0,t.readReceiptInfo.timestamp=a,n.push({userID:i,messageID:e,isPeerRead:!0,timestamp:a}))}),this._emitReadReceiptEventIfNeed(n)}}_updateGroupMessagesReadReceiptInfo(e){let{messageList:t,readReceiptList:s}=e,r=new Map;t.forEach(e=>{r.set(e.sequence,e)}),null!=s&&s.forEach(e=>{var t,s;0===e.Code&&({MsgSeq:e,ReadNum:t,UnreadNum:s}=e,e=r.get(e))&&(e.readReceiptInfo.readCount=t,e.readReceiptInfo.unreadCount=s)})}_handleGroupMessageReadReceipt(e){let i=[],s=this._core["constants"],t=e["GroupTips"];t.forEach(e=>{let{MsgBody:{GroupMsgReceiptList:t},GroupInfo:{GroupId:o}}=e,a=""+s.OuterConstant.CONV_GROUP+o;null!=t&&t.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s,ReadNum:r,UnreadNum:n}=e,e=e+`-${t}-`+s,t=O({conversationID:a,messageID:e}),s={groupID:o,messageID:e,readCount:0,unreadCount:0};t&&("number"==typeof r&&(t.readReceiptInfo.readCount=r,s.readCount=r),"number"==typeof n&&(t.readReceiptInfo.unreadCount=n,s.unreadCount=n),i.push(s))})}),this._emitReadReceiptEventIfNeed(i)}_emitReadReceiptEventIfNeed(e){var{notificationCenter:t,OuterEvent:s}=this._core;0<e.length&&t.emitOuterEvent(s.MESSAGE_READ_RECEIPT_RECEIVED,{name:s.MESSAGE_READ_RECEIPT_RECEIVED,data:e})}_filterValidMessageSendByOther(e){return this._filterNeedReadReceiptMessages(e).filter(e=>{e=e.from;return e!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(e){let s=this._core.constants["OuterConstant"];return this._filterNeedReadReceiptMessages(e).filter(e=>{var{from:e,status:t}=e;return e===this._core.common.getCurrentUserID()&&t===s.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(e){return e.filter(e=>!0===e.needReadReceipt)}dispose(){var{InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:t,GROUP_MESSAGE_READ_RECEIPT:s},notificationCenter:r}=this._core;r.unSubscribeInnerEvent(e,t,this._handleC2CMessageReadReceipt,this),r.unSubscribeInnerEvent(e,s,this._handleGroupMessageReadReceipt,this)}};function w(i,c,l){return e(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=t.core["common"],{from:s,to:r,clientSequence:n,random:o,time:a}=i;return e({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:s,To_Account:r,MsgKey:n+`_${o}_`+a,OperateType:l,ExtensionList:c}})})}function N(n,o,a){return e(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=t.core["common"],{to:s,sequence:r}=n;return e({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:s,MsgSeq:r,OperateType:a,ExtensionList:o}})})}var k=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){var{notificationCenter:e,helper:{registerApi:t},InnerEvent:{MESSAGE_PUSH:s,LOGOUT:r},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core=e;t({apiName:"setMessageExtensions",context:this}),t({apiName:"getMessageExtensions",context:this}),t({apiName:"deleteMessageExtensions",context:this}),e.subscribeInnerEvent(s,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(r,this.reset,this)}setMessageExtensions(d,r){return e(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");let{constants:{OuterConstant:s},ssoLog:e}=this._core,{ID:n,conversationID:o,sequence:a,time:i,conversationType:t}=d,c=e.createSSOLogData({method:"setMessageExtensions"}),l=r;20<r.length&&(l=r.slice(0,20),console.warn("the length of extensions cannot exceed 20"));var u=this._generateServerExtensions(d,l);try{let r;if(t===s.CONV_C2C?r=yield w(d,u,v):t===s.CONV_GROUP&&(r=yield N(d,u,v)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(d,r);return c.setLogInfo({message:`convID:${o} messageID:${n} sequence:${a}
2
- time:${i} count:${l.length} successCount:${t} failCount:`+s}).end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"setMessageExtensions",code:e});throw c.setError(t).end(),t}})}getMessageExtensions(a){return e(this,void 0,void 0,function*(){var{isUndefined:r}=this._core["utils"];this._validateMessageExtensionBusinessCapability("getMessageExtensions");let{conversationID:e,ID:s,sequence:t,time:n}=a,o=this._core.ssoLog.createSSOLogData({method:"getMessageExtensions"});o.setLogInfo({message:`convID:${e} messageID:${s} sequence:${t} time:`+n});try{let e,t=(this._completedFetchExtensions.has(s)&&(e=this._extensionsLatestSequenceMap.get(s)),yield this._fetchMessageExtensions(a,e));return r(e)&&1<t.length&&this._completedFetchExtensions.add(s),o.end(),{code:0,data:{extensions:t}}}catch(r){let{errorCode:e,errorInfo:t=""}=r||{},s=new this._core.common.ChatError({code:e,message:t});throw o.setError(s).end(),s}})}deleteMessageExtensions(g,m){return e(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");let{utils:{isEmpty:s},constants:{OuterConstant:e},ssoLog:t}=this._core,{conversationType:n,conversationID:r,sequence:o,ID:a,time:i}=g,c=E,l=[];s(m)||(c=M,null==m)||m.forEach(e=>{l.push({key:e,value:"",seq:0})});var u=t.createSSOLogData({method:"deleteMessageExtensions"}),d=(u.setLogInfo({message:`convID:${r} messageID:${a} sequence:${o} time:${i} operateType:`+c}),this._generateServerExtensions(g,l));try{let r;if(n===e.CONV_C2C?r=yield w(g,d,c):n===e.CONV_GROUP&&(r=yield N(g,d,c)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(g,r);return u.setMoreMessage(`success count:${t} fail count:`+s),u.end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:e});throw u.setError(t).end(),t}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=this._core;e.unSubscribeInnerEvent(t,r,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){let s=e["ID"],r=t["Seq"],n=t.ExtensionList||[],o=[],a=0,i=0,c=[];return n.forEach(e=>{var{ErrorCode:e,Extension:t}=e,{Key:t,Value:s,Seq:r}=t;o.push({code:e,key:t,value:s}),0===e?a++:i++,c.push({key:t,value:s,seq:r})}),this._extensionsLatestSequenceMap.set(s,r),0<c.length&&this._updateLocalExtensions(e.ID,c),{resultList:o,successCount:a,failureCount:i}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);let r=this._messageExtensionsMap.get(e);null!=t&&t.forEach(e=>{var{key:e,seq:t,value:s=""}=e;null!=r&&r.set(e,{value:s,seq:t})})}_fetchMessageExtensions(c,r){return e(this,void 0,void 0,function*(){let{constants:{OuterConstant:e},utils:{isEmpty:a}}=this._core;try{let o;var{conversationType:s,ID:i}=c;if(s===e.CONV_C2C?o=yield function(e,s){var r=t.core["common"]["buildAndSendPacket"],{from:e,to:n,clientSequence:o,random:a,time:i}=e;return r({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:e,To_Account:n,MsgKey:o+`_${a}_`+i,StartSeq:s}})}(c,r):s===e.CONV_GROUP&&(o=yield function(e,s){var r=t.core["common"]["buildAndSendPacket"],{to:e,sequence:n}=e;return r({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:e,MsgSeq:n,StartSeq:s}})}(c,r)),o){let{LatestSeq:e,ClearSeq:t,CompleteFlag:s}=o,r=(o.ExtensionList||[]).map(e=>({key:e.Key,value:e.Value,seq:e.Seq}));if(this._updateLocalExtensions(i,r),this._clearLocationExtensions(i,t),this._extensionsLatestSequenceMap.set(i,e),1!==s){let e=r[r.length-1].seq+1;return this._fetchMessageExtensions(c,e)}let n=[];if(this._messageExtensionsMap.has(i)){let e=this._messageExtensionsMap.get(i);null!=e&&e.forEach((e,t)=>{e=e.value;a(e)||n.push({key:t,value:e})})}return n}}catch(e){console.error(e)}})}_clearLocationExtensions(e,r){if(!(r<=0)&&this._messageExtensionsMap.has(e)){let s=this._messageExtensionsMap.get(e);null!=s&&s.forEach((e,t)=>{e.seq<=r&&s.delete(t)})}}_generateServerExtensions(e,t){var s=e["ID"];if(this._messageExtensionsMap.has(s)){let r=this._messageExtensionsMap.get(s);return t.map(e=>{var{key:e,value:t}=e;let s=0;return{Key:e,Value:t,Seq:s=null!=r&&r.has(e)?null==(t=r.get(e))?void 0:t.seq:s}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){var{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits(r))throw new t.ChatError({functionName:e,code:s.ERROR_CODE.NO_USE,replacement1:e})}_handleMessageExtensionsNotify(e){var{SetKVInfo:e,DeleteKVInfo:t,ClearKVInfo:s,MsgOptType:r,TinyId:n,MsgLastSeq:o,ExtensionC2cMsgInfo:a,ExtensionGroupMsgInfo:i}=(null==e?void 0:e.MsgExtensionNotify)||{},{MsgClientTime:a,MsgRandom:i}=a||i||{},n=n+`-${a}-`+i;this._extensionsLatestSequenceMap.set(n,o),r===v?this._handleMessageExtensionsUpdated({messageID:n,updateMessageExtensionsInfo:e}):r===M?this._handleMessageExtensionsDeleted({messageID:n,deleteMessageExtensionsInfo:t}):r===E&&this._handleMessageExtensionsCleared({messageID:n,clearMessageExtensionsInfo:s})}_handleMessageExtensionsUpdated(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,updateMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push({key:e.Key,value:e.Value}),{key:e.Key,value:e.Value,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_UPDATED,{name:s.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:r,extensions:o}})}_handleMessageExtensionsDeleted(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,deleteMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push(e.Key),{key:e.Key,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_DELETED,{name:s.MESSAGE_EXTENSIONS_DELETED,data:{messageID:r,keyList:o}})}_handleMessageExtensionsCleared(e){let{notificationCenter:t,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:s},utils:{isEmpty:r}}=this._core,{messageID:n,clearMessageExtensionsInfo:o=[]}=e,a=[];o.forEach(e=>{let s=e["ClearMsgSeq"];this._messageExtensionsMap.has(n)&&(this._messageExtensionsMap.get(n)||[]).forEach((e,t)=>{e.seq<=s&&!r(e.value)&&a.push(t)}),this._clearLocationExtensions(n,s)}),t.emitOuterEvent(s,{name:s,data:{messageID:n,keyList:a}})}};let G={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{OuterConstant:s}=t.core["constants"];return e.status!==s.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},P={setMessageExtensions:[G,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[G],deleteMessageExtensions:[G]},U=Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>"GROUP"===e||"conversationType should be GROUP."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var t="string"==typeof(null==e?void 0:e.text)&&("string"!=typeof e.text||0!==(null==(t=null==e?void 0:e.text)?void 0:t.length))||"payload.text is invalid.";return!0!==t?t:!(null!=e&&e.atUserList&&!Array.isArray(e.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>!(!e.startsWith("C2C")&&!e.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{isString:s,isNumber:r}=t.core["utils"];return s(null==e?void 0:e.description)?r(null==e?void 0:e.longitude)?!!r(null==e?void 0:e.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"!=typeof e?"maxUserCountPerReaction is invalid.":!(e<0||10<e)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>"success"===e.status||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),P),F=Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0});class ${constructor(e){this._core=e}deleteMessage(s){return e(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={From_Account:this._core.common.getCurrentUserID(),To_Account:e,MsgKeyList:t};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:e})})}revokeMessage(o){return e(this,void 0,void 0,function*(){var{to:e,from:t,sequence:s,time:r,random:n}=o;return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:{MsgInfo:{From_Account:t,To_Account:e,MsgSeq:s,MsgRandom:n,MsgTimeStamp:r}}})})}}class V{constructor(e){this._core=e}deleteMessage(s){return e(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={GroupId:e,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:t};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:e})})}revokeMessage(s){return e(this,void 0,void 0,function*(){var{to:e,sequence:t}=s;return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:{GroupId:e,MsgSeqList:[{MsgSeq:t}]}})})}}class H{constructor(e){this._core=e}generateRevokeMessage(e){var{conversationID:e,sequence:t,random:s,tinyID:r,clientTime:n,revokeReason:o,revoker:a}=e;let i={};var c=this._core.message["messageDataHandler"];return(i=c.revokeMessage({conversationID:e,sequence:t,random:s,revoker:a}))||(i={conversationID:e,sequence:t},r&&n&&s&&(i.ID=r+`-${n}-`+s)),i=Object.assign(Object.assign({},i),{revoker:a,revokeReason:o,revokerInfo:{userID:a,nick:"",avatar:""}})}updateRevokerInfo(t){return e(this,void 0,void 0,function*(){var e=t.map(e=>e.revoker);try{let s=yield this._fetchUserInfos(e);s&&t.forEach(e=>{var t=e["revoker"];s[t]&&(e.revokerInfo.nick=s[t].nick||"",e.revokerInfo.avatar=s[t].avatar||"",e.revokerInfo.userID=t)})}catch(e){console.debug(e)}})}_fetchUserInfos(t){return e(this,void 0,void 0,function*(){var e=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:t});return null!=e&&e.data?null==(e=e.data)?void 0:e.reduce((e,{userID:t,nick:s,avatar:r})=>(e[t]={nick:s||"",avatar:r||""},e),{}):null})}}var K=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new V(e),this._c2cMessageAction=new $(e),this._messageHelper=new H(e);e=e.helper;e.registerApi({apiName:"deleteMessage",context:this}),e.registerApi({apiName:"revokeMessage",context:this}),e.registerApi({apiName:"resendMessage",context:this}),e.registerApi({apiName:"findMessage",context:this})}deleteMessage(t){return e(this,void 0,void 0,function*(){let c=[],l=[],{conversationID:u,conversationType:d}=t[0],e=u.replace(d,"");if("@TIM#SYSTEM"===d)throw new this._core.helper.ChatError({code:I});if(t.forEach(e=>{var{conversationID:t,conversationType:s,status:r,_onlineOnlyFlag:n,sequence:o,random:a,time:i}=e||{};if("success"===r&&t===u&&s===d){if(!n){let e="C2C"===s?o+`_${a}_`+i:String(o);c.push(e)}l.push(e)}}),0===c.length)return this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}};30<c.length&&(c=c.slice(0,30),l=l.slice(0,30));try{return"C2C"===d?yield this._c2cMessageAction.deleteMessage({to:e,messageIdentifiers:c}):yield this._groupMessageAction.deleteMessage({to:e,messageIdentifiers:c}),this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}}}catch(c){let e=c["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessage",code:e})}})}revokeMessage(o){return e(this,void 0,void 0,function*(){let s,r=this._core.ssoLog.createSSOLogData({method:"revokeMessage"}),{conversationType:e,isRevoked:t}=o;var n;if("@TIM#SYSTEM"===e)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(t)throw new this._core.helper.ChatError({message:"message has been revoked"});r.setLogInfo({message:`type:${o.type} from:${o.from} to:`+o.to});try{if(n="C2C"===e?yield this._c2cMessageAction.revokeMessage(o):yield this._groupMessageAction.revokeMessage(o)){let e=n["RecallRetList"],t=(null==(s=null==e?void 0:e[0])?void 0:s.RetCode)||0;if(0!==t)throw new this._core.helper.ChatError({code:t});return r.end(),yield this._handleRevokeMessageSuccess(o),{code:0,data:{message:o}}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"revokeMessage",code:e});throw this._core.ssoLog.getSSOLogData("revokeMessage").setError(t).end(),t}})}resendMessage(t,s){return e(this,void 0,void 0,function*(){var e;return t.isResend=!0,t.status="unSend",null==(e=null==(e=this._core)?void 0:e.apiMap)?void 0:e.sendMessage(t,s)})}findMessage(e){return this._core.message.messageDataHandler.findMessage(e)}_handleDeleteMessageSuccess(n){if(0!==n.length){let{message:{messageDataHandler:s},common:{isTopic:e},notificationCenter:t,InnerEvent:r}=this._core;n.forEach(t=>{t.isDeleted=!0;var e=s.getLocalMessageList(t.conversationID);null!=e&&e.forEach(e=>{e.ID===t.ID&&(e.isDeleted=!0)})});var{conversationID:n=""}=n[0];e(n)?t.emitInnerEvent(r.TOPIC_MESSAGE_DELETED,n):t.emitInnerEvent(r.MESSAGE_DELETED,n)}}_handleRevokeMessageSuccess(n){return e(this,void 0,void 0,function*(){var e=null==(e=this._core.store.get("login"))?void 0:e.userId,{conversationID:t,sequence:s,random:r}=n;this._core.message.messageDataHandler.revokeMessage({conversationID:t,sequence:s,random:r,revoker:e}),yield this._messageHelper.updateRevokerInfo([n])})}};class B{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Index:e,Data:t}=e;return new B({index:e,data:t})}constructor(e){this.type=s.MSG_FACE;var{index:e,data:t}=e;this.content={index:e,data:t}}validateBeforeSend(){var e;return"number"==typeof(null==(e=this.content)?void 0:e.index)&&"string"==typeof(null==(e=this.content)?void 0:e.data)?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{index:e,data:t}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Index:e,Data:t}}}}class W{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Desc:e,Longitude:t,Latitude:s}=e;return new W({description:e,longitude:t,latitude:s})}constructor(e){this.type=s.MSG_LOCATION;var{description:e,longitude:t,latitude:r}=e;this.content={description:e,longitude:t,latitude:r}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{description:e,longitude:t,latitude:s}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Desc:e,Longitude:t,Latitude:s}}}}var j=new class{init(e){(this._core=e).message.messageFactory.registerElementClass(s.MSG_FACE,B),e.message.messageFactory.registerElementClass(s.MSG_LOCATION,W),e.helper.registerApi({apiName:"createFaceMessage",context:this}),e.helper.registerApi({apiName:"createTextAtMessage",context:this}),e.helper.registerApi({apiName:"createForwardMessage",context:this}),e.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(e){var t,s;return e?({index:t,data:s}=(null==e?void 0:e.payload)||{},t=new B({index:t,data:s}),s=this._core.common.getCurrentUserID(),(e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),e):null}createTextAtMessage(e){let r=((null==e?void 0:e.payload)||{})["atUserList"],n=this._core.apiMap.createTextMessage(e),o=this._core["OuterConstant"];if(!n)return null;if(Array.isArray(r)){let t=[],s=[];r.forEach(e=>{e!==o.MSG_AT_ALL?(t.push({GroupAtAllFlag:i,GroupAt_Account:e}),s.push(e)):(t.push({GroupAtAllFlag:a}),s.push(o.MSG_AT_ALL))}),n._groupAtInfoList=t,n.atUserList=s}return n}createForwardMessage(e){var{helper:t,OuterConstant:s}=this._core,{to:e,conversationType:r,priority:n,payload:o,needReadReceipt:a,receiverList:i,cloudCustomData:c="",isSupportExtension:l=!1}=e;if(!Array.isArray(o._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(o.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});s=this._core.common.getCurrentUserID(),t=this._core.message.messageFactory.createMessage({to:e,from:s,conversationType:r,isPlaceMessage:0,priority:n,payload:o,needReadReceipt:a,isSupportExtension:l,cloudCustomData:c,receiverList:i});return t.setRelayFlag(!0),t.setElement(o._elements[0]),t}createLocationMessage(e){var t,s,r;return e?({description:t,longitude:s,latitude:r}=(null==e?void 0:e.payload)||{},t=new W({description:t,longitude:s,latitude:r}),s=this._core.common.getCurrentUserID(),(r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),r):null}};class Y{init(e){this._messageHelper=new H(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s},helper:{registerWorkflowStep:r},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:o}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this),r(n.SYNC_SERVER_INFO_AFTER_RE_ONLINE,o.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(e){e=e.C2cNotifyMsgArray;null!=e&&e.forEach(e=>{Object.keys(e).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(e)})}_handleC2CRevokeMessage(t){return e(this,void 0,void 0,function*(){try{var{C2cWithdrawInfoArray:e}=t["WithdrawC2cMsgNotify"];yield this._parseAndEmitC2CRevokedMessages(e)}catch(e){console.debug(e)}})}_parseAndEmitC2CRevokedMessages(s){return e(this,void 0,void 0,function*(){let a=[],{notificationCenter:e,OuterEvent:t,common:{getCurrentUserID:i}}=this._core;s.forEach(e=>{var{MsgRand:e,MsgSeq:t,To_Account:s,From_Account:r,RevokerInfo:{Revoker_Account:n,Revoke_Reason:o,Reason:o=o}}=e,s=i()===r?"C2C"+s:"C2C"+r,r=this._messageHelper.generateRevokeMessage({conversationID:s,sequence:t,random:e,revoker:n,revokeReason:o});a.push(r)}),0<a.length&&(yield this._messageHelper.updateRevokerInfo(a),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:a}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return e(this,void 0,void 0,function*(){var e=t.result["revokedMessageList"];yield this._parseAndEmitC2CRevokedMessages(e)})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this)}}class J{init(e){this._messageHelper=new H(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(e){e=e.GroupTips;null!=e&&e.forEach(e=>{var t;Array.isArray(null==(t=null==e?void 0:e.MsgBody)?void 0:t.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(e)})}_handleGroupRevokeMessage(o){return e(this,void 0,void 0,function*(){try{let{RevokerInfo:c,MsgBody:{GroupWithdrawInfoArray:e},GroupInfo:l}=o,u=[],d=[],{notificationCenter:t,OuterEvent:s,utils:{isEmpty:r},common:{isCommunity:n}}=this._core,g=!1;l&&(g=n({groupID:l.GroupId})||!r(l.TopicId)),e.forEach(e=>{var{Random:e,MsgSeq:t,GroupId:s,MsgClientTime:r,TinyId:n,TopicId:o,RevokerInfo:{Revoker_Account:a=(null==c?void 0:c.Revoker_Account)||"",Reason:i=(null==c?void 0:c.Reason)||""}}=e,o=this._messageHelper.generateRevokeMessage({conversationID:o?"GROUP"+o:"GROUP"+s,sequence:t,random:e,tinyID:n,clientTime:r,revoker:a,revokeReason:i});(g?(o.revokerInfo.nick=l.From_AccountNick,o.revokerInfo.avatar=l.From_AccountHeadurl,u):d).push(o)}),0<d.length&&(yield this._messageHelper.updateRevokerInfo(d),u.push(...d)),0!==u.length&&t.emitOuterEvent(s.MESSAGE_REVOKED,{name:s.MESSAGE_REVOKED,data:u})}catch(e){console.debug(e)}})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}}var X=new class{constructor(){this._c2cMessageReceiver=new Y,this._groupMessageReceiver=new J}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class Z{constructor(e){var t=(this._core=e)["constants"];this._messageHelper=new H(e),e.helper.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.GROUP_REVOKED_NOTICE_RECOVER,this._recoverGroupRevokeNotice,this)}getRoamingMessagesByAnchor(e){return this._core.message.messageHistory.getGroupRoamingMessagesByAnchor(e)}_recoverGroupRevokeNotice(e){let{recoverRevokeNoticeGroupIDList:t=[]}=e.result,r=this._filterValidGroupIDList(t);0!==r.length&&(e=Math.min(Math.ceil(r.length/10),5),Promise.all(Array.from({length:e},(e,t)=>{var t=10*t,s=Math.min(10+t,r.length);return this._fetchGroupRevokeNotice(r.slice(t,s))})).catch(e=>console.error(e)))}_fetchGroupRevokeNotice(s){return e(this,void 0,void 0,function*(){var r;try{var n=yield function(a){return e(this,void 0,void 0,function*(){let{appStore:e,constants:{OuterConstant:r},common:n}=t.core,o=e.groupStore.getGroupMap(),s={NotifyReqList:a.map(e=>{var s=o.get(e);return{NotifyType:1,Limit:20,Type:n.isCommunity({type:s.type,groupID:e})?r.GRP_COMMUNITY:void 0,GroupId:e,BeginTime:(null==s?void 0:s._lastRevokedTime)||0,EndTime:1e3*t.core.common.timeManager.getServerTimeMs()}})||[]};return n.buildAndSendPacket({servcmd:"group_open_http_svc.batch_get_group_notify",data:s})})}(s);if(n){let s=[];null!=(r=null==n?void 0:n.NotifyRspList)&&r.forEach(e=>{var{GroupId:e,NotifyMsgList:t}=e,e=this._parseServerRevokeMessageList({groupID:e,serverRevokeMessageList:t});s.push(...e)}),0!==s.length&&(yield this._emitMessageRevokedEvent(s))}}catch(e){console.error(e)}})}_parseServerRevokeMessageList(e){let{serverRevokeMessageList:t,groupID:a}=e,i=[];return null!=t&&t.forEach(e=>{var{ClientTime:e,MsgSeq:t,Random:s,RevokerInfo:{Revoker_Account:r="",Reason:n=""}}=e,o="GROUP"+a,o=this._messageHelper.generateRevokeMessage({conversationID:o,sequence:t,random:s,clientTime:e,revoker:r,revokeReason:n});i.push(o)}),i}_filterValidGroupIDList(e){let{OuterConstant:t}=this._core["constants"],s=this._core.appStore.groupStore.getGroupMap();return(null==e?void 0:e.filter(e=>{return!(!s.has(e)||(null==(e=s.get(e))?void 0:e.type)===t.GRP_AVCHATROOM||null!=e&&e.isSupportTopic)}))||[]}_emitMessageRevokedEvent(s){return e(this,void 0,void 0,function*(){var{notificationCenter:e,OuterEvent:t}=this._core;yield this._messageHelper.updateRevokerInfo(s),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:s})})}}class z{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new H(e)}getRoamingMessagesByAnchor(h){return e(this,void 0,void 0,function*(){var n;try{var{conversationID:o,count:a,messageID:i,time:c,direction:l}=h;let s=c,r="";if(!c){let e=i?this._core.message.messageDataHandler.findMessage(i):null;if(s=(null==e?void 0:e.time)||0,i&&this._historyMessageListFetchAnchors.has(o)){let e=this._historyMessageListFetchAnchors.get(o);s=e.lastMessageTime,r=e.messageKey}}var u=o.replace(S,""),d=yield function(a){return e(this,void 0,void 0,function*(){var{peerAccount:e,count:s,lastMessageTime:r,messageKey:n,direction:o}=a,e={Peer_Account:e,MaxCnt:s,WithRecalledMsg:1,LastMsgTime:r,MsgKey:n,GetDirection:o};return t.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:e})})}({count:a,lastMessageTime:s,messageKey:r,peerAccount:u,direction:l});if(d){let{MsgList:r=[],Complete:e,MsgKey:t,LastMsgTime:s}=d;this._historyMessageListFetchAnchors.set(o,{messageKey:t,lastMessageTime:s});var g=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);g.push(t)}var m=this._core.message.messageHelper.filterValidMessages(g);return{messageList:m,nextReqMessageIDFromServer:null==(n=m[0])?void 0:n.ID,lastMessageTime:s,hasNoMoreHistoryMessage:1===e}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}clearHistoryMessageListFetchAnchors(e){this._historyMessageListFetchAnchors.delete(e)}reset(){this._historyMessageListFetchAnchors.clear()}_parseMessage(e){var t=S,e=this._core.message.messageHelper.parseServerPushMessage(e),t=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:t,flow:"in"}));return t.setElement(e.elements),t}}var Q=new class{constructor(){this._clearedConversations=new Set,this._fetchedCompleteConversations=new Set}init(e){this._core=e,this._groupMessageHistory=new Z(e),this._c2cMessageHistory=new z(e),this._messageHelper=new H(e),e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(s){return e(this,void 0,void 0,function*(){try{var{conversationID:i,nextReqMessageID:c}=s,e=D;if("@TIM#SYSTEM"===i)return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};var l=this._core.ssoLog.createSSOLogData({method:"getMessageList"}),u=this._getAvailableLocalMessagesCount({conversationID:i,nextReqMessageID:c});if(this._needFetchHistoryMessageList({conversationID:i,availableLocalMessagesCount:u,targetCount:e})){let a=null;if(i.startsWith(R)?a=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:i,sequence:Number(c),count:e,direction:o.FORWARD}):i.startsWith(S)&&(a=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:i,messageID:c,count:e,direction:o.FORWARD})),a){let{nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:s,messageList:r}=a,n=this._core.message.messageDataHandler.prependLocalMessageList({messageList:r,conversationID:i});var d=i,{appStore:g,message:m,OuterConstant:h}=t.core,g=g.conversationStore.getConversation(d),v=m.messageDataHandler.getLocalMessageList(d);if(g&&0!==v.length&&d!==h.CONV_SYSTEM){var p=[];for(let e=0;e<v.length;e++)"in"!==v[e].flow?"out"!==v[e].flow||v[e].isRead||v[e].setIsRead(!0):p.push(v[e]);let t=0;if(g.type===h.CONV_C2C){let e=p.slice(-g.unreadCount).filter(e=>e.isRevoked).length;t=p.length-g.unreadCount-e}else t=p.length-g.unreadCount;for(let e=0;e<t&&!p[e].isRead;e++)p[e].setIsRead(!0)}yield L(i),i.startsWith(S)&&(yield A({messageList:r,conversationID:i}));var _=this._core.message.messageDataHandler.getLocalMessageList(i).slice(0,n.length+u),M=_.filter(e=>e.isRevoked),E=(yield this._messageHelper.updateRevokerInfo(M),{nextReqMessageID:s?"":String(e),messageList:_,isCompleted:s}),y=_.map(e=>e.sequence);return l.setLogInfo({message:`conversationID: ${i} nextReqMessageID: ${c}
3
- availableLocalMessagesCount: ${u} sequenceList: ${JSON.stringify(y)} `}).end(),{code:0,data:E}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return l.setLogInfo({message:`conversationID: ${i} nextReqMessageID: ${c} availableLocalMessagesCount: ${u}}`}).end(),{code:0,data:yield this._getMessageListFromMemory({conversationID:i,nextReqMessageID:c,count:e})}}catch(e){let t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getMessageList").setError(t).end(),console.debug(t)}})}getMessageListHopping(r){return e(this,void 0,void 0,function*(){var a,i;let{conversationID:e,sequence:c,time:t,direction:l=o.FORWARD}=r,u=this._core.helper["isEmpty"];if(![o.BACKWARD,o.FORWARD].includes(l))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:s=D}=r,d=(s=s>D?D:s,null);if(e.startsWith(R)){if(d=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:c,count:s,direction:l})){let{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:s,messageList:r,invisibleSequenceList:n}=d;if(this._core.message.messageDataHandler.storeSparseMessageList(r),l===o.FORWARD){let e=s&&t<1;return{code:0,data:{messageList:r,isCompleted:e,nextMessageSeq:e?"":t}}}if(l!==o.BACKWARD)return{code:0,data:d};{if(u(r)&&u(n))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};let e=(null==(a=null==r?void 0:r[r.length-1])?void 0:a.sequence)||0,t=(null==(i=null==n?void 0:n[n.length-1])?void 0:i.sequence)||0;return{code:0,data:{messageList:r.filter(e=>e.sequence>=c),isCompleted:!s,nextMessageSeq:s?Math.max(e,t)+1:""}}}}}else if(e.startsWith(S)&&(d=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:e,count:s+1,time:t,direction:l}))){let{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=d;return s||(l===o.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}})}clearHistoryMessage(v){return e(this,void 0,void 0,function*(){let r,{appStore:s,common:{ChatError:n,getCurrentUserID:o},OuterConstant:{CONV_C2C:a,CONV_GROUP:i},message:c,apiMap:l,ssoLog:u}=this._core,d=s.conversationStore.getConversation(v);if(!d)throw new n({code:C});var g=u.createSSOLogData({method:"clearHistoryMessage"}),m=(g.setLogInfo({message:"convID:"+v}),{fromAccount:o()}),h=d["type"];h===a?(m.type=f,m.toAccount=v.replace(a,"")):h===i&&(m.type=y,m.toGroupID=v.replace(i,""));try{yield null==(r=null==l?void 0:l.setMessageRead)?void 0:r.call(l,{conversationID:v});let s=yield function(o){return e(this,void 0,void 0,function*(){var{fromAccount:e,type:s,toAccount:r,toGroupID:n}=o,e={From_Account:e,Type:s,To_Account:r,ToGroupid:n};return t.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:e})})}(m);return s&&(g.end(),c.messageDataHandler.deleteConversationMessageList(v),this._clearedConversations.add(v),this._fetchedCompleteConversations.delete(v),this._c2cMessageHistory.clearHistoryMessageListFetchAnchors(v),this._updateConversationLastMessage(v)),{code:0,data:{conversationID:v}}}catch(e){let t=e["errorCode"],s=new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:t});throw g.setError(s).end(),s}})}_updateConversationLastMessage(e){var t=this._core["appStore"];t.conversationStore.updateConversation(e,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e),r=s["length"];if(!t)return r;let n=-1;return null!=e&&e.startsWith(S)?n=s.findIndex(e=>e.ID===t):null!=e&&e.startsWith(R)&&(n=s.findIndex(e=>t.includes("-")?e.ID===t:String(e.sequence)===t)),-1===n?0:n}_needFetchHistoryMessageList({conversationID:e,availableLocalMessagesCount:t,targetCount:s}){return!!this._clearedConversations.has(e)||t<s&&!this._fetchedCompleteConversations.has(e)}_getMessageListFromMemory(t){return e(this,arguments,void 0,function*({conversationID:t,nextReqMessageID:s,count:e}){var r=this._core.message.messageDataHandler.getLocalMessageList(t),n=r.length;let o=n,a={isCompleted:!1,nextReqMessageID:"",messageList:[]},i=0,c=n;return s?(c=r.findIndex(e=>t.startsWith(S)?e.ID===s:String(e.sequence)===s),i=c>e?c-e:0,o=c):i=e<n?n-e:0,a.nextReqMessageID=0===i?"":this._generateNextReqMessageID({conversationID:t,targetIndex:i}),a.messageList=r.slice(i,c),a.isCompleted=o<=e,t.startsWith(S)&&(yield L(t),yield A({messageList:a.messageList,conversationID:t})),a})}_generateNextReqMessageID({conversationID:e,targetIndex:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e);return e.startsWith("C2C")?s[t].ID:String(s[t].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}reset(){this._clearedConversations.clear(),this._fetchedCompleteConversations.clear(),this._c2cMessageHistory.reset()}dispose(){this.reset()}},ee=new class{constructor(){this._core=null}init(e){e=(this._core=e).helper;e.registerApi({apiName:"translateText",context:this})}translateText(o){return e(this,void 0,void 0,function*(){try{var{sourceLanguage:t,sourceTextList:s,targetLanguage:r}=o,n=yield function(a,i){return e(this,void 0,void 0,function*(){var e,{sourceTextList:t,sourceLanguage:s,targetLanguage:r}=a,{store:n,common:o}=i,s={SourceText:t,Source:s,Target:r,FromAccount:null==(e=n.get("login"))?void 0:e.tinyID,SDKAppID:null==(t=n.get("instance"))?void 0:t.sdkAppId},r=yield o.buildAndSendPacket({servcmd:"im_open_translate.ws_batch_trans_text",data:s});if(r){let{CmdErrorCode:e,TargetText:t}=r;return{cmdErrorCode:e,translatedTextList:t}}})}({sourceLanguage:t,sourceTextList:s,targetLanguage:r},this._core);if(n){let{cmdErrorCode:{ErrorCode:e,ErrorInfo:t},translatedTextList:s}=n;if(0===e)return{code:0,data:{translatedTextList:s}};throw{errorCode:e,errorInfo:t,message:t}}}catch(e){let{errorCode:t,errorInfo:s}=e||{};throw new this._core.helper.ChatError({functionName:"translateText",code:t,message:s})}})}},te=new class{init(e){(this._core=e).helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(i){return e(this,void 0,void 0,function*(){var r,e,{message:n,language:s=c.ZH_PY}=i;let o=(n.payload||{})["url"];var a=null==(r=this._core.store.get("login"))?void 0:r.userID,a=(n.from===a&&"out"===n.flow&&(o=n.payload.remoteAudioUrl),this._validateVoiceFormat(o),(null==(e=p.exec(o))?void 0:e[1])||"mp3"),n=h[s]||m;try{let s=yield function(e){var{store:s,common:r}=t.core,{url:e,format:n,serverLanguageType:o}=e,o={BytesUrl:e,BytesEngServiceType:o,BytesVoiceFormat:n,Uint32Sdkappid:null==(e=s.get("instance"))?void 0:e.sdkAppId,Uint64SourceType:0};return r.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:o})}({url:o,format:a,serverLanguageType:n});if(s){let{CmdErrorCode:e,BytesResult:t}=s;if(0===e.ErrorCode)return{code:0,data:{result:t}};throw{code:e.ErrorCode,message:e.ErrorInfo}}}catch(r){let{code:e,message:t}=r||{},s=new this._core.common.ChatError({functionName:"convertVoiceToText",code:e,message:t});console.error(s),this._core.ssoLog.createSSOLogData({method:"convertVoiceToText"}).setError(s).end()}})}_validateVoiceFormat(e){if(!p.test(e))throw new this._core.common.ChatError({code:2119})}};class se{constructor(e){var{constants:s,common:r,utils:n}=t.core,{CONV_C2C:s,CONV_GROUP:o}=s.OuterConstant,{ID:e,tinyID:a,from:i,to:c,clientTime:r=r.timeManager.getServerTimeSeconds()||0,random:l,sequence:u,cloudCustomData:d="",nick:g="",avatar:m="",clientSequence:h,conversationType:v,groupID:p,_elements:_,time:M}=e,a=(this.ID=e||a+`-${r}-`+l,this.messageRandom=l,this.from=i,this.messageSender=i,this.time=M,this.messageSequence=u,this.clientSequence=h||u,this.clientTime=r,this.cloudCustomData=d,this.messageReceiver=c,this.avatar=m,this.nick=g,n.deepCopyWithMethods(_));a.forEach(e=>{e.payload=e.content,delete e.content}),this.messageBody=a,e?v.startsWith(s)?this.receiverUserID=c:v.startsWith(o)&&(this.receiverGroupID=c):p?(this.receiverGroupID=p,this.messageReceiver=p):c&&(this.receiverUserID=c,this.messageReceiver=c)}transformElementsToServerFormat(){return this.messageBody?Array.isArray(this.messageBody)?this.messageBody.map(e=>e.transformToServerFormat({isMergerMessage:!0})):this.messageBody.transformToServerFormat({isMergerMessage:!0}):null}}class oe{static parseServerPushElement(e){var e=e["MsgContent"],{MsgList:e=[],CompatibleText:t,AbstractList:s,Title:r,PbMsgKey:n,JsonMsgKey:o}=e||{},e=e.map(e=>T(e));return new oe({messageList:e,title:r,abstractList:s,compatibleText:t,pbDownloadKey:n,downloadKey:o})}constructor(e){this.type=t.core.constants.OuterConstant.MSG_MERGER;let{messageList:s,title:r,abstractList:n,compatibleText:o,pbDownloadKey:a="",downloadKey:i="",version:c=0,layersOverLimit:l=!1}=e,u=[];s.forEach(e=>{e&&(e=new se(e),u.push(e))}),this.content={messageList:u,title:r,abstractList:n,compatibleText:o,version:c,downloadKey:i,pbDownloadKey:a,layersOverLimit:l}}validateBeforeSend(){var e=t.core.helper["isEmpty"];return e(this.content.messageList)?{isValid:!1,error:{message:"content is invalid"}}:{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{abstractList:e,compatibleText:t,downloadKey:s,layersOverLimit:r,pbDownloadKey:n,title:o,version:a,messageList:i}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{AbstractList:e,CompatibleText:t,JsonMsgKey:s,LayersOverLimit:r,PbMsgKey:n,Title:o,Version:a,MsgList:x(i)}}}}var ne=new class{init(e){let{message:t,helper:s,constants:{OuterConstant:r}}=this._core=e;t.messageFactory.registerElementClass(r.MSG_MERGER,oe),s.registerApi({apiName:"createMergerMessage",context:this}),s.registerApi({apiName:"sendMessage",context:this,matcher:e=>e[0].type===r.MSG_MERGER}),s.registerApi({apiName:"downloadMergerMessage",context:this})}createMergerMessage(e){var t,s=this._core["common"];return e?(t=new oe(e.payload),s=s.getCurrentUserID(),(e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setRelayFlag(!0),e.setElement(t),e):null}sendMessage(l,u){return e(this,void 0,void 0,function*(){var s,r,n;try{var i=function(s){let e="utf-8";t.core.helper.IN_BROWSER&&document&&(e=document.charset.toLowerCase());let r,n=0,o;if(o=s.length,"utf-8"===e||"utf8"===e)for(let e=0;e<o;e++)(r=s.codePointAt(e))<=127?n+=1:r<=2047?n+=2:r<=65535?n+=3:(n+=4,e++);else if("utf-16"===e||"utf16"===e)for(let e=0;e<o;e++)(r=s.codePointAt(e))<=65535?n+=2:(n+=4,e++);else n=s.replace(/[^\x00-\xff]/g,"aa").length;return n}(JSON.stringify(l));let o=l,a=null;if(11264<i){o=this._core.utils.deepCopyWithMethods(l);try{let{JsonMsgKey:s,PbMsgKey:r}=yield function(s){return e(this,void 0,void 0,function*(){var e=s["payload"]["messageList"],e={MsgList:x(e)};return t.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:e})})}(o),n=o["payload"];a=new oe(Object.assign(Object.assign({},n),{messageList:[],downloadKey:s,pbDownloadKey:r})),o.setElement(a)}catch(e){console.error(e)}}var{message:c}=(yield null==(n=null==(r=null==(s=this._core)?void 0:s.message)?void 0:r.messageSender)?void 0:n.sendMessage(o,u))["data"];return a&&c.setElement(l._elements),{code:0,data:{message:c}}}catch(e){throw console.error(e),e}})}downloadMergerMessage(i){return e(this,void 0,void 0,function*(){try{var s=i.payload,r=s["downloadKey"],n=function(e,t){var s={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(s[n[r]]=e[n[r]]);return s}(s,["downloadKey","pbDownload","type","messageList"]),o=((yield function(s){return e(this,void 0,void 0,function*(){return t.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:s}})})}(r))||{})["MsgList"],a=null==o?void 0:o.map(e=>{e=T(e);return new se(e)});return"function"==typeof i.isOnlineMessage?i.setElement({type:i.type,content:Object.assign({messageList:a},n)}):(i.payload.messageList=a,i.payload.downloadKey="",i.payload.pbDownloadKey=""),i}catch(e){console.error(e)}})}},re=new class{install(e){this._core=e,t.init(e),K.init(e),j.init(e),X.init(e),Q.init(e),q.init(e),ee.init(e),te.init(e),b.init(e),ne.init(e),k.init(e),e.helper.registerValidateConfig({auth:F,params:U}),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.LOGOUT,this._reset,this),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.DESTROY,this.dispose,this)}dispose(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this.dispose,this),X.dispose(),Q.dispose(),b.dispose(),k.dispose()}_reset(){Q.reset()}};export{re as default};
1
+ function e(e,a,i,c){return new(i=i||Promise)(function(s,t){function r(e){try{o(c.next(e))}catch(e){t(e)}}function n(e){try{o(c.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?s(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(r,n)}o((c=c.apply(e,a||[])).next())})}let t=new class{init(e){this.core=e}};var s,n;!function(e){e.MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem"}(s=s||{}),function(e){e[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD"}(n=n||{});let o="MSG_REACTION",r="MSG_EXT",i=0,a=1,c={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},d="16k_zh",u="16k_en",l="16k_yue",g="16k_ja",m="16k_zh-PY",h={[c.ZH_CN]:d,[c.EN_US]:u,[c.YUE_HK]:l,[c.JA_JP]:g,[c.ZH_PY]:m},p=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,_={READ:0,UNREAD:1},v=1,M=2,E=3,f=1,y=2,C=2116,I=2500,S="C2C",R="GROUP",D=20;function A(i){return e(this,void 0,void 0,function*(){var s,n=t.core["appStore"],{messageList:r,conversationID:o}=i,n=n.conversationStore.getConversationMap();let a=null==(s=n.get(o))?void 0:s.peerReadTime;if(!a){let s=o.replace(S,""),r=yield function(s){return e(this,void 0,void 0,function*(){var e={To_Account:s};return t.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([s]);if(r){let e=r["ReadTime"];a=null==e?void 0:e[0],n.has(o)&&(n.get(o).peerReadTime=a)}}r.forEach(e=>{e.time<=a&&!e.isPeerRead&&"out"===e.flow&&(e.isPeerRead=!0)})})}function L(c){return e(this,void 0,void 0,function*(){var e;let{message:s,user:r,appStore:n,constants:{OuterConstant:o}}=t.core,a=n.conversationStore.getConversationMap();if(a.has(c)){let r=null==(e=a.get(c))?void 0:e.userProfile;if(r&&c.startsWith(o.CONV_C2C)){let{avatar:e,nick:s}=r;t.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:c,latestAvatar:e,latestNick:s,isSentByMe:!1})}}var i=((yield r.userProfile.getMyProfile())||{})["data"];if(i){let{avatar:e,nick:t}=i;s.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:c,latestAvatar:e,latestNick:t,isSentByMe:!0})}})}function O(e){let s,r=t.core["message"],{conversationID:n,messageID:o}=e;return s=(s=r.messageDataHandler.getLocalMessageList(n).find(e=>e.ID===o))||r.messageDataHandler.getSparseMessageList(n).find(e=>e.ID===o)}function x(e){return e.map(e=>{var{from:t,to:s,cloudCustomData:r,avatar:n,nick:o,ID:a,clientSequence:i,clientTime:c,messageRandom:l,messageSequence:u,time:d}=e;return{ClientSeq:i,CloudCustomData:r,From_Account:t,From_AccountHeadurl:n,From_AccountNick:o,Id:a,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:l,Random:l,MsgSeq:u,MsgTimeStamp:d,ReceiverId:s,SenderId:t,To_Account:s}})}function T(e){var{From_Account:s,From_AccountHeadurl:r,From_AccountNick:n,GroupId:o,MsgClientTime:a,ClientSeq:i,To_Account:c,MsgTimeStamp:l,TinyId:u,MsgRandom:d,MsgSeq:g}=e;return{from:s,avatar:r,nick:n,clientTime:a,time:l,tinyID:u,random:d,sequence:g,to:c,groupID:o,clientSequence:i,_elements:null==(s=e.MsgBody)?void 0:s.map(e=>{var s=e["MsgType"];return t.core.message.messageFactory.getElementClass(s).parseServerPushElement(e)})}}var q=new class{constructor(){this._reactionsMap=new Map}init(e){var{helper:e,notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{MESSAGE_REACTION_UPDATED:r,MESSAGE_REACTION_UPDATED_SYNC:n}}=this._core=e;e.registerApi({apiName:"addMessageReaction",context:this}),e.registerApi({apiName:"removeMessageReaction",context:this}),e.registerApi({apiName:"getMessageReactions",context:this}),e.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),t.subscribeInnerEvent(s,r,this._handleReactionUpdated,this),t.subscribeInnerEvent(s,n,this._handleReactionSync,this)}addMessageReaction(h,v){return e(this,void 0,void 0,function*(){var{OuterConstant:s,ssoLog:r,helper:n}=this._core,r=(this._validateMessageReactionBusinessCapability(),r.createSSOLogData({method:"addMessageReaction"})),{conversationID:o,ID:a,conversationType:i,from:c,to:l,clientSequence:u,random:d,time:g,sequence:m}=h;try{return this._recordMessageReactedByMe(a,v),i===s.CONV_C2C?yield function(i,c){return e(this,void 0,void 0,function*(){var{from:e,to:s,clientSequence:r,random:n,time:o,reactionID:a}=i,s={From_Account:e,To_Account:s,MsgKey:r+`_${n}_`+o,Reaction:a,Add_Account:[null==(e=c.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:s})})}({from:c,to:l,clientSequence:u,random:d,time:g,reactionID:v},this._core):i===s.CONV_GROUP&&(yield function(n,o){return e(this,void 0,void 0,function*(){var{to:e,reactionID:s,sequence:r}=n,r={GroupId:e,MsgSeq:r,Reaction:s,Add_Account:[null==(e=o.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:r})})}({to:l,reactionID:v,sequence:m},this._core)),r.setLogInfo({message:`conversationID:${o} messageID:${a} reactionID:`+v}).end(),{code:0}}catch(e){this._removeMyReactionRecord(a,v);let t=(e||{})["errorCode"],s=new n.ChatError({functionName:"addMessageReaction",code:t});r.setError(s).end(),console.error("addMessageReaction error: ",e)}})}removeMessageReaction(m,h){return e(this,void 0,void 0,function*(){let{OuterConstant:d,ssoLog:s,helper:r}=this._core;this._validateMessageReactionBusinessCapability();var g=s.createSSOLogData({method:"removeMessageReaction"});try{let{conversationID:s,ID:r,conversationType:n,from:o,to:a,clientSequence:i,random:c,time:l,sequence:u}=m;return this._removeMyReactionRecord(r,h),n===d.CONV_C2C?yield function(i,c){return e(this,void 0,void 0,function*(){var{from:e,to:s,clientSequence:r,random:n,time:o,reactionID:a}=i,s={From_Account:e,To_Account:s,MsgKey:r+`_${n}_`+o,Reaction:a,Del_Account:[null==(e=c.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:s})})}({from:o,to:a,clientSequence:i,random:c,time:l,reactionID:h},this._core):n===d.CONV_GROUP&&(yield function(n,o){return e(this,void 0,void 0,function*(){var{to:e,reactionID:s,sequence:r}=n,r={GroupId:e,MsgSeq:r,Reaction:s,Del_Account:[null==(e=o.store.get("login"))?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:r},o)})}({to:a,reactionID:h,sequence:u},this._core)),g.setLogInfo({message:`conversationID:${s} messageID:${r} reactionID:`+h}).end(),{code:0}}catch(e){let t=(e||{})["errorCode"],s=new r.ChatError({functionName:"removeMessageReaction",code:t});g.setError(s).end(),console.error("removeMessageReaction error: ",e)}})}getAllUserListOfMessageReaction(d){return e(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();let{message:s,reactionID:r,nextSeq:n=0}=d,o=100<d.count?100:d.count,a=s["conversationID"],{ssoLog:i,helper:c,constants:l}=this._core;try{var u;if(u=a.startsWith(l.OuterConstant.CONV_C2C)?yield function(l){return e(this,void 0,void 0,function*(){var{message:e,nextSeq:s,reactionID:r,count:n}=l,{from:e,to:o,clientSequence:a,random:i,time:c}=e,r={Reaction:r,NextSeq:s,Count:n,From_Account:e,To_Account:o,MsgKey:a+`_${i}_`+c};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:r})})}({message:s,reactionID:r,nextSeq:n,count:o}):yield function(a){return e(this,void 0,void 0,function*(){var{message:e,nextSeq:s,reactionID:r,count:n}=a,{sequence:e,to:o}=e,r={Reaction:r,NextSeq:s,GroupId:o,Count:n,MsgSeq:e};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:r})})}({message:s,reactionID:r,nextSeq:n,count:o})){let{Reaction_Account:e,NextSeq:t}=u,s=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===n,userList:s}}}}catch(e){let t=(e||{})["errorCode"],s=new c.ChatError({functionName:"getAllUserListOfMessageReaction",code:t});i.createSSOLogData({method:"removeMessageReaction"}).setError(s).end(),console.error("getAllUserListOfMessageReaction error: ",e)}})}getMessageReactions(v){return e(this,void 0,void 0,function*(){var s=this._core["constants"],{messageList:r,maxUserCountPerReaction:n=10}=(this._validateMessageReactionBusinessCapability(),v),o=r[0];let a=null,i=new Map,{from:c,to:l,conversationType:u}=o,d=this._generateMessageKeyList(r,i),{Results:g=[]}=(u===s.OuterConstant.CONV_C2C?a=yield function(o){return e(this,void 0,void 0,function*(){var{from:e,to:s,messageKeyList:r,maxUserCountPerReaction:n}=o,e={From_Account:e,To_Account:s,MsgKeyList:r,Count:n};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:e})})}({from:c,to:l,messageKeyList:d,maxUserCountPerReaction:n}):u===s.OuterConstant.CONV_GROUP&&(a=yield function(n){return e(this,void 0,void 0,function*(){var{groupId:e,messageSequenceList:s,maxUserCountPerReaction:r}=n,e={GroupId:e,MsgSeqList:s,Count:r};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:e})})}({groupId:l,messageSequenceList:d,maxUserCountPerReaction:n})),a||{}),m=this._extractUserIDsFromReactionResults(g),h=yield this._getUserProfileMap(m);return{code:0,data:{resultList:g.map(e=>{var{ReactionList:e,MsgSeq:t,MsgKey:s}=e;return{messageID:this._generateMessageID({messageSequence:t,messageKey:s,messageIDMap:i}),reactionList:e.map(e=>{var{Reaction:e,Count:t,Reaction_Account:s,ReactedByMe:r}=e;return{reactionID:e,totalUserCount:t,partialUserList:this._generatePartialUserInfo({userIDList:s,userProfileMap:h}),reactedByMyself:1===r}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(e){let t=[];return null!=e&&e.forEach(e=>{var{ReactionList:e=[]}=e;e.forEach(e=>{e.Reaction_Account&&t.push(...e.Reaction_Account)})}),t}_getUserProfileList(s){return e(this,void 0,void 0,function*(){var e;try{var t=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:s});return t?t.data:[]}catch(e){return[]}})}_getUserProfileMap(t){return e(this,void 0,void 0,function*(){let r=new Map;return(yield this._getUserProfileList(t)).forEach(e=>{var{nick:e,avatar:t,userID:s}=e;r.set(s,{nick:e,avatar:t,userID:s})}),r})}_recordMessageReactedByMe(e,t){e=e+"-"+t;this._reactionsMap.has(e)?this._reactionsMap.get(e).reactedByMe=!0:this._reactionsMap.set(e,{reactedByMe:!0})}_removeMyReactionRecord(e,t){e=e+"-"+t;this._reactionsMap.has(e)&&(this._reactionsMap.get(e).reactedByMe=!1)}_recordMessageReactionInfo(e){var{messageID:e,reactionID:t,reactionInfo:s}=e,e=e+"-"+t,t=this._reactionsMap.get(e)||{};this._reactionsMap.set(e,Object.assign(Object.assign({},t),s))}_validateMessageReactionBusinessCapability(){var{helper:e,constants:t}=this._core;if(!e.checkBusinessCapabilityBits(o))throw new e.ChatError({functionName:"addMessageReaction",code:t.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(t){let s=t["MsgReactionNotifyList"],{notificationCenter:d,constants:g}=this._core;s.forEach(u=>e(this,void 0,void 0,function*(){let{C2CMsgInfo:e,GroupMsgInfo:t,MsgReactionSummary:s}=u,{TinyId:r,MsgClientTime:n,MsgRandom:o}=Object.assign(Object.assign({},e),t),a=r+`-${n}-`+o,i=this._extractUserIDsFromReactionResults([{ReactionList:s}]),c=yield this._getUserProfileMap(i),l=s.map(e=>{var{Reaction:t,Reaction_Account:s}=e,r=this._generatePartialUserInfo({userIDList:s,userProfileMap:c}),s=s?e.Count:0,e=(null==(e=this._reactionsMap.get(a+"-"+t))?void 0:e.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:a,reactionID:t,reactionInfo:{reactionID:t,totalUserCount:s,partialUserList:r}}),{reactionID:t,totalUserCount:s,partialUserList:r,reactedByMyself:e}});d.emitOuterEvent(g.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:g.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:a,reactionList:l}})}))}_handleReactionSync(e){var{notificationCenter:t,constants:s}=this._core,{C2CMsgInfo:e={},GroupMsgInfo:r={},Reaction:n,OperateType:o}=e.MsgReactionNotify,{TinyId:e="",MsgClientTime:r=0,MsgRandom:a=0}=Object.assign(Object.assign({},e),r),r=e+`-${r}-`+a,a=r+"-"+n;if(1===o?this._recordMessageReactedByMe(r,n):this._removeMyReactionRecord(r,n),null!=(e=this._reactionsMap.get(a))&&e.reactionID){let e=this._reactionsMap.get(a);e.reactedByMyself=1===o,t.emitOuterEvent(s.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:s.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:r,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){let s=[];return null!=e&&e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){var{messageSequence:e,messageKey:t,messageIDMap:s}=e;return t?s.get(t):s.get(e)}_generateMessageKeyList(e,n){var t=this._core["constants"],s=e[0]["conversationType"];let r=[];return s===t.OuterConstant.CONV_C2C?r=e.map(e=>{var{clientSequence:e,random:t,time:s,ID:r}=e,e=e+`_${t}_`+s;return n.set(e,r),e}):s===t.OuterConstant.CONV_GROUP&&(r=e.map(e=>{var{ID:e,sequence:t}=e;return n.set(t,e),t})),r}},b=new class{init(e){var{helper:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:s,GROUP_MESSAGE_READ_RECEIPT:r},notificationCenter:n}=this._core=e;e.registerApi({apiName:"sendMessageReadReceipt",context:this}),e.registerApi({apiName:"getMessageReadReceiptList",context:this}),e.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),n.subscribeInnerEvent(t,s,this._handleC2CMessageReadReceipt,this),n.subscribeInnerEvent(t,r,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(s){return e(this,void 0,void 0,function*(){var{common:r,constants:n}=this._core,o=this._filterValidMessageSendByOther(s);if(0===o.length)throw new r.ChatError({code:n.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{let s=o[0]["conversationType"];return s===n.OuterConstant.CONV_C2C?yield function(r){return e(this,void 0,void 0,function*(){var{common:e,constants:s}=t.core,s={Peer_Account:r[0].conversationID.replace(s.OuterConstant.CONV_C2C,""),C2CMsgInfo:r.map(e=>{var{from:e,to:t,sequence:s,random:r,time:n,clientTime:o}=e;return{From_Account:e,To_Account:t,MsgSeq:s,MsgRandom:r,MsgTime:n,MsgClientTime:o}})};return e.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:s})})}(o):yield function(r){return e(this,void 0,void 0,function*(){var{common:e,constants:s}=t.core,s={GroupId:r[0].conversationID.replace(s.OuterConstant.CONV_GROUP,""),MsgSeqList:r.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:s})})}(o),{code:0,data:{}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getMessageReadReceiptList(o){return e(this,void 0,void 0,function*(){let{common:r,constants:n}=this._core;try{let s=o[0]["conversationType"];if(s===n.OuterConstant.CONV_GROUP){let n=this._filterValidMessageSendByMe(o);if(0<(null==n?void 0:n.length)){let s=yield function(r){return e(this,void 0,void 0,function*(){var{common:e,constants:s}=t.core,s={GroupId:r[0].conversationID.replace(s.OuterConstant.CONV_GROUP,""),MsgSeqList:r.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:s})})}(n),r=(s||{})["GroupMsgReceiptList"];this._updateGroupMessagesReadReceiptInfo({messageList:o,readReceiptList:r})}}return{code:0,data:{messageList:o}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getGroupMessageReadMemberList(g){return e(this,void 0,void 0,function*(){let{constants:s,common:r}=this._core,{message:n,filter:a=_.READ,cursor:i=""}=g,{conversationID:o,sequence:c,ID:l}=n,u=o.replace(s.OuterConstant.CONV_GROUP,""),d=100<=g.count?100:g.count;try{let o=yield function(a){return e(this,void 0,void 0,function*(){var{sequence:e,groupID:s,filter:r,cursor:n,count:o}=a,e={MsgSeq:e,GroupId:s,Filter:r,Cursor:n,Num:o};return t.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:e})})}({groupID:u,sequence:c,filter:a,cursor:i,count:d});if(o){let{Cursor:e,IsFinish:t,UnreadList:s,ReadList:r}=o,n={cursor:e,isCompleted:1===t,messageID:l,unreadUserIDList:[],readUserIDList:[]};return a===_.READ?n.readUserIDList=r.map(e=>e.Read_Account):a===_.UNREAD&&(n.unreadUserIDList=s.map(e=>e.Unread_Account)),{code:0,data:n}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}_handleC2CMessageReadReceipt(e){let n=[],{constants:t,helper:s}=this._core,{C2cMsgInfo:o,PeerReadTime:a,Peer_Account:i}=e;if(!s.isEmpty(o)){let r=""+t.OuterConstant.CONV_C2C+i;null!=o&&o.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s}=e,e=e+`-${t}-`+s,t=O({conversationID:r,messageID:e});t&&!t.readReceiptInfo.isPeerRead&&(t.readReceiptInfo.isPeerRead=!0,t.readReceiptInfo.timestamp=a,n.push({userID:i,messageID:e,isPeerRead:!0,timestamp:a}))}),this._emitReadReceiptEventIfNeed(n)}}_updateGroupMessagesReadReceiptInfo(e){let{messageList:t,readReceiptList:s}=e,r=new Map;t.forEach(e=>{r.set(e.sequence,e)}),null!=s&&s.forEach(e=>{var t,s;0===e.Code&&({MsgSeq:e,ReadNum:t,UnreadNum:s}=e,e=r.get(e))&&(e.readReceiptInfo.readCount=t,e.readReceiptInfo.unreadCount=s)})}_handleGroupMessageReadReceipt(e){let i=[],s=this._core["constants"],t=e["GroupTips"];t.forEach(e=>{let{MsgBody:{GroupMsgReceiptList:t},GroupInfo:{GroupId:o}}=e,a=""+s.OuterConstant.CONV_GROUP+o;null!=t&&t.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s,ReadNum:r,UnreadNum:n}=e,e=e+`-${t}-`+s,t=O({conversationID:a,messageID:e}),s={groupID:o,messageID:e,readCount:0,unreadCount:0};t&&("number"==typeof r&&(t.readReceiptInfo.readCount=r,s.readCount=r),"number"==typeof n&&(t.readReceiptInfo.unreadCount=n,s.unreadCount=n),i.push(s))})}),this._emitReadReceiptEventIfNeed(i)}_emitReadReceiptEventIfNeed(e){var{notificationCenter:t,OuterEvent:s}=this._core;0<e.length&&t.emitOuterEvent(s.MESSAGE_READ_RECEIPT_RECEIVED,{name:s.MESSAGE_READ_RECEIPT_RECEIVED,data:e})}_filterValidMessageSendByOther(e){return this._filterNeedReadReceiptMessages(e).filter(e=>{e=e.from;return e!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(e){let s=this._core.constants["OuterConstant"];return this._filterNeedReadReceiptMessages(e).filter(e=>{var{from:e,status:t}=e;return e===this._core.common.getCurrentUserID()&&t===s.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(e){return e.filter(e=>!0===e.needReadReceipt)}dispose(){var{InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:t,GROUP_MESSAGE_READ_RECEIPT:s},notificationCenter:r}=this._core;r.unSubscribeInnerEvent(e,t,this._handleC2CMessageReadReceipt,this),r.unSubscribeInnerEvent(e,s,this._handleGroupMessageReadReceipt,this)}};function w(i,c,l){return e(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=t.core["common"],{from:s,to:r,clientSequence:n,random:o,time:a}=i;return e({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:s,To_Account:r,MsgKey:n+`_${o}_`+a,OperateType:l,ExtensionList:c}})})}function N(n,o,a){return e(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=t.core["common"],{to:s,sequence:r}=n;return e({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:s,MsgSeq:r,OperateType:a,ExtensionList:o}})})}var k=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){var{notificationCenter:e,helper:{registerApi:t},InnerEvent:{MESSAGE_PUSH:s,LOGOUT:r},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core=e;t({apiName:"setMessageExtensions",context:this}),t({apiName:"getMessageExtensions",context:this}),t({apiName:"deleteMessageExtensions",context:this}),e.subscribeInnerEvent(s,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(r,this.reset,this)}setMessageExtensions(d,r){return e(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");let{constants:{OuterConstant:s},ssoLog:e}=this._core,{ID:n,conversationID:o,sequence:a,time:i,conversationType:t}=d,c=e.createSSOLogData({method:"setMessageExtensions"}),l=r;20<r.length&&(l=r.slice(0,20),console.warn("the length of extensions cannot exceed 20"));var u=this._generateServerExtensions(d,l);try{let r;if(t===s.CONV_C2C?r=yield w(d,u,v):t===s.CONV_GROUP&&(r=yield N(d,u,v)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(d,r);return c.setLogInfo({message:`convID:${o} messageID:${n} sequence:${a}
2
+ time:${i} count:${l.length} successCount:${t} failCount:`+s}).end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"setMessageExtensions",code:e});throw c.setError(t).end(),t}})}getMessageExtensions(a){return e(this,void 0,void 0,function*(){var{isUndefined:r}=this._core["utils"];this._validateMessageExtensionBusinessCapability("getMessageExtensions");let{conversationID:e,ID:s,sequence:t,time:n}=a,o=this._core.ssoLog.createSSOLogData({method:"getMessageExtensions"});o.setLogInfo({message:`convID:${e} messageID:${s} sequence:${t} time:`+n});try{let e,t=(this._completedFetchExtensions.has(s)&&(e=this._extensionsLatestSequenceMap.get(s)),yield this._fetchMessageExtensions(a,e));return r(e)&&1<t.length&&this._completedFetchExtensions.add(s),o.end(),{code:0,data:{extensions:t}}}catch(r){let{errorCode:e,errorInfo:t=""}=r||{},s=new this._core.common.ChatError({code:e,message:t});throw o.setError(s).end(),s}})}deleteMessageExtensions(g,m){return e(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");let{utils:{isEmpty:s},constants:{OuterConstant:e},ssoLog:t}=this._core,{conversationType:n,conversationID:r,sequence:o,ID:a,time:i}=g,c=E,l=[];s(m)||(c=M,null==m)||m.forEach(e=>{l.push({key:e,value:"",seq:0})});var u=t.createSSOLogData({method:"deleteMessageExtensions"}),d=(u.setLogInfo({message:`convID:${r} messageID:${a} sequence:${o} time:${i} operateType:`+c}),this._generateServerExtensions(g,l));try{let r;if(n===e.CONV_C2C?r=yield w(g,d,c):n===e.CONV_GROUP&&(r=yield N(g,d,c)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(g,r);return u.setMoreMessage(`success count:${t} fail count:`+s),u.end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:e});throw u.setError(t).end(),t}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=this._core;e.unSubscribeInnerEvent(t,r,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){let s=e["ID"],r=t["Seq"],n=t.ExtensionList||[],o=[],a=0,i=0,c=[];return n.forEach(e=>{var{ErrorCode:e,Extension:t}=e,{Key:t,Value:s,Seq:r}=t;o.push({code:e,key:t,value:s}),0===e?a++:i++,c.push({key:t,value:s,seq:r})}),this._extensionsLatestSequenceMap.set(s,r),0<c.length&&this._updateLocalExtensions(e.ID,c),{resultList:o,successCount:a,failureCount:i}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);let r=this._messageExtensionsMap.get(e);null!=t&&t.forEach(e=>{var{key:e,seq:t,value:s=""}=e;null!=r&&r.set(e,{value:s,seq:t})})}_fetchMessageExtensions(c,r){return e(this,void 0,void 0,function*(){let{constants:{OuterConstant:e},utils:{isEmpty:a}}=this._core;try{let o;var{conversationType:s,ID:i}=c;if(s===e.CONV_C2C?o=yield function(e,s){var r=t.core["common"]["buildAndSendPacket"],{from:e,to:n,clientSequence:o,random:a,time:i}=e;return r({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:e,To_Account:n,MsgKey:o+`_${a}_`+i,StartSeq:s}})}(c,r):s===e.CONV_GROUP&&(o=yield function(e,s){var r=t.core["common"]["buildAndSendPacket"],{to:e,sequence:n}=e;return r({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:e,MsgSeq:n,StartSeq:s}})}(c,r)),o){let{LatestSeq:e,ClearSeq:t,CompleteFlag:s}=o,r=(o.ExtensionList||[]).map(e=>({key:e.Key,value:e.Value,seq:e.Seq}));if(this._updateLocalExtensions(i,r),this._clearLocationExtensions(i,t),this._extensionsLatestSequenceMap.set(i,e),1!==s){let e=r[r.length-1].seq+1;return this._fetchMessageExtensions(c,e)}let n=[];if(this._messageExtensionsMap.has(i)){let e=this._messageExtensionsMap.get(i);null!=e&&e.forEach((e,t)=>{e=e.value;a(e)||n.push({key:t,value:e})})}return n}}catch(e){console.error(e)}})}_clearLocationExtensions(e,r){if(!(r<=0)&&this._messageExtensionsMap.has(e)){let s=this._messageExtensionsMap.get(e);null!=s&&s.forEach((e,t)=>{e.seq<=r&&s.delete(t)})}}_generateServerExtensions(e,t){var s=e["ID"];if(this._messageExtensionsMap.has(s)){let r=this._messageExtensionsMap.get(s);return t.map(e=>{var{key:e,value:t}=e;let s=0;return{Key:e,Value:t,Seq:s=null!=r&&r.has(e)?null==(t=r.get(e))?void 0:t.seq:s}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){var{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits(r))throw new t.ChatError({functionName:e,code:s.ERROR_CODE.NO_USE,replacement1:e})}_handleMessageExtensionsNotify(e){var{SetKVInfo:e,DeleteKVInfo:t,ClearKVInfo:s,MsgOptType:r,TinyId:n,MsgLastSeq:o,ExtensionC2cMsgInfo:a,ExtensionGroupMsgInfo:i}=(null==e?void 0:e.MsgExtensionNotify)||{},{MsgClientTime:a,MsgRandom:i}=a||i||{},n=n+`-${a}-`+i;this._extensionsLatestSequenceMap.set(n,o),r===v?this._handleMessageExtensionsUpdated({messageID:n,updateMessageExtensionsInfo:e}):r===M?this._handleMessageExtensionsDeleted({messageID:n,deleteMessageExtensionsInfo:t}):r===E&&this._handleMessageExtensionsCleared({messageID:n,clearMessageExtensionsInfo:s})}_handleMessageExtensionsUpdated(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,updateMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push({key:e.Key,value:e.Value}),{key:e.Key,value:e.Value,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_UPDATED,{name:s.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:r,extensions:o}})}_handleMessageExtensionsDeleted(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,deleteMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push(e.Key),{key:e.Key,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_DELETED,{name:s.MESSAGE_EXTENSIONS_DELETED,data:{messageID:r,keyList:o}})}_handleMessageExtensionsCleared(e){let{notificationCenter:t,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:s},utils:{isEmpty:r}}=this._core,{messageID:n,clearMessageExtensionsInfo:o=[]}=e,a=[];o.forEach(e=>{let s=e["ClearMsgSeq"];this._messageExtensionsMap.has(n)&&(this._messageExtensionsMap.get(n)||[]).forEach((e,t)=>{e.seq<=s&&!r(e.value)&&a.push(t)}),this._clearLocationExtensions(n,s)}),t.emitOuterEvent(s,{name:s,data:{messageID:n,keyList:a}})}};let G={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{OuterConstant:s}=t.core["constants"];return e.status!==s.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},P={setMessageExtensions:[G,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[G],deleteMessageExtensions:[G]},U=Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>"GROUP"===e||"conversationType should be GROUP."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var t="string"==typeof(null==e?void 0:e.text)&&("string"!=typeof e.text||0!==(null==(t=null==e?void 0:e.text)?void 0:t.length))||"payload.text is invalid.";return!0!==t?t:!(null!=e&&e.atUserList&&!Array.isArray(e.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>!(!e.startsWith("C2C")&&!e.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{isString:s,isNumber:r}=t.core["utils"];return s(null==e?void 0:e.description)?r(null==e?void 0:e.longitude)?!!r(null==e?void 0:e.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"!=typeof e?"maxUserCountPerReaction is invalid.":!(e<0||10<e)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>"success"===e.status||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),P),F=Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0});class ${constructor(e){this._core=e}deleteMessage(s){return e(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={From_Account:this._core.common.getCurrentUserID(),To_Account:e,MsgKeyList:t};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:e})})}revokeMessage(o){return e(this,void 0,void 0,function*(){var{to:e,from:t,sequence:s,time:r,random:n}=o;return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:{MsgInfo:{From_Account:t,To_Account:e,MsgSeq:s,MsgRandom:n,MsgTimeStamp:r}}})})}}class V{constructor(e){this._core=e}deleteMessage(s){return e(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={GroupId:e,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:t};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:e})})}revokeMessage(s){return e(this,void 0,void 0,function*(){var{to:e,sequence:t}=s;return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:{GroupId:e,MsgSeqList:[{MsgSeq:t}]}})})}}class H{constructor(e){this._core=e}generateRevokeMessage(e){var{conversationID:e,sequence:t,random:s,tinyID:r,clientTime:n,revokeReason:o,revoker:a}=e;let i={};var c=this._core.message["messageDataHandler"];return(i=c.revokeMessage({conversationID:e,sequence:t,random:s,revoker:a}))||(i={conversationID:e,sequence:t},r&&n&&s&&(i.ID=r+`-${n}-`+s)),i=Object.assign(Object.assign({},i),{revoker:a,revokeReason:o,revokerInfo:{userID:a,nick:"",avatar:""}})}updateRevokerInfo(t){return e(this,void 0,void 0,function*(){var e=t.map(e=>e.revoker);try{let s=yield this._fetchUserInfos(e);s&&t.forEach(e=>{var t=e["revoker"];s[t]&&(e.revokerInfo.nick=s[t].nick||"",e.revokerInfo.avatar=s[t].avatar||"",e.revokerInfo.userID=t)})}catch(e){console.debug(e)}})}_fetchUserInfos(t){return e(this,void 0,void 0,function*(){var e=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:t});return null!=e&&e.data?null==(e=e.data)?void 0:e.reduce((e,{userID:t,nick:s,avatar:r})=>(e[t]={nick:s||"",avatar:r||""},e),{}):null})}}var K=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new V(e),this._c2cMessageAction=new $(e),this._messageHelper=new H(e);e=e.helper;e.registerApi({apiName:"deleteMessage",context:this}),e.registerApi({apiName:"revokeMessage",context:this}),e.registerApi({apiName:"resendMessage",context:this}),e.registerApi({apiName:"findMessage",context:this})}deleteMessage(t){return e(this,void 0,void 0,function*(){let c=[],l=[],{conversationID:u,conversationType:d}=t[0],e=u.replace(d,"");if("@TIM#SYSTEM"===d)throw new this._core.helper.ChatError({code:C});if(t.forEach(e=>{var{conversationID:t,conversationType:s,status:r,_onlineOnlyFlag:n,sequence:o,random:a,time:i}=e||{};if("success"===r&&t===u&&s===d){if(!n){let e="C2C"===s?o+`_${a}_`+i:String(o);c.push(e)}l.push(e)}}),0===c.length)return this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}};30<c.length&&(c=c.slice(0,30),l=l.slice(0,30));try{return"C2C"===d?yield this._c2cMessageAction.deleteMessage({to:e,messageIdentifiers:c}):yield this._groupMessageAction.deleteMessage({to:e,messageIdentifiers:c}),this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}}}catch(c){let e=c["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessage",code:e})}})}revokeMessage(o){return e(this,void 0,void 0,function*(){let s,r=this._core.ssoLog.createSSOLogData({method:"revokeMessage"}),{conversationType:e,isRevoked:t}=o;var n;if("@TIM#SYSTEM"===e)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(t)throw new this._core.helper.ChatError({message:"message has been revoked"});r.setLogInfo({message:`type:${o.type} from:${o.from} to:`+o.to});try{if(n="C2C"===e?yield this._c2cMessageAction.revokeMessage(o):yield this._groupMessageAction.revokeMessage(o)){let e=n["RecallRetList"],t=(null==(s=null==e?void 0:e[0])?void 0:s.RetCode)||0;if(0!==t)throw new this._core.helper.ChatError({code:t});return r.end(),yield this._handleRevokeMessageSuccess(o),{code:0,data:{message:o}}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"revokeMessage",code:e});throw this._core.ssoLog.getSSOLogData("revokeMessage").setError(t).end(),t}})}resendMessage(t,s){return e(this,void 0,void 0,function*(){var e;return t.isResend=!0,t.status="unSend",null==(e=null==(e=this._core)?void 0:e.apiMap)?void 0:e.sendMessage(t,s)})}findMessage(e){return this._core.message.messageDataHandler.findMessage(e)}_handleDeleteMessageSuccess(n){if(0!==n.length){let{message:{messageDataHandler:s},common:{isTopic:e},notificationCenter:t,InnerEvent:r}=this._core;n.forEach(t=>{t.isDeleted=!0;var e=s.getLocalMessageList(t.conversationID);null!=e&&e.forEach(e=>{e.ID===t.ID&&(e.isDeleted=!0)})});var{conversationID:n=""}=n[0];e(n)?t.emitInnerEvent(r.TOPIC_MESSAGE_DELETED,n):t.emitInnerEvent(r.MESSAGE_DELETED,n)}}_handleRevokeMessageSuccess(n){return e(this,void 0,void 0,function*(){var e=null==(e=this._core.store.get("login"))?void 0:e.userId,{conversationID:t,sequence:s,random:r}=n;this._core.message.messageDataHandler.revokeMessage({conversationID:t,sequence:s,random:r,revoker:e}),yield this._messageHelper.updateRevokerInfo([n])})}};class B{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Index:e,Data:t}=e;return new B({index:e,data:t})}constructor(e){this.type=s.MSG_FACE;var{index:e,data:t}=e;this.content={index:e,data:t}}validateBeforeSend(){var e;return"number"==typeof(null==(e=this.content)?void 0:e.index)&&"string"==typeof(null==(e=this.content)?void 0:e.data)?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{index:e,data:t}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Index:e,Data:t}}}}class W{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Desc:e,Longitude:t,Latitude:s}=e;return new W({description:e,longitude:t,latitude:s})}constructor(e){this.type=s.MSG_LOCATION;var{description:e,longitude:t,latitude:r}=e;this.content={description:e,longitude:t,latitude:r}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{description:e,longitude:t,latitude:s}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Desc:e,Longitude:t,Latitude:s}}}}var j=new class{init(e){(this._core=e).message.messageFactory.registerElementClass(s.MSG_FACE,B),e.message.messageFactory.registerElementClass(s.MSG_LOCATION,W),e.helper.registerApi({apiName:"createFaceMessage",context:this}),e.helper.registerApi({apiName:"createTextAtMessage",context:this}),e.helper.registerApi({apiName:"createForwardMessage",context:this}),e.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(e){var t,s;return e?({index:t,data:s}=(null==e?void 0:e.payload)||{},t=new B({index:t,data:s}),s=this._core.common.getCurrentUserID(),(e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),e):null}createTextAtMessage(e){let r=((null==e?void 0:e.payload)||{})["atUserList"],n=this._core.apiMap.createTextMessage(e),o=this._core["OuterConstant"];if(!n)return null;if(Array.isArray(r)){let t=[],s=[];r.forEach(e=>{e!==o.MSG_AT_ALL?(t.push({GroupAtAllFlag:i,GroupAt_Account:e}),s.push(e)):(t.push({GroupAtAllFlag:a}),s.push(o.MSG_AT_ALL))}),n._groupAtInfoList=t,n.atUserList=s}return n}createForwardMessage(e){var{helper:t,OuterConstant:s}=this._core,{to:e,conversationType:r,priority:n,payload:o,needReadReceipt:a,receiverList:i,cloudCustomData:c="",isSupportExtension:l=!1}=e;if(!Array.isArray(o._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(o.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});s=this._core.common.getCurrentUserID(),t=this._core.message.messageFactory.createMessage({to:e,from:s,conversationType:r,isPlaceMessage:0,priority:n,payload:o,needReadReceipt:a,isSupportExtension:l,cloudCustomData:c,receiverList:i});return t.setRelayFlag(!0),t.setElement(o._elements[0]),t}createLocationMessage(e){var t,s,r;return e?({description:t,longitude:s,latitude:r}=(null==e?void 0:e.payload)||{},t=new W({description:t,longitude:s,latitude:r}),s=this._core.common.getCurrentUserID(),(r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),r):null}};class Y{init(e){this._messageHelper=new H(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s},helper:{registerWorkflowStep:r},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:o}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this),r(n.SYNC_SERVER_INFO_AFTER_RE_ONLINE,o.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(e){e=e.C2cNotifyMsgArray;null!=e&&e.forEach(e=>{Object.keys(e).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(e)})}_handleC2CRevokeMessage(t){return e(this,void 0,void 0,function*(){try{var{C2cWithdrawInfoArray:e}=t["WithdrawC2cMsgNotify"];yield this._parseAndEmitC2CRevokedMessages(e)}catch(e){console.debug(e)}})}_parseAndEmitC2CRevokedMessages(s){return e(this,void 0,void 0,function*(){let a=[],{notificationCenter:e,OuterEvent:t,common:{getCurrentUserID:i}}=this._core;s.forEach(e=>{var{MsgRand:e,MsgSeq:t,To_Account:s,From_Account:r,RevokerInfo:{Revoker_Account:n,Revoke_Reason:o,Reason:o=o}}=e,s=i()===r?"C2C"+s:"C2C"+r,r=this._messageHelper.generateRevokeMessage({conversationID:s,sequence:t,random:e,revoker:n,revokeReason:o});a.push(r)}),0<a.length&&(yield this._messageHelper.updateRevokerInfo(a),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:a}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return e(this,void 0,void 0,function*(){var e=t.result["revokedMessageList"];yield this._parseAndEmitC2CRevokedMessages(e)})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this)}}class J{init(e){this._messageHelper=new H(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(e){e=e.GroupTips;null!=e&&e.forEach(e=>{var t;Array.isArray(null==(t=null==e?void 0:e.MsgBody)?void 0:t.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(e)})}_handleGroupRevokeMessage(o){return e(this,void 0,void 0,function*(){try{let{RevokerInfo:c,MsgBody:{GroupWithdrawInfoArray:e},GroupInfo:l}=o,u=[],d=[],{notificationCenter:t,OuterEvent:s,utils:{isEmpty:r},common:{isCommunity:n}}=this._core,g=!1;l&&(g=n({groupID:l.GroupId})||!r(l.TopicId)),e.forEach(e=>{var{Random:e,MsgSeq:t,GroupId:s,MsgClientTime:r,TinyId:n,TopicId:o,RevokerInfo:{Revoker_Account:a=(null==c?void 0:c.Revoker_Account)||"",Reason:i=(null==c?void 0:c.Reason)||""}}=e,o=this._messageHelper.generateRevokeMessage({conversationID:o?"GROUP"+o:"GROUP"+s,sequence:t,random:e,tinyID:n,clientTime:r,revoker:a,revokeReason:i});(g?(o.revokerInfo.nick=l.From_AccountNick,o.revokerInfo.avatar=l.From_AccountHeadurl,u):d).push(o)}),0<d.length&&(yield this._messageHelper.updateRevokerInfo(d),u.push(...d)),0!==u.length&&t.emitOuterEvent(s.MESSAGE_REVOKED,{name:s.MESSAGE_REVOKED,data:u})}catch(e){console.debug(e)}})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}}var X=new class{constructor(){this._c2cMessageReceiver=new Y,this._groupMessageReceiver=new J}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class Z{constructor(e){var t=(this._core=e)["constants"];this._messageHelper=new H(e),e.helper.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.GROUP_REVOKED_NOTICE_RECOVER,this._recoverGroupRevokeNotice,this)}getRoamingMessagesByAnchor(e){return this._core.message.messageHistory.getGroupRoamingMessagesByAnchor(e)}_recoverGroupRevokeNotice(e){let{recoverRevokeNoticeGroupIDList:t=[]}=e.result,r=this._filterValidGroupIDList(t);0!==r.length&&(e=Math.min(Math.ceil(r.length/10),5),Promise.all(Array.from({length:e},(e,t)=>{var t=10*t,s=Math.min(10+t,r.length);return this._fetchGroupRevokeNotice(r.slice(t,s))})).catch(e=>console.error(e)))}_fetchGroupRevokeNotice(s){return e(this,void 0,void 0,function*(){var r;try{var n=yield function(a){return e(this,void 0,void 0,function*(){let{appStore:e,constants:{OuterConstant:r},common:n}=t.core,o=e.groupStore.getGroupMap(),s={NotifyReqList:a.map(e=>{var s=o.get(e);return{NotifyType:1,Limit:20,Type:n.isCommunity({type:s.type,groupID:e})?r.GRP_COMMUNITY:void 0,GroupId:e,BeginTime:(null==s?void 0:s._lastRevokedTime)||0,EndTime:1e3*t.core.common.timeManager.getServerTimeMs()}})||[]};return n.buildAndSendPacket({servcmd:"group_open_http_svc.batch_get_group_notify",data:s})})}(s);if(n){let s=[];null!=(r=null==n?void 0:n.NotifyRspList)&&r.forEach(e=>{var{GroupId:e,NotifyMsgList:t}=e,e=this._parseServerRevokeMessageList({groupID:e,serverRevokeMessageList:t});s.push(...e)}),0!==s.length&&(yield this._emitMessageRevokedEvent(s))}}catch(e){console.error(e)}})}_parseServerRevokeMessageList(e){let{serverRevokeMessageList:t,groupID:a}=e,i=[];return null!=t&&t.forEach(e=>{var{ClientTime:e,MsgSeq:t,Random:s,RevokerInfo:{Revoker_Account:r="",Reason:n=""}}=e,o="GROUP"+a,o=this._messageHelper.generateRevokeMessage({conversationID:o,sequence:t,random:s,clientTime:e,revoker:r,revokeReason:n});i.push(o)}),i}_filterValidGroupIDList(e){let{OuterConstant:t}=this._core["constants"],s=this._core.appStore.groupStore.getGroupMap();return(null==e?void 0:e.filter(e=>{return!(!s.has(e)||(null==(e=s.get(e))?void 0:e.type)===t.GRP_AVCHATROOM||null!=e&&e.isSupportTopic)}))||[]}_emitMessageRevokedEvent(s){return e(this,void 0,void 0,function*(){var{notificationCenter:e,OuterEvent:t}=this._core;yield this._messageHelper.updateRevokerInfo(s),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:s})})}}class z{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new H(e)}getRoamingMessagesByAnchor(h){return e(this,void 0,void 0,function*(){var n;try{var{conversationID:o,count:a,messageID:i,time:c,direction:l}=h;let s=c,r="";if(!c){let e=i?this._core.message.messageDataHandler.findMessage(i):null;if(s=(null==e?void 0:e.time)||0,i&&this._historyMessageListFetchAnchors.has(o)){let e=this._historyMessageListFetchAnchors.get(o);s=e.lastMessageTime,r=e.messageKey}}var u=o.replace(S,""),d=yield function(a){return e(this,void 0,void 0,function*(){var{peerAccount:e,count:s,lastMessageTime:r,messageKey:n,direction:o}=a,e={Peer_Account:e,MaxCnt:s,WithRecalledMsg:1,LastMsgTime:r,MsgKey:n,GetDirection:o};return t.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:e})})}({count:a,lastMessageTime:s,messageKey:r,peerAccount:u,direction:l});if(d){let{MsgList:r=[],Complete:e,MsgKey:t,LastMsgTime:s}=d;this._historyMessageListFetchAnchors.set(o,{messageKey:t,lastMessageTime:s});var g=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);g.push(t)}var m=this._core.message.messageHelper.filterValidMessages(g);return{messageList:m,nextReqMessageIDFromServer:null==(n=m[0])?void 0:n.ID,lastMessageTime:s,hasNoMoreHistoryMessage:1===e}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}clearHistoryMessageListFetchAnchors(e){this._historyMessageListFetchAnchors.delete(e)}reset(){this._historyMessageListFetchAnchors.clear()}_parseMessage(e){var t=S,e=this._core.message.messageHelper.parseServerPushMessage(e),t=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:t,flow:"in"}));return t.setElement(e.elements),t}}var Q=new class{constructor(){this._clearedConversations=new Set,this._fetchedCompleteConversations=new Set}init(e){this._core=e,this._groupMessageHistory=new Z(e),this._c2cMessageHistory=new z(e),this._messageHelper=new H(e),e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(s){return e(this,void 0,void 0,function*(){try{var{conversationID:a,nextReqMessageID:i}=s,e=D;if("@TIM#SYSTEM"===a)return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};var c=this._core.ssoLog.createSSOLogData({method:"getMessageList"}),l=this._getAvailableLocalMessagesCount({conversationID:a,nextReqMessageID:i});if(this._needFetchHistoryMessageList({conversationID:a,availableLocalMessagesCount:l,targetCount:e})){let o=null;if(a.startsWith(R)?o=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:a,sequence:Number(i),count:e,direction:n.FORWARD}):a.startsWith(S)&&(o=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:a,messageID:i,count:e,direction:n.FORWARD})),o){let{nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:s,messageList:r}=o,n=this._core.message.messageDataHandler.prependLocalMessageList({messageList:r,conversationID:a});var u=a,{appStore:d,message:g,OuterConstant:m}=t.core,d=d.conversationStore.getConversation(u),h=g.messageDataHandler.getLocalMessageList(u);if(d&&0!==h.length&&u!==m.CONV_SYSTEM){var v=[];for(let e=0;e<h.length;e++)"in"!==h[e].flow?"out"!==h[e].flow||h[e].isRead||h[e].setIsRead(!0):v.push(h[e]);let t=0;if(d.type===m.CONV_C2C){let e=v.slice(-d.unreadCount).filter(e=>e.isRevoked).length;t=v.length-d.unreadCount-e}else t=v.length-d.unreadCount;for(let e=0;e<t&&!v[e].isRead;e++)v[e].setIsRead(!0)}yield L(a),a.startsWith(S)&&(yield A({messageList:r,conversationID:a}));var p=this._core.message.messageDataHandler.getLocalMessageList(a).slice(0,n.length+l),_=p.filter(e=>e.isRevoked),M=(yield this._messageHelper.updateRevokerInfo(_),s&&this._fetchedCompleteConversations.add(a),{nextReqMessageID:s?"":String(e),messageList:p,isCompleted:s}),E=p.map(e=>e.sequence);return c.setLogInfo({message:`conversationID: ${a} nextReqMessageID: ${i}
3
+ availableLocalMessagesCount: ${l} sequenceList: ${JSON.stringify(E)} `}).end(),{code:0,data:M}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return c.setLogInfo({message:`conversationID: ${a} nextReqMessageID: ${i} availableLocalMessagesCount: ${l}}`}).end(),{code:0,data:yield this._getMessageListFromMemory({conversationID:a,nextReqMessageID:i,count:e})}}catch(e){let t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getMessageList").setError(t).end(),console.debug(t)}})}getMessageListHopping(r){return e(this,void 0,void 0,function*(){var a,i;let{conversationID:e,sequence:c,time:t,direction:l=n.FORWARD}=r,u=this._core.helper["isEmpty"];if(![n.BACKWARD,n.FORWARD].includes(l))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:s=D}=r,d=(s=s>D?D:s,null);if(e.startsWith(R)){if(d=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:c,count:s,direction:l})){let{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:s,messageList:r,invisibleSequenceList:o}=d;if(this._core.message.messageDataHandler.storeSparseMessageList(r),l===n.FORWARD){let e=s&&t<1;return{code:0,data:{messageList:r,isCompleted:e,nextMessageSeq:e?"":t}}}if(l!==n.BACKWARD)return{code:0,data:d};{if(u(r)&&u(o))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};let e=(null==(a=null==r?void 0:r[r.length-1])?void 0:a.sequence)||0,t=(null==(i=null==o?void 0:o[o.length-1])?void 0:i.sequence)||0;return{code:0,data:{messageList:r.filter(e=>e.sequence>=c),isCompleted:!s,nextMessageSeq:s?Math.max(e,t)+1:""}}}}}else if(e.startsWith(S)&&(d=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:e,count:s+1,time:t,direction:l}))){let{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=d;return s||(l===n.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}})}clearHistoryMessage(v){return e(this,void 0,void 0,function*(){let r,{appStore:s,common:{ChatError:n,getCurrentUserID:o},OuterConstant:{CONV_C2C:a,CONV_GROUP:i},message:c,apiMap:l,ssoLog:u}=this._core,d=s.conversationStore.getConversation(v);if(!d)throw new n({code:I});var g=u.createSSOLogData({method:"clearHistoryMessage"}),m=(g.setLogInfo({message:"convID:"+v}),{fromAccount:o()}),h=d["type"];h===a?(m.type=f,m.toAccount=v.replace(a,"")):h===i&&(m.type=y,m.toGroupID=v.replace(i,""));try{yield null==(r=null==l?void 0:l.setMessageRead)?void 0:r.call(l,{conversationID:v});let s=yield function(o){return e(this,void 0,void 0,function*(){var{fromAccount:e,type:s,toAccount:r,toGroupID:n}=o,e={From_Account:e,Type:s,To_Account:r,ToGroupid:n};return t.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:e})})}(m);return s&&(g.end(),c.messageDataHandler.deleteConversationMessageList(v),this._clearedConversations.add(v),this._fetchedCompleteConversations.delete(v),this._c2cMessageHistory.clearHistoryMessageListFetchAnchors(v),this._updateConversationLastMessage(v)),{code:0,data:{conversationID:v}}}catch(e){let t=e["errorCode"],s=new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:t});throw g.setError(s).end(),s}})}_updateConversationLastMessage(e){var t=this._core["appStore"];t.conversationStore.updateConversation(e,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e),r=s["length"];if(!t)return r;let n=-1;return null!=e&&e.startsWith(S)?n=s.findIndex(e=>e.ID===t):null!=e&&e.startsWith(R)&&(n=s.findIndex(e=>t.includes("-")?e.ID===t:String(e.sequence)===t)),-1===n?0:n}_needFetchHistoryMessageList({conversationID:e,availableLocalMessagesCount:t,targetCount:s}){return!!this._clearedConversations.has(e)||t<s&&!this._fetchedCompleteConversations.has(e)}_getMessageListFromMemory(t){return e(this,arguments,void 0,function*({conversationID:t,nextReqMessageID:s,count:e}){var r=this._core.message.messageDataHandler.getLocalMessageList(t),n=r.length;let o=n,a={isCompleted:!1,nextReqMessageID:"",messageList:[]},i=0,c=n;return s?(c=r.findIndex(e=>t.startsWith(S)?e.ID===s:String(e.sequence)===s),i=c>e?c-e:0,o=c):i=e<n?n-e:0,a.nextReqMessageID=0===i?"":this._generateNextReqMessageID({conversationID:t,targetIndex:i}),a.messageList=r.slice(i,c),a.isCompleted=o<=e,t.startsWith(S)&&(yield L(t),yield A({messageList:a.messageList,conversationID:t})),a})}_generateNextReqMessageID({conversationID:e,targetIndex:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e);return e.startsWith("C2C")?s[t].ID:String(s[t].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}reset(){this._clearedConversations.clear(),this._fetchedCompleteConversations.clear(),this._c2cMessageHistory.reset()}dispose(){this.reset()}},ee=new class{constructor(){this._core=null}init(e){e=(this._core=e).helper;e.registerApi({apiName:"translateText",context:this})}translateText(o){return e(this,void 0,void 0,function*(){try{var{sourceLanguage:t,sourceTextList:s,targetLanguage:r}=o,n=yield function(a,i){return e(this,void 0,void 0,function*(){var e,{sourceTextList:t,sourceLanguage:s,targetLanguage:r}=a,{store:n,common:o}=i,s={SourceText:t,Source:s,Target:r,FromAccount:null==(e=n.get("login"))?void 0:e.tinyID,SDKAppID:null==(t=n.get("instance"))?void 0:t.sdkAppId},r=yield o.buildAndSendPacket({servcmd:"im_open_translate.ws_batch_trans_text",data:s});if(r){let{CmdErrorCode:e,TargetText:t}=r;return{cmdErrorCode:e,translatedTextList:t}}})}({sourceLanguage:t,sourceTextList:s,targetLanguage:r},this._core);if(n){let{cmdErrorCode:{ErrorCode:e,ErrorInfo:t},translatedTextList:s}=n;if(0===e)return{code:0,data:{translatedTextList:s}};throw{errorCode:e,errorInfo:t,message:t}}}catch(e){let{errorCode:t,errorInfo:s}=e||{};throw new this._core.helper.ChatError({functionName:"translateText",code:t,message:s})}})}},te=new class{init(e){(this._core=e).helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(i){return e(this,void 0,void 0,function*(){var r,e,{message:n,language:s=c.ZH_PY}=i;let o=(n.payload||{})["url"];var a=null==(r=this._core.store.get("login"))?void 0:r.userID,a=(n.from===a&&"out"===n.flow&&(o=n.payload.remoteAudioUrl),this._validateVoiceFormat(o),(null==(e=p.exec(o))?void 0:e[1])||"mp3"),n=h[s]||m;try{let s=yield function(e){var{store:s,common:r}=t.core,{url:e,format:n,serverLanguageType:o}=e,o={BytesUrl:e,BytesEngServiceType:o,BytesVoiceFormat:n,Uint32Sdkappid:null==(e=s.get("instance"))?void 0:e.sdkAppId,Uint64SourceType:0};return r.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:o})}({url:o,format:a,serverLanguageType:n});if(s){let{CmdErrorCode:e,BytesResult:t}=s;if(0===e.ErrorCode)return{code:0,data:{result:t}};throw{code:e.ErrorCode,message:e.ErrorInfo}}}catch(r){let{code:e,message:t}=r||{},s=new this._core.common.ChatError({functionName:"convertVoiceToText",code:e,message:t});console.error(s),this._core.ssoLog.createSSOLogData({method:"convertVoiceToText"}).setError(s).end()}})}_validateVoiceFormat(e){if(!p.test(e))throw new this._core.common.ChatError({code:2119})}};class se{constructor(e){var{constants:s,common:r,utils:n}=t.core,{CONV_C2C:s,CONV_GROUP:o}=s.OuterConstant,{ID:e,tinyID:a,from:i,to:c,clientTime:r=r.timeManager.getServerTimeSeconds()||0,random:l,sequence:u,cloudCustomData:d="",nick:g="",avatar:m="",clientSequence:h,conversationType:v,groupID:p,_elements:_,time:M}=e,a=(this.ID=e||a+`-${r}-`+l,this.messageRandom=l,this.from=i,this.messageSender=i,this.time=M,this.messageSequence=u,this.clientSequence=h||u,this.clientTime=r,this.cloudCustomData=d,this.messageReceiver=c,this.avatar=m,this.nick=g,n.deepCopyWithMethods(_));a.forEach(e=>{e.payload=e.content,delete e.content}),this.messageBody=a,e?v.startsWith(s)?this.receiverUserID=c:v.startsWith(o)&&(this.receiverGroupID=c):p?(this.receiverGroupID=p,this.messageReceiver=p):c&&(this.receiverUserID=c,this.messageReceiver=c)}transformElementsToServerFormat(){return this.messageBody?Array.isArray(this.messageBody)?this.messageBody.map(e=>e.transformToServerFormat({isMergerMessage:!0})):this.messageBody.transformToServerFormat({isMergerMessage:!0}):null}}class ne{static parseServerPushElement(e){var e=e["MsgContent"],{MsgList:e=[],CompatibleText:t,AbstractList:s,Title:r,PbMsgKey:n,JsonMsgKey:o}=e||{},e=e.map(e=>T(e));return new ne({messageList:e,title:r,abstractList:s,compatibleText:t,pbDownloadKey:n,downloadKey:o})}constructor(e){this.type=t.core.constants.OuterConstant.MSG_MERGER;let{messageList:s,title:r,abstractList:n,compatibleText:o,pbDownloadKey:a="",downloadKey:i="",version:c=0,layersOverLimit:l=!1}=e,u=[];s.forEach(e=>{e&&(e=new se(e),u.push(e))}),this.content={messageList:u,title:r,abstractList:n,compatibleText:o,version:c,downloadKey:i,pbDownloadKey:a,layersOverLimit:l}}validateBeforeSend(){var e=t.core.helper["isEmpty"];return e(this.content.messageList)?{isValid:!1,error:{message:"content is invalid"}}:{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{abstractList:e,compatibleText:t,downloadKey:s,layersOverLimit:r,pbDownloadKey:n,title:o,version:a,messageList:i}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{AbstractList:e,CompatibleText:t,JsonMsgKey:s,LayersOverLimit:r,PbMsgKey:n,Title:o,Version:a,MsgList:x(i)}}}}var oe=new class{init(e){let{message:t,helper:s,constants:{OuterConstant:r}}=this._core=e;t.messageFactory.registerElementClass(r.MSG_MERGER,ne),s.registerApi({apiName:"createMergerMessage",context:this}),s.registerApi({apiName:"sendMessage",context:this,matcher:e=>e[0].type===r.MSG_MERGER}),s.registerApi({apiName:"downloadMergerMessage",context:this})}createMergerMessage(e){var t,s=this._core["common"];return e?(t=new ne(e.payload),s=s.getCurrentUserID(),(e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setRelayFlag(!0),e.setElement(t),e):null}sendMessage(l,u){return e(this,void 0,void 0,function*(){var s,r,n;try{var i=function(s){let e="utf-8";t.core.helper.IN_BROWSER&&document&&(e=document.charset.toLowerCase());let r,n=0,o;if(o=s.length,"utf-8"===e||"utf8"===e)for(let e=0;e<o;e++)(r=s.codePointAt(e))<=127?n+=1:r<=2047?n+=2:r<=65535?n+=3:(n+=4,e++);else if("utf-16"===e||"utf16"===e)for(let e=0;e<o;e++)(r=s.codePointAt(e))<=65535?n+=2:(n+=4,e++);else n=s.replace(/[^\x00-\xff]/g,"aa").length;return n}(JSON.stringify(l));let o=l,a=null;if(11264<i){o=this._core.utils.deepCopyWithMethods(l);try{let{JsonMsgKey:s,PbMsgKey:r}=yield function(s){return e(this,void 0,void 0,function*(){var e=s["payload"]["messageList"],e={MsgList:x(e)};return t.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:e})})}(o),n=o["payload"];a=new ne(Object.assign(Object.assign({},n),{messageList:[],downloadKey:s,pbDownloadKey:r})),o.setElement(a)}catch(e){console.error(e)}}var{message:c}=(yield null==(n=null==(r=null==(s=this._core)?void 0:s.message)?void 0:r.messageSender)?void 0:n.sendMessage(o,u))["data"];return a&&c.setElement(l._elements),{code:0,data:{message:c}}}catch(e){throw console.error(e),e}})}downloadMergerMessage(i){return e(this,void 0,void 0,function*(){try{var s=i.payload,r=s["downloadKey"],n=function(e,t){var s={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(s[n[r]]=e[n[r]]);return s}(s,["downloadKey","pbDownload","type","messageList"]),o=((yield function(s){return e(this,void 0,void 0,function*(){return t.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:s}})})}(r))||{})["MsgList"],a=null==o?void 0:o.map(e=>{e=T(e);return new se(e)});return"function"==typeof i.isOnlineMessage?i.setElement({type:i.type,content:Object.assign({messageList:a},n)}):(i.payload.messageList=a,i.payload.downloadKey="",i.payload.pbDownloadKey=""),i}catch(e){console.error(e)}})}},re=new class{constructor(){this.name="MessageEnhancer"}install(e){this._core=e,t.init(e),K.init(e),j.init(e),X.init(e),Q.init(e),q.init(e),ee.init(e),te.init(e),b.init(e),oe.init(e),k.init(e),e.helper.registerValidateConfig({auth:F,params:U}),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.LOGOUT,this._reset,this),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.DESTROY,this.dispose,this)}dispose(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this.dispose,this),X.dispose(),Q.dispose(),b.dispose(),k.dispose()}_reset(){Q.reset()}};export{re as default};