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