@tencentcloud/lite-chat 1.3.0 → 1.4.0
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/CHANGELOG.md +9 -0
- package/basic.es.js +3 -2
- package/basic.js +3 -2
- package/package.json +1 -1
- package/plugins/conversation-group.d.ts +8 -0
- package/plugins/conversation.es.js +1 -1
- package/plugins/conversation.js +1 -1
- package/plugins/group.es.js +1 -1
- package/plugins/group.js +1 -1
- package/plugins/message-enhancer.es.js +3 -4
- package/plugins/message-enhancer.js +3 -4
- package/plugins/offline-message-synchronizer.d.ts +9 -0
- package/plugins/offline-message-synchronizer.es.js +1 -0
- package/plugins/offline-message-synchronizer.js +1 -0
- package/plugins/signaling.d.ts +8 -0
- package/plugins/topic.es.js +1 -1
- package/plugins/topic.js +1 -1
- package/professional.es.js +5 -5
- package/professional.js +5 -5
- package/standard.es.js +5 -5
- package/standard.js +5 -5
|
@@ -1,4 +1,3 @@
|
|
|
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 v(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 E=new class{init(e){this.core=e}};var r,g,f,e;(e=r=r||{}).MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem",(e=g=g||{})[e.DATA_HAS_EXPIRED=0]="DATA_HAS_EXPIRED",e[e.HAS_MORE_DATA=1]="HAS_MORE_DATA",e[e.NO_MORE_DATA=2]="NO_MORE_DATA",(e=f=f||{})[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD";let i={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},c="16k_zh-PY",l={[i.ZH_CN]:"16k_zh",[i.EN_US]:"16k_en",[i.YUE_HK]:"16k_yue",[i.JA_JP]:"16k_ja",[i.ZH_PY]:c},u=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,d={READ:0,UNREAD:1},y="C2C",S="GROUP";function C(o){return v(this,void 0,void 0,function*(){var e,s=E.core["appStore"],{messageList:t,conversationID:r}=o,s=s.conversationStore.getConversationMap();let n=null==(e=s.get(r))?void 0:e.peerReadTime;if(!n){let e=r.replace(y,""),t=yield function(t){return v(this,void 0,void 0,function*(){var e={To_Account:t};return E.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([e]);if(t){let e=t["ReadTime"];n=null==e?void 0:e[0],s.has(r)&&(s.get(r).peerReadTime=n)}}t.forEach(e=>{e.time<=n&&!e.isPeerRead&&"out"===e.flow&&(e.isPeerRead=!0)})})}function I(i){return v(this,void 0,void 0,function*(){var e;let{message:s,user:t,appStore:r,constants:{OuterConstant:n}}=E.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;E.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 m(e){let t,s=E.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 h(e){return e.map(e=>{var{from:t,to:s,cloudCustomData:r,avatar:n,nick:o,ID:a,clientSequence:i,clientTime:c,messageRandom:l,messageSequence:u,time:d}=e;return{ClientSeq:i,CloudCustomData:r,From_Account:t,From_AccountHeadurl:n,From_AccountNick:o,Id:a,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:l,Random:l,MsgSeq:u,MsgTimeStamp:d,ReceiverId:s,SenderId:t,To_Account:s}})}function a(e){var{From_Account:t,From_AccountHeadurl:s,From_AccountNick:r,GroupId:n,MsgClientTime:o,ClientSeq:a,To_Account:i,MsgTimeStamp:c,TinyId:l,MsgRandom:u,MsgSeq:d}=e;return{from:t,avatar:s,nick:r,clientTime:o,time:c,tinyID:l,random:u,sequence:d,to:i,groupID:n,clientSequence:a,_elements:null==(t=e.MsgBody)?void 0:t.map(e=>{var t=e["MsgType"];return E.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(g,m){return v(this,void 0,void 0,function*(){var{OuterConstant:e,ssoLog:r,helper:n}=this._core,r=(this._validateMessageReactionBusinessCapability(),r.createSSOLogData({method:"addMessageReaction"})),{conversationID:t,ID:o,conversationType:s,from:a,to:i,clientSequence:c,random:l,time:u,sequence:d}=g;try{return this._recordMessageReactedByMe(o,m),s===e.CONV_C2C?yield function(a,i){return v(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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:t})})}({from:a,to:i,clientSequence:c,random:l,time:u,reactionID:m},this._core):s===e.CONV_GROUP&&(yield function(r,n){return v(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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:s})})}({to:i,reactionID:m,sequence:d},this._core)),r.setLogInfo({message:`conversationID:${t} messageID:${o} reactionID:`+m}).end(),{code:0}}catch(e){this._removeMyReactionRecord(o,m);let t=(e||{})["errorCode"],s=new n.ChatError({functionName:"addMessageReaction",code:t});r.setError(s).end(),console.error("addMessageReaction error: ",e)}})}removeMessageReaction(d,g){return v(this,void 0,void 0,function*(){let{OuterConstant:l,ssoLog:e,helper:r}=this._core;this._validateMessageReactionBusinessCapability();var u=e.createSSOLogData({method:"removeMessageReaction"});try{let{conversationID:e,ID:t,conversationType:s,from:r,to:n,clientSequence:o,random:a,time:i,sequence:c}=d;return this._removeMyReactionRecord(t,g),s===l.CONV_C2C?yield function(a,i){return v(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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:t})})}({from:r,to:n,clientSequence:o,random:a,time:i,reactionID:g},this._core):s===l.CONV_GROUP&&(yield function(r,n){return v(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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:s},n)})}({to:n,reactionID:g,sequence:c},this._core)),u.setLogInfo({message:`conversationID:${e} messageID:${t} reactionID:`+g}).end(),{code:0}}catch(e){let t=(e||{})["errorCode"],s=new r.ChatError({functionName:"removeMessageReaction",code:t});u.setError(s).end(),console.error("removeMessageReaction error: ",e)}})}getAllUserListOfMessageReaction(l){return v(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();let{message:e,reactionID:t,nextSeq:r=0}=l,s=100<l.count?100:l.count,n=e["conversationID"],{ssoLog:o,helper:a,constants:i}=this._core;try{var c;if(c=n.startsWith(i.OuterConstant.CONV_C2C)?yield function(c){return v(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 E.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 v(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 E.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}=c,s=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===r,userList:s}}}}catch(e){let t=(e||{})["errorCode"],s=new a.ChatError({functionName:"getAllUserListOfMessageReaction",code:t});o.createSSOLogData({method:"removeMessageReaction"}).setError(s).end(),console.error("getAllUserListOfMessageReaction error: ",e)}})}getMessageReactions(m){return v(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,l=this._generateMessageKeyList(t,o),{Results:u=[]}=(c===e.OuterConstant.CONV_C2C?n=yield function(n){return v(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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:e})})}({from:a,to:i,messageKeyList:l,maxUserCountPerReaction:s}):c===e.OuterConstant.CONV_GROUP&&(n=yield function(r){return v(this,void 0,void 0,function*(){var{groupId:e,messageSequenceList:t,maxUserCountPerReaction:s}=r,e={GroupId:e,MsgSeqList:t,Count:s};return E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:e})})}({groupId:i,messageSequenceList:l,maxUserCountPerReaction:s})),n||{}),d=this._extractUserIDsFromReactionResults(u),g=yield this._getUserProfileMap(d);return{code:0,data:{resultList:u.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 v(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 v(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(u=>v(this,void 0,void 0,function*(){let{C2CMsgInfo:e,GroupMsgInfo:t,MsgReactionSummary:s}=u,{TinyId:r,MsgClientTime:n,MsgRandom:o}=Object.assign(Object.assign({},e),t),a=r+`-${n}-`+o,i=this._extractUserIDsFromReactionResults([{ReactionList:s}]),c=yield this._getUserProfileMap(i),l=s.map(e=>{var{Reaction:t,Reaction_Account:s}=e,r=this._generatePartialUserInfo({userIDList:s,userProfileMap:c}),s=s?e.Count:0,e=(null==(e=this._reactionsMap.get(a+"-"+t))?void 0:e.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:a,reactionID:t,reactionInfo:{reactionID:t,totalUserCount:s,partialUserList:r}}),{reactionID:t,totalUserCount:s,partialUserList:r,reactedByMyself:e}});d.emitOuterEvent(g.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:g.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:a,reactionList:l}})}))}_handleReactionSync(e){var{notificationCenter:t,constants:s}=this._core,{C2CMsgInfo:e={},GroupMsgInfo:r={},Reaction:n,OperateType:o}=e.MsgReactionNotify,{TinyId:e="",MsgClientTime:r=0,MsgRandom:a=0}=Object.assign(Object.assign({},e),r),r=e+`-${r}-`+a,a=r+"-"+n;if(1===o?this._recordMessageReactedByMe(r,n):this._removeMyReactionRecord(r,n),null!=(e=this._reactionsMap.get(a))&&e.reactionID){let e=this._reactionsMap.get(a);e.reactedByMyself=1===o,t.emitOuterEvent(s.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:s.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:r,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){let s=[];return null!=e&&e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){var{messageSequence:e,messageKey:t,messageIDMap:s}=e;return t?s.get(t):s.get(e)}_generateMessageKeyList(e,n){var t=this._core["constants"],s=e[0]["conversationType"];let r=[];return s===t.OuterConstant.CONV_C2C?r=e.map(e=>{var{clientSequence:e,random:t,time:s,ID:r}=e,e=e+`_${t}_`+s;return n.set(e,r),e}):s===t.OuterConstant.CONV_GROUP&&(r=e.map(e=>{var{ID:e,sequence:t}=e;return n.set(t,e),t})),r}},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 v(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 v(this,void 0,void 0,function*(){var{common:e,constants:t}=E.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 v(this,void 0,void 0,function*(){var{common:e,constants:t}=E.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 v(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 v(this,void 0,void 0,function*(){var{common:e,constants:t}=E.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 v(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,l=n.replace(e.OuterConstant.CONV_GROUP,""),u=100<=o.count?100:o.count;try{let o=yield function(o){return v(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 E.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:e})})}({groupID:l,sequence:i,filter:a,cursor:s,count:u});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=m({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=m({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 v(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=E.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 _(r,n,o){return v(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=E.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 n=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){var{notificationCenter:e,helper:{registerApi:t},InnerEvent:{MESSAGE_PUSH:s,LOGOUT:r},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core=e;t({apiName:"setMessageExtensions",context:this}),t({apiName:"getMessageExtensions",context:this}),t({apiName:"deleteMessageExtensions",context:this}),e.subscribeInnerEvent(s,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(r,this.reset,this)}setMessageExtensions(d,r){return v(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");let{constants:{OuterConstant:s},ssoLog:e}=this._core,{ID:n,conversationID:o,sequence:a,time:i,conversationType:t}=d,c=e.createSSOLogData({method:"setMessageExtensions"}),l=r;20<r.length&&(l=r.slice(0,20),console.warn("the length of extensions cannot exceed 20"));var u=this._generateServerExtensions(d,l);try{let r;if(t===s.CONV_C2C?r=yield p(d,u,1):t===s.CONV_GROUP&&(r=yield _(d,u,1)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(d,r);return c.setLogInfo({message:`convID:${o} messageID:${n} sequence:${a}
|
|
2
|
-
time:${i} count:${l.length} successCount:${t} failCount:`+s}).end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"setMessageExtensions",code:e});throw c.setError(t).end(),t}})}getMessageExtensions(a){return v(this,void 0,void 0,function*(){var{isUndefined:r}=this._core["utils"];this._validateMessageExtensionBusinessCapability("getMessageExtensions");let{conversationID:e,ID:s,sequence:t,time:n}=a,o=this._core.ssoLog.createSSOLogData({method:"getMessageExtensions"});o.setLogInfo({message:`convID:${e} messageID:${s} sequence:${t} time:`+n});try{let e,t=(this._completedFetchExtensions.has(s)&&(e=this._extensionsLatestSequenceMap.get(s)),yield this._fetchMessageExtensions(a,e));return r(e)&&1<t.length&&this._completedFetchExtensions.add(s),o.end(),{code:0,data:{extensions:t}}}catch(r){let{errorCode:e,errorInfo:t=""}=r||{},s=new this._core.common.ChatError({code:e,message:t});throw o.setError(s).end(),s}})}deleteMessageExtensions(g,m){return v(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");let{utils:{isEmpty:s},constants:{OuterConstant:e},ssoLog:t}=this._core,{conversationType:n,conversationID:r,sequence:o,ID:a,time:i}=g,c=3,l=[];s(m)||(c=2,null==m)||m.forEach(e=>{l.push({key:e,value:"",seq:0})});var u=t.createSSOLogData({method:"deleteMessageExtensions"}),d=(u.setLogInfo({message:`convID:${r} messageID:${a} sequence:${o} time:${i} operateType:`+c}),this._generateServerExtensions(g,l));try{let r;if(n===e.CONV_C2C?r=yield p(g,d,c):n===e.CONV_GROUP&&(r=yield _(g,d,c)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(g,r);return u.setMoreMessage(`success count:${t} fail count:`+s),u.end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:e});throw u.setError(t).end(),t}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=this._core;e.unSubscribeInnerEvent(t,r,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){let s=e["ID"],r=t["Seq"],n=t.ExtensionList||[],o=[],a=0,i=0,c=[];return n.forEach(e=>{var{ErrorCode:e,Extension:t}=e,{Key:t,Value:s,Seq:r}=t;o.push({code:e,key:t,value:s}),0===e?a++:i++,c.push({key:t,value:s,seq:r})}),this._extensionsLatestSequenceMap.set(s,r),0<c.length&&this._updateLocalExtensions(e.ID,c),{resultList:o,successCount:a,failureCount:i}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);let r=this._messageExtensionsMap.get(e);null!=t&&t.forEach(e=>{var{key:e,seq:t,value:s=""}=e;null!=r&&r.set(e,{value:s,seq:t})})}_fetchMessageExtensions(c,s){return v(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=E.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=E.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){console.error(e)}})}_clearLocationExtensions(e,r){if(!(r<=0)&&this._messageExtensionsMap.has(e)){let s=this._messageExtensionsMap.get(e);null!=s&&s.forEach((e,t)=>{e.seq<=r&&s.delete(t)})}}_generateServerExtensions(e,t){var s=e["ID"];if(this._messageExtensionsMap.has(s)){let r=this._messageExtensionsMap.get(s);return t.map(e=>{var{key:e,value:t}=e;let s=0;return{Key:e,Value:t,Seq:s=null!=r&&r.has(e)?null==(t=r.get(e))?void 0:t.seq:s}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){var{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits("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 o={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{OuterConstant:t}=E.core["constants"];return e.status!==t.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},M={setMessageExtensions:[o,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[o],deleteMessageExtensions:[o]},R=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}=E.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}}}),M),D=Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0});class A{constructor(e){this._core=e}deleteMessage(s){return v(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 v(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 v(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 v(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=Object.assign(Object.assign({},i),{revoker:a,revokeReason:o,revokerInfo:{userID:a,nick:"",avatar:""}})}updateRevokerInfo(t){return v(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)}})}filterValidMessages(e){return e.filter(e=>{var t=!this._core.helper.isEmpty(null==e?void 0:e.getElements()),s=1===(null==e?void 0:e.isPlaceMessage);return t||this._core.ssoLog.createSSOLogData({method:"emptyMessageBody"}).setLogInfo({message:`from:${e.from} to:${e.to} sequence:`+e.sequence}).end(),t&&!s})}_fetchUserInfos(t){return v(this,void 0,void 0,function*(){var e=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:t});return null!=e&&e.data?null==(e=e.data)?void 0:e.reduce((e,{userID:t,nick:s,avatar:r})=>(e[t]={nick:s||"",avatar:r||""},e),{}):null})}}var k=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new 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 v(this,void 0,void 0,function*(){let c=[],l=[],{conversationID:u,conversationType:d}=t[0],e=u.replace(d,"");if("@TIM#SYSTEM"===d)throw new this._core.helper.ChatError({code: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===u&&s===d){if(!n){let e="C2C"===s?o+`_${a}_`+i:String(o);c.push(e)}l.push(e)}}),0===c.length)return this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}};30<c.length&&(c=c.slice(0,30),l=l.slice(0,30));try{return"C2C"===d?yield this._c2cMessageAction.deleteMessage({to:e,messageIdentifiers:c}):yield this._groupMessageAction.deleteMessage({to:e,messageIdentifiers:c}),this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}}}catch(c){let e=c["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessage",code:e})}})}revokeMessage(o){return v(this,void 0,void 0,function*(){let s,r=this._core.ssoLog.createSSOLogData({method:"revokeMessage"}),{conversationType:e,isRevoked:t}=o;var n;if("@TIM#SYSTEM"===e)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(t)throw new this._core.helper.ChatError({message:"message has been revoked"});r.setLogInfo({message:`type:${o.type} from:${o.from} to:`+o.to});try{if(n="C2C"===e?yield this._c2cMessageAction.revokeMessage(o):yield this._groupMessageAction.revokeMessage(o)){let e=n["RecallRetList"],t=(null==(s=null==e?void 0:e[0])?void 0:s.RetCode)||0;if(0!==t)throw new this._core.helper.ChatError({code:t});return r.end(),yield this._handleRevokeMessageSuccess(o),{code:0,data:{message:o}}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"revokeMessage",code:e});throw this._core.ssoLog.getSSOLogData("revokeMessage").setError(t).end(),t}})}resendMessage(t,s){return v(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 v(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:l=!1}=e;if(!Array.isArray(o._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(o.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});s=this._core.common.getCurrentUserID(),t=this._core.message.messageFactory.createMessage({to:e,from:s,conversationType:r,isPlaceMessage:0,priority:n,payload:o,needReadReceipt:a,isSupportExtension:l,cloudCustomData:c,receiverList:i});return t.setRelayFlag(!0),t.setElement(o._elements[0]),t}createLocationMessage(e){var t,s,r;return e?({description:t,longitude:s,latitude:r}=(null==e?void 0:e.payload)||{},t=new 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 P{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 v(this,void 0,void 0,function*(){try{var{C2cWithdrawInfoArray:e}=t["WithdrawC2cMsgNotify"];yield this._parseAndEmitC2CRevokedMessages(e)}catch(e){console.debug(e)}})}_parseAndEmitC2CRevokedMessages(s){return v(this,void 0,void 0,function*(){let a=[],{notificationCenter:e,OuterEvent:t,common:{getCurrentUserID:i}}=this._core;s.forEach(e=>{var{MsgRand:e,MsgSeq:t,To_Account:s,From_Account:r,RevokerInfo:{Revoker_Account:n,Revoke_Reason:o,Reason:o=o}}=e,s=i()===r?"C2C"+s:"C2C"+r,r=this._messageHelper.generateRevokeMessage({conversationID:s,sequence:t,random:e,revoker:n,revokeReason:o});a.push(r)}),0<a.length&&(yield this._messageHelper.updateRevokerInfo(a),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:a}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return v(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(r){return v(this,void 0,void 0,function*(){try{let{RevokerInfo:c,MsgBody:{GroupWithdrawInfoArray:e}}=r,l=[],{notificationCenter:t,OuterEvent:s}=this._core;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});l.push(o)}),0!==l.length&&(yield this._messageHelper.updateRevokerInfo(l),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 P,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){this._lastMessageSequenceMapOnDisconnect=new Map,this._core=e,this._messageHelper=new O(e)}getRoamingMessagesByAnchor(r){return v(this,void 0,void 0,function*(){try{var a=this._core.ssoLog.createSSOLogData({method:"getRoamingMessagesByAnchor"}),{conversationID:e,count:t,direction:i,sequence:c}=r,l=e.replace(S,"");let o=c;if(i===f.BACKWARD){if("number"!=typeof c)return{messageList:[],hasNoMoreHistoryMessage:!1,nextReqMessageIDFromServer:""};o=c+t-1}var s={GroupId:l,ReqMsgNumber:t,WithRecalledMsg:1,Version:1},u=(o&&(s.ReqMsgSeq=o),yield this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_get",data:s}));if(u){let{RspMsgList:r=[],NextReqMsgSeq:e=0,IsFinished:t,InvisibleMsgSeq:s}=u;a.setLogInfo({message:`groupID:${l} sequence:${c} reqSeq:${o} direction:${i}
|
|
3
|
-
complete:${t} nextSequence:${e} remoteMsgCount:${r.length} invisibleSequenceList:`+s}).end();var d=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);d.push(t)}d.reverse();let n=t===g.NO_MORE_DATA;return i===f.BACKWARD&&(n=d[d.length-1].sequence>=c),{messageList:this._messageHelper.filterValidMessages(d),invisibleSequenceList:s,nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:n}}}catch(e){let t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getRoamingMessagesByAnchor").setError(t).end()}})}recoverHistoryMessage(e){return v(this,void 0,void 0,function*(){let{message:{messageReceiver:d,messageDataHandler:g},notificationCenter:m,OuterEvent:h,constants:{OuterConstant:s}}=this._core,r=[];null!=e&&e.forEach(t=>v(this,void 0,void 0,function*(){let{conversationID:i,lastMessage:e}=t,c=this._getLocalLastMessageSequence(i);var l=e.lastSequence;if(this._shouldRecoverHistory({localLastMessageSequence:c,serverLastMessageSequence:l})){let e=l-c;var u;let t=Math.ceil(e/20);for(let e=0;e<t;e++)try{let e=l-c,t=Math.min(20,e),s=yield this.getRoamingMessagesByAnchor({conversationID:i,sequence:c+t,direction:f.FORWARD,count:t}),{nextReqMessageIDFromServer:r,hasNoMoreHistoryMessage:n,messageList:o}=s,a=(u=n&&r<0,c=o[o.length-1].sequence,[]);if(Array.isArray(o)&&(o.forEach(e=>{d.groupMessageReceiver.updateMessageProfile(e),g.storeConversationMessage(e)&&a.push(e)}),0<a.length)&&m.emitOuterEvent(h.MESSAGE_RECEIVED,{name:h.MESSAGE_RECEIVED,data:a}),u)break}catch(i){console.debug(i);break}}else r.push(i.replace(s.CONV_GROUP,""))})),this._recoverGroupRevokeNotice(r)})}updateLastMessageSequenceMapOnDisconnect(){let e=this._core.message.messageDataHandler.getContinuousMessagesByConversation();for(var[t,s]of e)if(!t.startsWith("C2C")){let e=Array.from(s.values());0<(null==e?void 0:e.length)&&(s=e[e.length-1].sequence,this._lastMessageSequenceMapOnDisconnect.set(t,s))}}_shouldRecoverHistory(e){var t,{localLastMessageSequence:e,serverLastMessageSequence:s}=e;return"number"==typeof e&&"number"==typeof s&&(t=s-e,0!==s)&&e&&1<=t&&t<300}_getLocalLastMessageSequence(e){return this._lastMessageSequenceMapOnDisconnect.has(e)?this._lastMessageSequenceMapOnDisconnect.get(e):null==(e=(e=this._core.message.messageDataHandler.getLocalMessageList(e))[e.length-1])?void 0:e.sequence}_parseMessage(e){var t=this._core["constants"]["OuterConstant"],t=(S,4===e.Event&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),this._core.message.messageHelper.parseServerGroupMessage(e)),e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},t),{conversationType:"GROUP",flow:"in"}));return e.setElement(t.elements),e}_recoverGroupRevokeNotice(e){let r=this._filterValidGroupIDList(e);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 v(this,void 0,void 0,function*(){var e;try{var t=yield function(o){return v(this,void 0,void 0,function*(){let{appStore:e,constants:{OuterConstant:s},common:r}=E.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*E.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 v(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 H{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new O(e)}getRoamingMessagesByAnchor(g){return v(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(y,""),l=yield function(o){return v(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 E.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:e})})}({count:e,lastMessageTime:t,messageKey:s,peerAccount:c,direction:i});if(l){let{MsgList:r=[],Complete:e,MsgKey:t,LastMsgTime:s}=l;this._historyMessageListFetchAnchors.set(o,{messageKey:t,lastMessageTime:s});var u=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);u.push(t)}var d=this._messageHelper.filterValidMessages(u);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){y;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 H(e),this._messageHelper=new O(e);var{InnerEvent:t,notificationCenter:s,constants:r}=e;e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerApi({apiName:"clearHistoryMessage",context:this}),e.helper.registerWorkflowStep(r.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,r.WORKFLOW_STEP.HISTORY_MESSAGE_RECOVER,this._recoverHistoryMessage,this),s.subscribeInnerEvent(t.SOCKET_DISCONNECTED,this._handleSocketDisconnected,this)}getMessageList(e){return v(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._core.ssoLog.createSSOLogData({method:"getMessageList"}),c=this._getAvailableLocalMessagesCount({conversationID:o,nextReqMessageID:a});if(this._needFetchHistoryMessageList({conversationID:o,availableLocalMessagesCount:c,targetCount:20})){let n=null;if(o.startsWith(S)?n=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:o,sequence:Number(a),count:20,direction:f.FORWARD}):o.startsWith(y)&&(n=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:o,messageID:a,count:20,direction:f.FORWARD})),n){let{nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:t,messageList:s}=n,r=this._core.message.messageDataHandler.prependLocalMessageList({messageList:s,conversationID:o});var l=o,{appStore:u,message:d,OuterConstant:g}=E.core,u=u.conversationStore.getConversation(l),m=d.messageDataHandler.getLocalMessageList(l);if(u&&0!==m.length&&l!==g.CONV_SYSTEM){var h=[];for(let e=0;e<m.length;e++)"in"!==m[e].flow?"out"!==m[e].flow||m[e].isRead||m[e].setIsRead(!0):h.push(m[e]);let t=0;if(u.type===g.CONV_C2C){let e=h.slice(-u.unreadCount).filter(e=>e.isRevoked).length;t=h.length-u.unreadCount-e}else t=h.length-u.unreadCount;for(let e=0;e<t&&!h[e].isRead;e++)h[e].setIsRead(!0)}yield I(o),o.startsWith(y)&&(yield C({messageList:s,conversationID:o}));var v=this._core.message.messageDataHandler.getLocalMessageList(o).slice(0,r.length+c),p=v.filter(e=>e.isRevoked),_=(yield this._messageHelper.updateRevokerInfo(p),{nextReqMessageID:t?"":String(e),messageList:v,isCompleted:t}),M=v.map(e=>e.sequence);return i.setLogInfo({message:`conversationID: ${o} nextReqMessageID: ${a}
|
|
4
|
-
availableLocalMessagesCount: ${c} sequenceList: ${JSON.stringify(M)} `}).end(),{code:0,data:_}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return i.setLogInfo({message:`conversationID: ${o} nextReqMessageID: ${a} availableLocalMessagesCount: ${c}}`}).end(),{code:0,data:yield this._getMessageListFromMemory({conversationID:o,nextReqMessageID:a,count:20})}}catch(e){let t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getMessageList").setError(t).end(),console.debug(t)}})}getMessageListHopping(r){return v(this,void 0,void 0,function*(){var o,a;let{conversationID:e,sequence:i,time:t,direction:c=f.FORWARD}=r,l=this._core.helper["isEmpty"];if(![f.BACKWARD,f.FORWARD].includes(c))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:s=20}=r,u=(s=20<s?20:s,null);if(e.startsWith(S)){if(u=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:i,count:s,direction:c})){let{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:s,messageList:r,invisibleSequenceList:n}=u;if(this._core.message.messageDataHandler.storeSparseMessageList(r),c===f.FORWARD){let e=s&&t<1;return{code:0,data:{messageList:r,isCompleted:e,nextMessageSeq:e?"":t}}}if(c!==f.BACKWARD)return{code:0,data:u};{if(l(r)&&l(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(y)&&(u=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:e,count:s+1,time:t,direction:c}))){let{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=u;return s||(c===f.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}})}clearHistoryMessage(m){return v(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,ssoLog:c}=this._core,l=e.conversationStore.getConversation(m);if(!l)throw new s({code:2500});var u=c.createSSOLogData({method:"clearHistoryMessage"}),d=(u.setLogInfo({message:"convID:"+m}),{fromAccount:r()}),g=l["type"];g===n?(d.type=1,d.toAccount=m.replace(n,"")):g===o&&(d.type=2,d.toGroupID=m.replace(o,""));try{yield null==(t=null==i?void 0:i.setMessageRead)?void 0:t.call(i,{conversationID:m});let e=yield function(n){return v(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 E.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:e})})}(d);return e&&(u.end(),a.messageDataHandler.deleteConversationMessageList(m),this._clearedConversations.add(m),this._fetchedCompleteConversations.delete(m),this._c2cMessageHistory.clearHistoryMessageListFetchAnchors(m),this._updateConversationLastMessage(m)),{code:0,data:{conversationID:m}}}catch(e){let t=e["errorCode"],s=new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:t});throw u.setError(s).end(),s}})}_updateConversationLastMessage(e){var t=this._core["appStore"];t.conversationStore.updateConversation(e,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e),r=s["length"];if(!t)return r;let n=-1;return null!=e&&e.startsWith(y)?n=s.findIndex(e=>e.ID===t):null!=e&&e.startsWith(S)&&(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 v(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(y)?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(y)&&(yield I(t),yield C({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)}_recoverHistoryMessage(){let{appStore:e,constants:{OuterConstant:{GRP_AVCHATROOM:t}}}=this._core,s=e.conversationStore.getConversationMap()||{};if(s instanceof Map){let e=[...s.values()].filter(e=>e.type===S&&e.groupProfile.type!==t);this._groupMessageHistory.recoverHistoryMessage(e)}}_handleSocketDisconnected(){this._groupMessageHistory.updateLastMessageSequenceMapOnDisconnect()}_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(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.SOCKET_DISCONNECTED,this._handleSocketDisconnected,this)}},V=new class{constructor(){this._core=null}init(e){e=(this._core=e).helper;e.registerApi({apiName:"translateText",context:this})}translateText(n){return v(this,void 0,void 0,function*(){try{var{sourceLanguage:e,sourceTextList:t,targetLanguage:s}=n,r=yield function(a,i){return v(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(a){return v(this,void 0,void 0,function*(){var r,e,{message:t,language:s=i.ZH_PY}=a;let n=(t.payload||{})["url"];var o=null==(r=this._core.store.get("login"))?void 0:r.userID,o=(t.from===o&&"out"===t.flow&&(n=t.payload.remoteAudioUrl),this._validateVoiceFormat(n),(null==(e=u.exec(n))?void 0:e[1])||"mp3"),t=l[s]||c;try{let s=yield function(e){var{store:t,common:s}=E.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:n,format:o,serverLanguageType:t});if(s){let{CmdErrorCode:e,BytesResult:t}=s;if(0===e.ErrorCode)return{code:0,data:{result:t}};throw{code:e.ErrorCode,message:e.ErrorInfo}}}catch(r){let{code:e,message:t}=r||{},s=new this._core.common.ChatError({functionName:"convertVoiceToText",code:e,message:t});console.error(s),this._core.ssoLog.createSSOLogData({method:"convertVoiceToText"}).setError(s).end()}})}_validateVoiceFormat(e){if(!u.test(e))throw new this._core.common.ChatError({code:2119})}};class w{constructor(e){var{constants:t,common:s,utils:r}=E.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:l,cloudCustomData:u="",nick:d="",avatar:g="",clientSequence:m,conversationType:h,groupID:v,_elements:p,time:_}=e,o=(this.ID=e||o+`-${s}-`+c,this.messageRandom=c,this.from=a,this.messageSender=a,this.time=_,this.messageSequence=l,this.clientSequence=m||l,this.clientTime=s,this.cloudCustomData=u,this.messageReceiver=i,this.avatar=g,this.nick=d,r.deepCopyWithMethods(p));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):v?(this.receiverGroupID=v,this.messageReceiver=v):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 N{static parseServerPushElement(e){var e=e["MsgContent"],{MsgList:e=[],CompatibleText:t,AbstractList:s,Title:r,PbMsgKey:n,JsonMsgKey:o}=e||{},e=e.map(e=>a(e));return new N({messageList:e,title:r,abstractList:s,compatibleText:t,pbDownloadKey:n,downloadKey:o})}constructor(e){this.type=E.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,l=[];t.forEach(e=>{e&&(e=new w(e),l.push(e))}),this.content={messageList:l,title:s,abstractList:r,compatibleText:n,version:i,downloadKey:a,pbDownloadKey:o,layersOverLimit:c}}validateBeforeSend(){var e=E.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:h(i)}}}}var B=new class{init(e){let{message:t,helper:s,constants:{OuterConstant:r}}=this._core=e;t.messageFactory.registerElementClass(r.MSG_MERGER,N),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 N(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 v(this,void 0,void 0,function*(){var e,t,s;try{var o=function(t){let e="utf-8";E.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 v(this,void 0,void 0,function*(){var e=t["payload"]["messageList"],e={MsgList:h(e)};return E.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:e})})}(r),s=r["payload"];n=new N(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){throw console.error(e),e}})}downloadMergerMessage(o){return v(this,void 0,void 0,function*(){try{var e=o.payload,t=e["downloadKey"],s=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"]),r=((yield function(e){return v(this,void 0,void 0,function*(){return E.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:e}})})}(t))||{})["MsgList"],n=null==r?void 0:r.map(e=>{e=a(e);return new w(e)});return"function"==typeof o.isOnlineMessage?o.setElement({type:o.type,content:Object.assign({messageList:n},s)}):(o.payload.messageList=n,o.payload.downloadKey="",o.payload.pbDownloadKey=""),o}catch(e){console.error(e)}})}};return new class{install(e){this._core=e,E.init(e),k.init(e),G.init(e),q.init(e),b.init(e),t.init(e),V.init(e),K.init(e),s.init(e),B.init(e),n.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(),n.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(){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 E=new class{init(e){this.core=e}};var r,f,e;(e=r=r||{}).MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem",(e=f=f||{})[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD";let i={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},c="16k_zh-PY",l={[i.ZH_CN]:"16k_zh",[i.EN_US]:"16k_en",[i.YUE_HK]:"16k_yue",[i.JA_JP]:"16k_ja",[i.ZH_PY]:c},u=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,d={READ:0,UNREAD:1},y="C2C",C="GROUP";function I(o){return h(this,void 0,void 0,function*(){var e,s=E.core["appStore"],{messageList:t,conversationID:r}=o,s=s.conversationStore.getConversationMap();let n=null==(e=s.get(r))?void 0:e.peerReadTime;if(!n){let e=r.replace(y,""),t=yield function(t){return h(this,void 0,void 0,function*(){var e={To_Account:t};return E.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([e]);if(t){let e=t["ReadTime"];n=null==e?void 0:e[0],s.has(r)&&(s.get(r).peerReadTime=n)}}t.forEach(e=>{e.time<=n&&!e.isPeerRead&&"out"===e.flow&&(e.isPeerRead=!0)})})}function R(i){return h(this,void 0,void 0,function*(){var e;let{message:s,user:t,appStore:r,constants:{OuterConstant:n}}=E.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;E.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 g(e){let t,s=E.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 m(e){return e.map(e=>{var{from:t,to:s,cloudCustomData:r,avatar:n,nick:o,ID:a,clientSequence:i,clientTime:c,messageRandom:l,messageSequence:u,time:d}=e;return{ClientSeq:i,CloudCustomData:r,From_Account:t,From_AccountHeadurl:n,From_AccountNick:o,Id:a,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:l,Random:l,MsgSeq:u,MsgTimeStamp:d,ReceiverId:s,SenderId:t,To_Account:s}})}function a(e){var{From_Account:t,From_AccountHeadurl:s,From_AccountNick:r,GroupId:n,MsgClientTime:o,ClientSeq:a,To_Account:i,MsgTimeStamp:c,TinyId:l,MsgRandom:u,MsgSeq:d}=e;return{from:t,avatar:s,nick:r,clientTime:o,time:c,tinyID:l,random:u,sequence:d,to:i,groupID:n,clientSequence:a,_elements:null==(t=e.MsgBody)?void 0:t.map(e=>{var t=e["MsgType"];return E.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(g,m){return h(this,void 0,void 0,function*(){var{OuterConstant:e,ssoLog:r,helper:n}=this._core,r=(this._validateMessageReactionBusinessCapability(),r.createSSOLogData({method:"addMessageReaction"})),{conversationID:t,ID:o,conversationType:s,from:a,to:i,clientSequence:c,random:l,time:u,sequence:d}=g;try{return this._recordMessageReactedByMe(o,m),s===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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:t})})}({from:a,to:i,clientSequence:c,random:l,time:u,reactionID:m},this._core):s===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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:s})})}({to:i,reactionID:m,sequence:d},this._core)),r.setLogInfo({message:`conversationID:${t} messageID:${o} reactionID:`+m}).end(),{code:0}}catch(e){this._removeMyReactionRecord(o,m);let t=(e||{})["errorCode"],s=new n.ChatError({functionName:"addMessageReaction",code:t});r.setError(s).end(),console.error("addMessageReaction error: ",e)}})}removeMessageReaction(d,g){return h(this,void 0,void 0,function*(){let{OuterConstant:l,ssoLog:e,helper:r}=this._core;this._validateMessageReactionBusinessCapability();var u=e.createSSOLogData({method:"removeMessageReaction"});try{let{conversationID:e,ID:t,conversationType:s,from:r,to:n,clientSequence:o,random:a,time:i,sequence:c}=d;return this._removeMyReactionRecord(t,g),s===l.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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:t})})}({from:r,to:n,clientSequence:o,random:a,time:i,reactionID:g},this._core):s===l.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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:s},n)})}({to:n,reactionID:g,sequence:c},this._core)),u.setLogInfo({message:`conversationID:${e} messageID:${t} reactionID:`+g}).end(),{code:0}}catch(e){let t=(e||{})["errorCode"],s=new r.ChatError({functionName:"removeMessageReaction",code:t});u.setError(s).end(),console.error("removeMessageReaction error: ",e)}})}getAllUserListOfMessageReaction(l){return h(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();let{message:e,reactionID:t,nextSeq:r=0}=l,s=100<l.count?100:l.count,n=e["conversationID"],{ssoLog:o,helper:a,constants:i}=this._core;try{var c;if(c=n.startsWith(i.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 E.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 E.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}=c,s=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===r,userList:s}}}}catch(e){let t=(e||{})["errorCode"],s=new a.ChatError({functionName:"getAllUserListOfMessageReaction",code:t});o.createSSOLogData({method:"removeMessageReaction"}).setError(s).end(),console.error("getAllUserListOfMessageReaction error: ",e)}})}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,l=this._generateMessageKeyList(t,o),{Results:u=[]}=(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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:e})})}({from:a,to:i,messageKeyList:l,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 E.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:e})})}({groupId:i,messageSequenceList:l,maxUserCountPerReaction:s})),n||{}),d=this._extractUserIDsFromReactionResults(u),g=yield this._getUserProfileMap(d);return{code:0,data:{resultList:u.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(u=>h(this,void 0,void 0,function*(){let{C2CMsgInfo:e,GroupMsgInfo:t,MsgReactionSummary:s}=u,{TinyId:r,MsgClientTime:n,MsgRandom:o}=Object.assign(Object.assign({},e),t),a=r+`-${n}-`+o,i=this._extractUserIDsFromReactionResults([{ReactionList:s}]),c=yield this._getUserProfileMap(i),l=s.map(e=>{var{Reaction:t,Reaction_Account:s}=e,r=this._generatePartialUserInfo({userIDList:s,userProfileMap:c}),s=s?e.Count:0,e=(null==(e=this._reactionsMap.get(a+"-"+t))?void 0:e.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:a,reactionID:t,reactionInfo:{reactionID:t,totalUserCount:s,partialUserList:r}}),{reactionID:t,totalUserCount:s,partialUserList:r,reactedByMyself:e}});d.emitOuterEvent(g.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:g.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:a,reactionList:l}})}))}_handleReactionSync(e){var{notificationCenter:t,constants:s}=this._core,{C2CMsgInfo:e={},GroupMsgInfo:r={},Reaction:n,OperateType:o}=e.MsgReactionNotify,{TinyId:e="",MsgClientTime:r=0,MsgRandom:a=0}=Object.assign(Object.assign({},e),r),r=e+`-${r}-`+a,a=r+"-"+n;if(1===o?this._recordMessageReactedByMe(r,n):this._removeMyReactionRecord(r,n),null!=(e=this._reactionsMap.get(a))&&e.reactionID){let e=this._reactionsMap.get(a);e.reactedByMyself=1===o,t.emitOuterEvent(s.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:s.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:r,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){let s=[];return null!=e&&e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){var{messageSequence:e,messageKey:t,messageIDMap:s}=e;return t?s.get(t):s.get(e)}_generateMessageKeyList(e,n){var t=this._core["constants"],s=e[0]["conversationType"];let r=[];return s===t.OuterConstant.CONV_C2C?r=e.map(e=>{var{clientSequence:e,random:t,time:s,ID:r}=e,e=e+`_${t}_`+s;return n.set(e,r),e}):s===t.OuterConstant.CONV_GROUP&&(r=e.map(e=>{var{ID:e,sequence:t}=e;return n.set(t,e),t})),r}},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}=E.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}=E.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}=E.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,l=n.replace(e.OuterConstant.CONV_GROUP,""),u=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 E.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:e})})}({groupID:l,sequence:i,filter:a,cursor:s,count:u});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=g({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=g({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}=E.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}=E.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 n=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){var{notificationCenter:e,helper:{registerApi:t},InnerEvent:{MESSAGE_PUSH:s,LOGOUT:r},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core=e;t({apiName:"setMessageExtensions",context:this}),t({apiName:"getMessageExtensions",context:this}),t({apiName:"deleteMessageExtensions",context:this}),e.subscribeInnerEvent(s,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(r,this.reset,this)}setMessageExtensions(d,r){return h(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");let{constants:{OuterConstant:s},ssoLog:e}=this._core,{ID:n,conversationID:o,sequence:a,time:i,conversationType:t}=d,c=e.createSSOLogData({method:"setMessageExtensions"}),l=r;20<r.length&&(l=r.slice(0,20),console.warn("the length of extensions cannot exceed 20"));var u=this._generateServerExtensions(d,l);try{let r;if(t===s.CONV_C2C?r=yield p(d,u,1):t===s.CONV_GROUP&&(r=yield v(d,u,1)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(d,r);return c.setLogInfo({message:`convID:${o} messageID:${n} sequence:${a}
|
|
2
|
+
time:${i} count:${l.length} successCount:${t} failCount:`+s}).end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"setMessageExtensions",code:e});throw c.setError(t).end(),t}})}getMessageExtensions(a){return h(this,void 0,void 0,function*(){var{isUndefined:r}=this._core["utils"];this._validateMessageExtensionBusinessCapability("getMessageExtensions");let{conversationID:e,ID:s,sequence:t,time:n}=a,o=this._core.ssoLog.createSSOLogData({method:"getMessageExtensions"});o.setLogInfo({message:`convID:${e} messageID:${s} sequence:${t} time:`+n});try{let e,t=(this._completedFetchExtensions.has(s)&&(e=this._extensionsLatestSequenceMap.get(s)),yield this._fetchMessageExtensions(a,e));return r(e)&&1<t.length&&this._completedFetchExtensions.add(s),o.end(),{code:0,data:{extensions:t}}}catch(r){let{errorCode:e,errorInfo:t=""}=r||{},s=new this._core.common.ChatError({code:e,message:t});throw o.setError(s).end(),s}})}deleteMessageExtensions(g,m){return h(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");let{utils:{isEmpty:s},constants:{OuterConstant:e},ssoLog:t}=this._core,{conversationType:n,conversationID:r,sequence:o,ID:a,time:i}=g,c=3,l=[];s(m)||(c=2,null==m)||m.forEach(e=>{l.push({key:e,value:"",seq:0})});var u=t.createSSOLogData({method:"deleteMessageExtensions"}),d=(u.setLogInfo({message:`convID:${r} messageID:${a} sequence:${o} time:${i} operateType:`+c}),this._generateServerExtensions(g,l));try{let r;if(n===e.CONV_C2C?r=yield p(g,d,c):n===e.CONV_GROUP&&(r=yield v(g,d,c)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(g,r);return u.setMoreMessage(`success count:${t} fail count:`+s),u.end(),{code:0,data:{extensions:e}}}return{code:0,data:{extensions:[]}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:e});throw u.setError(t).end(),t}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=this._core;e.unSubscribeInnerEvent(t,r,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){let s=e["ID"],r=t["Seq"],n=t.ExtensionList||[],o=[],a=0,i=0,c=[];return n.forEach(e=>{var{ErrorCode:e,Extension:t}=e,{Key:t,Value:s,Seq:r}=t;o.push({code:e,key:t,value:s}),0===e?a++:i++,c.push({key:t,value:s,seq:r})}),this._extensionsLatestSequenceMap.set(s,r),0<c.length&&this._updateLocalExtensions(e.ID,c),{resultList:o,successCount:a,failureCount:i}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);let r=this._messageExtensionsMap.get(e);null!=t&&t.forEach(e=>{var{key:e,seq:t,value:s=""}=e;null!=r&&r.set(e,{value:s,seq:t})})}_fetchMessageExtensions(c,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=E.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=E.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){console.error(e)}})}_clearLocationExtensions(e,r){if(!(r<=0)&&this._messageExtensionsMap.has(e)){let s=this._messageExtensionsMap.get(e);null!=s&&s.forEach((e,t)=>{e.seq<=r&&s.delete(t)})}}_generateServerExtensions(e,t){var s=e["ID"];if(this._messageExtensionsMap.has(s)){let r=this._messageExtensionsMap.get(s);return t.map(e=>{var{key:e,value:t}=e;let s=0;return{Key:e,Value:t,Seq:s=null!=r&&r.has(e)?null==(t=r.get(e))?void 0:t.seq:s}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){var{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits("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 o={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{OuterConstant:t}=E.core["constants"];return e.status!==t.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},_={setMessageExtensions:[o,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[o],deleteMessageExtensions:[o]},M=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}=E.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=Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0});class D{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 A{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 L{constructor(e){this._core=e}generateRevokeMessage(e){var{conversationID:e,sequence:t,random:s,tinyID:r,clientTime:n,revokeReason:o,revoker:a}=e;let i={};var c=this._core.message["messageDataHandler"];return(i=c.revokeMessage({conversationID:e,sequence:t,random:s,revoker:a}))||(i={conversationID:e,sequence:t},r&&n&&s&&(i.ID=r+`-${n}-`+s)),i=Object.assign(Object.assign({},i),{revoker:a,revokeReason:o,revokerInfo:{userID:a,nick:"",avatar:""}})}updateRevokerInfo(t){return 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 O=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new A(e),this._c2cMessageAction=new D(e),this._messageHelper=new L(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=[],l=[],{conversationID:u,conversationType:d}=t[0],e=u.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===u&&s===d){if(!n){let e="C2C"===s?o+`_${a}_`+i:String(o);c.push(e)}l.push(e)}}),0===c.length)return this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}};30<c.length&&(c=c.slice(0,30),l=l.slice(0,30));try{return"C2C"===d?yield this._c2cMessageAction.deleteMessage({to:e,messageIdentifiers:c}):yield this._groupMessageAction.deleteMessage({to:e,messageIdentifiers:c}),this._handleDeleteMessageSuccess(l),{code:0,data:{messageList:l}}}catch(c){let e=c["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessage",code:e})}})}revokeMessage(o){return h(this,void 0,void 0,function*(){let s,r=this._core.ssoLog.createSSOLogData({method:"revokeMessage"}),{conversationType:e,isRevoked:t}=o;var n;if("@TIM#SYSTEM"===e)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(t)throw new this._core.helper.ChatError({message:"message has been revoked"});r.setLogInfo({message:`type:${o.type} from:${o.from} to:`+o.to});try{if(n="C2C"===e?yield this._c2cMessageAction.revokeMessage(o):yield this._groupMessageAction.revokeMessage(o)){let e=n["RecallRetList"],t=(null==(s=null==e?void 0:e[0])?void 0:s.RetCode)||0;if(0!==t)throw new this._core.helper.ChatError({code:t});return r.end(),yield this._handleRevokeMessageSuccess(o),{code:0,data:{message:o}}}}catch(s){let e=s["errorCode"],t=new this._core.helper.ChatError({functionName:"revokeMessage",code:e});throw this._core.ssoLog.getSSOLogData("revokeMessage").setError(t).end(),t}})}resendMessage(t,s){return 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 x{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Index:e,Data:t}=e;return new x({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 T{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Desc:e,Longitude:t,Latitude:s}=e;return new T({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 k=new class{init(e){(this._core=e).message.messageFactory.registerElementClass(r.MSG_FACE,x),e.message.messageFactory.registerElementClass(r.MSG_LOCATION,T),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 x({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:l=!1}=e;if(!Array.isArray(o._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(o.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});s=this._core.common.getCurrentUserID(),t=this._core.message.messageFactory.createMessage({to:e,from:s,conversationType:r,isPlaceMessage:0,priority:n,payload:o,needReadReceipt:a,isSupportExtension:l,cloudCustomData:c,receiverList:i});return t.setRelayFlag(!0),t.setElement(o._elements[0]),t}createLocationMessage(e){var t,s,r;return e?({description:t,longitude:s,latitude:r}=(null==e?void 0:e.payload)||{},t=new T({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 G{init(e){this._messageHelper=new L(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 a=[],{notificationCenter:e,OuterEvent:t,common:{getCurrentUserID:i}}=this._core;s.forEach(e=>{var{MsgRand:e,MsgSeq:t,To_Account:s,From_Account:r,RevokerInfo:{Revoker_Account:n,Revoke_Reason:o,Reason:o=o}}=e,s=i()===r?"C2C"+s:"C2C"+r,r=this._messageHelper.generateRevokeMessage({conversationID:s,sequence:t,random:e,revoker:n,revokeReason:o});a.push(r)}),0<a.length&&(yield this._messageHelper.updateRevokerInfo(a),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:a}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return 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 P{init(e){this._messageHelper=new L(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:l}=o,u=[],d=[],{notificationCenter:t,OuterEvent:s,utils:{isEmpty:r},common:{isCommunity:n}}=this._core,g=!1;l&&(g=n({groupID:l.GroupId})||!r(l.TopicId)),e.forEach(e=>{var{Random:e,MsgSeq:t,GroupId:s,MsgClientTime:r,TinyId:n,TopicId:o,RevokerInfo:{Revoker_Account:a=(null==c?void 0:c.Revoker_Account)||"",Reason:i=(null==c?void 0:c.Reason)||""}}=e,o=this._messageHelper.generateRevokeMessage({conversationID:o?"GROUP"+o:"GROUP"+s,sequence:t,random:e,tinyID:n,clientTime:r,revoker:a,revokeReason:i});(g?(o.revokerInfo.nick=l.From_AccountNick,o.revokerInfo.avatar=l.From_AccountHeadurl,u):d).push(o)}),0<d.length&&(yield this._messageHelper.updateRevokerInfo(d),u.push(...d)),0!==u.length&&t.emitOuterEvent(s.MESSAGE_REVOKED,{name:s.MESSAGE_REVOKED,data:u})}catch(e){console.debug(e)}})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}}var q=new class{constructor(){this._c2cMessageReceiver=new G,this._groupMessageReceiver=new P}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class U{constructor(e){var t=(this._core=e)["constants"];this._messageHelper=new L(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}=E.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*E.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 F{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new L(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(y,""),l=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 E.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:e})})}({count:e,lastMessageTime:t,messageKey:s,peerAccount:c,direction:i});if(l){let{MsgList:r=[],Complete:e,MsgKey:t,LastMsgTime:s}=l;this._historyMessageListFetchAnchors.set(o,{messageKey:t,lastMessageTime:s});var u=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);u.push(t)}var d=this._core.message.messageHelper.filterValidMessages(u);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){y;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 U(e),this._c2cMessageHistory=new F(e),this._messageHelper=new L(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._core.ssoLog.createSSOLogData({method:"getMessageList"}),c=this._getAvailableLocalMessagesCount({conversationID:o,nextReqMessageID:a});if(this._needFetchHistoryMessageList({conversationID:o,availableLocalMessagesCount:c,targetCount:20})){let n=null;if(o.startsWith(C)?n=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:o,sequence:Number(a),count:20,direction:f.FORWARD}):o.startsWith(y)&&(n=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:o,messageID:a,count:20,direction:f.FORWARD})),n){let{nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:t,messageList:s}=n,r=this._core.message.messageDataHandler.prependLocalMessageList({messageList:s,conversationID:o});var l=o,{appStore:u,message:d,OuterConstant:g}=E.core,u=u.conversationStore.getConversation(l),m=d.messageDataHandler.getLocalMessageList(l);if(u&&0!==m.length&&l!==g.CONV_SYSTEM){var h=[];for(let e=0;e<m.length;e++)"in"!==m[e].flow?"out"!==m[e].flow||m[e].isRead||m[e].setIsRead(!0):h.push(m[e]);let t=0;if(u.type===g.CONV_C2C){let e=h.slice(-u.unreadCount).filter(e=>e.isRevoked).length;t=h.length-u.unreadCount-e}else t=h.length-u.unreadCount;for(let e=0;e<t&&!h[e].isRead;e++)h[e].setIsRead(!0)}yield R(o),o.startsWith(y)&&(yield I({messageList:s,conversationID:o}));var p=this._core.message.messageDataHandler.getLocalMessageList(o).slice(0,r.length+c),v=p.filter(e=>e.isRevoked),_=(yield this._messageHelper.updateRevokerInfo(v),{nextReqMessageID:t?"":String(e),messageList:p,isCompleted:t}),M=p.map(e=>e.sequence);return i.setLogInfo({message:`conversationID: ${o} nextReqMessageID: ${a}
|
|
3
|
+
availableLocalMessagesCount: ${c} sequenceList: ${JSON.stringify(M)} `}).end(),{code:0,data:_}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return i.setLogInfo({message:`conversationID: ${o} nextReqMessageID: ${a} availableLocalMessagesCount: ${c}}`}).end(),{code:0,data:yield this._getMessageListFromMemory({conversationID:o,nextReqMessageID:a,count:20})}}catch(e){let t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getMessageList").setError(t).end(),console.debug(t)}})}getMessageListHopping(r){return h(this,void 0,void 0,function*(){var o,a;let{conversationID:e,sequence:i,time:t,direction:c=f.FORWARD}=r,l=this._core.helper["isEmpty"];if(![f.BACKWARD,f.FORWARD].includes(c))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:s=20}=r,u=(s=20<s?20:s,null);if(e.startsWith(C)){if(u=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:i,count:s,direction:c})){let{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:s,messageList:r,invisibleSequenceList:n}=u;if(this._core.message.messageDataHandler.storeSparseMessageList(r),c===f.FORWARD){let e=s&&t<1;return{code:0,data:{messageList:r,isCompleted:e,nextMessageSeq:e?"":t}}}if(c!==f.BACKWARD)return{code:0,data:u};{if(l(r)&&l(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(y)&&(u=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:e,count:s+1,time:t,direction:c}))){let{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=u;return s||(c===f.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}})}clearHistoryMessage(m){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,ssoLog:c}=this._core,l=e.conversationStore.getConversation(m);if(!l)throw new s({code:2500});var u=c.createSSOLogData({method:"clearHistoryMessage"}),d=(u.setLogInfo({message:"convID:"+m}),{fromAccount:r()}),g=l["type"];g===n?(d.type=1,d.toAccount=m.replace(n,"")):g===o&&(d.type=2,d.toGroupID=m.replace(o,""));try{yield null==(t=null==i?void 0:i.setMessageRead)?void 0:t.call(i,{conversationID:m});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 E.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:e})})}(d);return e&&(u.end(),a.messageDataHandler.deleteConversationMessageList(m),this._clearedConversations.add(m),this._fetchedCompleteConversations.delete(m),this._c2cMessageHistory.clearHistoryMessageListFetchAnchors(m),this._updateConversationLastMessage(m)),{code:0,data:{conversationID:m}}}catch(e){let t=e["errorCode"],s=new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:t});throw u.setError(s).end(),s}})}_updateConversationLastMessage(e){var t=this._core["appStore"];t.conversationStore.updateConversation(e,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e),r=s["length"];if(!t)return r;let n=-1;return null!=e&&e.startsWith(y)?n=s.findIndex(e=>e.ID===t):null!=e&&e.startsWith(C)&&(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(y)?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(y)&&(yield R(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()}},V=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})}})}},H=new class{init(e){(this._core=e).helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(a){return h(this,void 0,void 0,function*(){var r,e,{message:t,language:s=i.ZH_PY}=a;let n=(t.payload||{})["url"];var o=null==(r=this._core.store.get("login"))?void 0:r.userID,o=(t.from===o&&"out"===t.flow&&(n=t.payload.remoteAudioUrl),this._validateVoiceFormat(n),(null==(e=u.exec(n))?void 0:e[1])||"mp3"),t=l[s]||c;try{let s=yield function(e){var{store:t,common:s}=E.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:n,format:o,serverLanguageType:t});if(s){let{CmdErrorCode:e,BytesResult:t}=s;if(0===e.ErrorCode)return{code:0,data:{result:t}};throw{code:e.ErrorCode,message:e.ErrorInfo}}}catch(r){let{code:e,message:t}=r||{},s=new this._core.common.ChatError({functionName:"convertVoiceToText",code:e,message:t});console.error(s),this._core.ssoLog.createSSOLogData({method:"convertVoiceToText"}).setError(s).end()}})}_validateVoiceFormat(e){if(!u.test(e))throw new this._core.common.ChatError({code:2119})}};class w{constructor(e){var{constants:t,common:s,utils:r}=E.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:l,cloudCustomData:u="",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=l,this.clientSequence=m||l,this.clientTime=s,this.cloudCustomData=u,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 N{static parseServerPushElement(e){var e=e["MsgContent"],{MsgList:e=[],CompatibleText:t,AbstractList:s,Title:r,PbMsgKey:n,JsonMsgKey:o}=e||{},e=e.map(e=>a(e));return new N({messageList:e,title:r,abstractList:s,compatibleText:t,pbDownloadKey:n,downloadKey:o})}constructor(e){this.type=E.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,l=[];t.forEach(e=>{e&&(e=new w(e),l.push(e))}),this.content={messageList:l,title:s,abstractList:r,compatibleText:n,version:i,downloadKey:a,pbDownloadKey:o,layersOverLimit:c}}validateBeforeSend(){var e=E.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:m(i)}}}}var K=new class{init(e){let{message:t,helper:s,constants:{OuterConstant:r}}=this._core=e;t.messageFactory.registerElementClass(r.MSG_MERGER,N),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 N(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";E.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:m(e)};return E.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:e})})}(r),s=r["payload"];n=new N(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){throw console.error(e),e}})}downloadMergerMessage(o){return h(this,void 0,void 0,function*(){try{var e=o.payload,t=e["downloadKey"],s=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"]),r=((yield function(e){return h(this,void 0,void 0,function*(){return E.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:e}})})}(t))||{})["MsgList"],n=null==r?void 0:r.map(e=>{e=a(e);return new w(e)});return"function"==typeof o.isOnlineMessage?o.setElement({type:o.type,content:Object.assign({messageList:n},s)}):(o.payload.messageList=n,o.payload.downloadKey="",o.payload.pbDownloadKey=""),o}catch(e){console.error(e)}})}};return new class{install(e){this._core=e,E.init(e),O.init(e),k.init(e),q.init(e),b.init(e),t.init(e),V.init(e),H.init(e),s.init(e),K.init(e),n.init(e),e.helper.registerValidateConfig({auth:S,params:M}),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(),n.dispose()}_reset(){b.reset()}}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,r,i,c){return new(i=i||Promise)(function(t,s){function a(e){try{o(c.next(e))}catch(e){s(e)}}function n(e){try{o(c.throw(e))}catch(e){s(e)}}function o(e){var s;e.done?t(e.value):((s=e.value)instanceof i?s:new i(function(e){e(s)})).then(a,n)}o((c=c.apply(e,r||[])).next())})}let s=1,t=300;var n=new class{constructor(){this._lastMessageSequenceMapOnDisconnect=new Map}install(e){var{common:{workflowManager:s},constants:{WORKFLOW_NAME:t,WORKFLOW_STEP:a,InnerEvent:n}}=this._core=e;s.registerWorkflowStep(t.SYNC_SERVER_INFO_AFTER_RE_ONLINE,a.HISTORY_MESSAGE_RECOVER,this._syncOfflineMessage,this),e.notificationCenter.subscribeInnerEvent(n.SOCKET_DISCONNECTED,this._updateLastMessageSequenceMapOnDisconnect,this)}_syncOfflineMessage(e){let s=((null==e?void 0:e.result)||{})["conversationList"],{OuterConstant:t,utils:{isArray:a}}=this._core;if(a(s)){let 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*(){let n=this._core["OuterConstant"],o=[],r=[];return yield Promise.all(null==s?void 0:s.map(a=>e(this,void 0,void 0,function*(){var{groupProfile:{groupID:e}={},lastMessage:{lastSequence:s}={}}=a,e=""+n.CONV_GROUP+e,t=this._getLocalLastMessageSequence(e);this._shouldRecoverHistory({localLastMessageSequence:t,serverLastMessageSequence:s})&&(yield this._recoverHistoryForConversation({conversationID:e,localLastMessageSequence:t,serverLastMessageSequence:s,groupTipList:r})),o.push(e.replace(n.CONV_GROUP,""))}))),{recoverRevokeNoticeGroupIDList:o,groupTipList:r}})}_recoverHistoryForConversation(s){return e(this,arguments,void 0,function*({conversationID:O,localLastMessageSequence:y,serverLastMessageSequence:d,groupTipList:E}){try{let{utils:{isArray:e,isObject:s,isEmpty:t},OuterEvent:a,OuterConstant:n,notificationCenter:o,message:r,appStore:i,common:{getMessagePreviewText:c}}=this._core,u=d-y,l=Math.min(20,u),g={},v=yield r.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:O,sequence:y+l,direction:n.Direction.FORWARD,count:l}),{nextReqMessageIDFromServer:M,hasNoMoreHistoryMessage:p,messageList:h,serverGroupTipList:_}=v,S=(e(_)&&E.push(..._),p&&M<0),f=[];if(e(h)&&(h.forEach(e=>{r.messageReceiver.groupMessageReceiver.updateMessageProfile(e),e.from===n.CONV_SYSTEM&&(e.isSystemMessage=!1),r.messageDataHandler.storeConversationMessage(e)&&!t(e.payload)&&(f.push(e),e._isExcludedFromLastMessage||(g.lastMessage=Object.assign({},e)))}),0<f.length)&&o.emitOuterEvent(a.MESSAGE_RECEIVED,{name:a.MESSAGE_RECEIVED,data:f}),!S&&0<h.length){let e=h[h.length-1].sequence;yield this._recoverHistoryForConversation({conversationID:O,localLastMessageSequence:e,serverLastMessageSequence:d,groupTipList:E})}s(g.lastMessage)&&(g.lastMessage.messageForShow=c(g.lastMessage.type,g.lastMessage.payload),i.conversationStore.updateConversation(O,g))}catch(y){console.debug("Recovery failed for conversation:",O,y)}})}_updateLastMessageSequenceMapOnDisconnect(){let e=this._core["message"],a=e.messageDataHandler.getContinuousMessagesByConversation();for(let[s,t]of a)if(!s.startsWith("C2C")){let e=Array.from(t.values());var n;0<(null==e?void 0:e.length)&&(n=e[e.length-1].sequence,this._lastMessageSequenceMapOnDisconnect.set(s,n))}}_getLocalLastMessageSequence(e){var s=this._core["message"];return this._lastMessageSequenceMapOnDisconnect.has(e)?this._lastMessageSequenceMapOnDisconnect.get(e):null==(e=(s=s.messageDataHandler.getLocalMessageList(e))[s.length-1])?void 0:e.sequence}_shouldRecoverHistory(e){var a,{localLastMessageSequence:e,serverLastMessageSequence:n}=e;return"number"==typeof e&&"number"==typeof n&&(a=n-e,0!==n)&&0<e&&a>=s&&a<t}};export{n as default};
|
|
@@ -0,0 +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 s(e,r,i,c){return new(i=i||Promise)(function(t,s){function n(e){try{a(c.next(e))}catch(e){s(e)}}function o(e){try{a(c.throw(e))}catch(e){s(e)}}function a(e){var s;e.done?t(e.value):((s=e.value)instanceof i?s:new i(function(e){e(s)})).then(n,o)}a((c=c.apply(e,r||[])).next())})}let e=new class{constructor(){this._lastMessageSequenceMapOnDisconnect=new Map}install(e){var{common:{workflowManager:s},constants:{WORKFLOW_NAME:t,WORKFLOW_STEP:n,InnerEvent:o}}=this._core=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){let s=((null==e?void 0:e.result)||{})["conversationList"],{OuterConstant:t,utils:{isArray:n}}=this._core;if(n(s)){let e=s.filter(e=>e.type===t.CONV_GROUP&&e.groupProfile.type!==t.GRP_AVCHATROOM);return this._recoverGroupHistoryMessage(e)}}_recoverGroupHistoryMessage(e){return s(this,void 0,void 0,function*(){let o=this._core["OuterConstant"],a=[],r=[];return yield Promise.all(null==e?void 0:e.map(n=>s(this,void 0,void 0,function*(){var{groupProfile:{groupID:e}={},lastMessage:{lastSequence:s}={}}=n,e=""+o.CONV_GROUP+e,t=this._getLocalLastMessageSequence(e);this._shouldRecoverHistory({localLastMessageSequence:t,serverLastMessageSequence:s})&&(yield this._recoverHistoryForConversation({conversationID:e,localLastMessageSequence:t,serverLastMessageSequence:s,groupTipList:r})),a.push(e.replace(o.CONV_GROUP,""))}))),{recoverRevokeNoticeGroupIDList:a,groupTipList:r}})}_recoverHistoryForConversation(e){return s(this,arguments,void 0,function*({conversationID:y,localLastMessageSequence:S,serverLastMessageSequence:O,groupTipList:m}){try{let{utils:{isArray:e,isObject:s,isEmpty:t},OuterEvent:n,OuterConstant:o,notificationCenter:a,message:r,appStore:i,common:{getMessagePreviewText:c}}=this._core,u=O-S,l=Math.min(20,u),g={},v=yield r.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:y,sequence:S+l,direction:o.Direction.FORWARD,count:l}),{nextReqMessageIDFromServer:M,hasNoMoreHistoryMessage:p,messageList:h,serverGroupTipList:f}=v,d=(e(f)&&m.push(...f),p&&M<0),_=[];if(e(h)&&(h.forEach(e=>{r.messageReceiver.groupMessageReceiver.updateMessageProfile(e),e.from===o.CONV_SYSTEM&&(e.isSystemMessage=!1),r.messageDataHandler.storeConversationMessage(e)&&!t(e.payload)&&(_.push(e),e._isExcludedFromLastMessage||(g.lastMessage=Object.assign({},e)))}),0<_.length)&&a.emitOuterEvent(n.MESSAGE_RECEIVED,{name:n.MESSAGE_RECEIVED,data:_}),!d&&0<h.length){let e=h[h.length-1].sequence;yield this._recoverHistoryForConversation({conversationID:y,localLastMessageSequence:e,serverLastMessageSequence:O,groupTipList:m})}s(g.lastMessage)&&(g.lastMessage.messageForShow=c(g.lastMessage.type,g.lastMessage.payload),i.conversationStore.updateConversation(y,g))}catch(S){console.debug("Recovery failed for conversation:",y,S)}})}_updateLastMessageSequenceMapOnDisconnect(){let e=this._core["message"],n=e.messageDataHandler.getContinuousMessagesByConversation();for(let[s,t]of n)if(!s.startsWith("C2C")){let e=Array.from(t.values());var o;0<(null==e?void 0:e.length)&&(o=e[e.length-1].sequence,this._lastMessageSequenceMapOnDisconnect.set(s,o))}}_getLocalLastMessageSequence(e){var s=this._core["message"];return this._lastMessageSequenceMapOnDisconnect.has(e)?this._lastMessageSequenceMapOnDisconnect.get(e):null==(e=(s=s.messageDataHandler.getLocalMessageList(e))[s.length-1])?void 0:e.sequence}_shouldRecoverHistory(e){var s,{localLastMessageSequence:e,serverLastMessageSequence:t}=e;return"number"==typeof e&&"number"==typeof t&&(s=t-e,0!==t)&&0<e&&1<=s&&s<300}};return e});
|
package/plugins/topic.es.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e=new class{init(e){this.core=e}},t="@TOPIC#_",s=7,o=8,i=17,n=18,r=20,c=300,a=0,u=3600,p=3021,l=["topicID","topicName","avatar","introduction","notification","unreadCount","muteAllMembers","customData","nextMessageSeq","selfInfo","lastMessage"],d=t=>{var{common:{getMessagePreviewText:s}}=e["core"];return{lastTime:(null==t?void 0:t.time)||0,lastSequence:(null==t?void 0:t.sequence)||0,fromAccount:(null==t?void 0:t.from)||"",payload:(null==t?void 0:t.payload)||null,type:(null==t?void 0:t.type)||"",messageForShow:s(null==t?void 0:t.type,null==t?void 0:t.payload),nick:(null==t?void 0:t.nick)||"",avatar:(null==t?void 0:t.avatar)||"",version:(null==t?void 0:t.version)||0,cloudCustomData:(null==t?void 0:t.cloudCustomData)||"",isRevoked:(null==t?void 0:t.isRevoked)||!1,revoker:(null==t?void 0:t.revoker)||null}};class h{constructor(e){this.topicID="",this.topicName="",this.avatar="",this.introduction="",this.notification="",this.unreadCount=0,this.muteAllMembers=!1,this.customData="",this.groupAtInfoList=[],this.nextMessageSeq=0,this.lastMessage=d(),this.selfInfo={muteTime:0,readedSequence:0,messageRemindType:"",excludedUnreadSequenceList:void 0},this._init(e)}_init(e){for(var t in e)l.includes(t)&&("lastMessage"===t?this[t]=d(e[t]):"selfInfo"===t?this.updateSelfInfo(e[t]):this[t]="muteAllMembers"===t?1===e[t]:e[t])}updateUnreadCount(e=0){this.unreadCount=e}updateReadSequence(e=0,t=!1){t&&(this.selfInfo.readedSequence=e)}updateNextMessageSeq(e){this.nextMessageSeq=e}updateLastMessage(e){this.lastMessage=d(e)}updateGroupAtInfoList(t){var{common:{updateGroupAtInfo:s}}=e["core"];s(t,this.groupAtInfoList)}updateTopic(t){var{utils:{isUndefined:s},common:{deepMerge:i}}=e["core"];s(t.selfInfo)||this.updateSelfInfo(t.selfInfo),s(t.muteAllMembers)||(this.muteAllMembers=1===t.muteAllMembers),i(this,t,["groupID","lastMessageTime","selfInfo","muteAllMembers","lastMsg","groupAtInfoList"])}updateSelfInfo(t){var{common:{deepMerge:s}}=e["core"];return 0<s(this.selfInfo,t,[],[""])}reduceUnreadCount(){return 1<=this.unreadCount&&(--this.unreadCount,!0)}isLastMessageRevoked(e){return e===(null==(e=this.lastMessage)?void 0:e.lastSequence)}setLastMessageRevoked(e){this.lastMessage.isRevoked=e}setLastMessageRevoker(e){this.lastMessage.revoker=e}clearGroupAtInfoList(){this.groupAtInfoList.length=0}}var g=new class{constructor(){this._name="TopicDataHandler",this._topicMap=new Map,this._topicRequestInfo=new Map}init(e){var{helper:e,constants:t,notificationCenter:s,InnerEvent:{LOGOUT:i,DESTROY:o}}=this._core=e;e.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.TOPIC_REQUEST_INFO_RESET,this._resetTopicRequestInfo,this),s.subscribeInnerEvent(i,this._reset,this),s.subscribeInnerEvent(o,this._dispose,this),console.log(this._name+".init")}_hasTopic(e,t){return!(null==(e=this._topicMap.get(e))||!e.get(t))}_setTopic(e,t,s){null!=(e=this._topicMap.get(e))&&e.set(t,s)}_deleteTopic(e,t){null!=(e=this._topicMap.get(e))&&e.delete(t)}getTopic(e,t){return null==(e=this._topicMap.get(e))?void 0:e.get(t)}updateTopic(e){e.forEach(e=>{var{groupID:t,topicID:s}=e;let i=null;this._topicMap.has(t)||this._topicMap.set(t,new Map),this._hasTopic(t,s)?null!=(i=this.getTopic(t,s))&&i.updateTopic(e):(this._getLastMessage(e),i=new h(e),this._setTopic(t,s,i));e=this.computeUnreadCount(i);null!=i&&i.updateUnreadCount(e)})}_getLastMessage(s){var{isEmpty:i,isUndefined:o,isArray:n}=this._core["utils"];if(!o(s.lastMsg)){let e=null,t="";t=(n(s.lastMsg.elements)?(e=s.lastMsg.elements[0].content,s.lastMsg.elements[0]):(e=s.lastMsg.elements.content,s.lastMsg.elements)).type;o={payload:e,type:t,time:s.lastMsg.time,sequence:s.lastMsg.sequence,from:s.lastMsg.from,nick:s.lastMsg.nick,avatar:s.lastMsg.avatar,version:s.lastMsg.messageVersion,cloudCustomData:s.lastMsg.cloudCustomData,isRevoked:2===s.lastMsg.isPlaceMessage,revoker:i(s.lastMsg.revokerInfo)?null:s.lastMsg.revokerInfo.revoker};s.lastMessage=o}}computeUnreadCount(s){let{excludedUnreadSequenceList:e=[],readedSequence:i}=s.selfInfo,o=s.nextMessageSeq-s.selfInfo.readedSequence-1;if(0<e.length){let t=0;e.forEach(e=>{e>i&&e<=s.nextMessageSeq-1&&(t+=1)}),1<=t&&(o-=t)}return 0<o?o:0}updateTopicAtInfo(e){0!==e.length&&e.forEach(e=>{var t=this._core["utils"]["isEmpty"],e=e["groupAtInfoList"];t(e)||this.updateGroupAtInfoList(e)})}updateGroupAtInfoList(s,r=!1){if(0!==s.length){let{common:{getCurrentUserID:e},utils:{isUndefined:o,isEmpty:t}}=this._core,n=e(),a=null;s.forEach(e=>{var{groupID:t,topicID:s,from:i}=e;i!==n&&((a=this.getTopic(t,s))&&a.updateGroupAtInfoList(e),o(a))&&r&&(this.updateTopic([{groupID:t,topicID:s}]),null!=(i=this.getTopic(t,s)))&&i.updateGroupAtInfoList(e)}),t(a)||this.emitTopicUpdate(a)}}getTopicList(e,t=[]){var e=this._topicMap.get(e),s=[];return e&&s.push(...e.values()),0<t.length?s.filter(e=>t.includes(e.topicID)):s}deleteTopicList(t,e=[]){this._topicMap.has(t)&&(e.forEach(e=>{this._hasTopic(t,e)&&this._deleteTopic(t,e)}),console.log(this._name+`.deleteTopicList groupID:${t} topicID:`+e.join(",")))}clearGroupAtInfoList(e,t){var s=this._core["utils"]["isEmpty"],e=this.getTopic(e,t);s(null==e?void 0:e.groupAtInfoList)||(null!=e&&e.clearGroupAtInfoList(),console.log(this._name+".clearGroupAtInfoList topicID:"+t))}markMessageAsRead(e,s){let{message:{messageDataHandler:t},OuterConstant:{CONV_GROUP:i}}=this._core,o=(null==t?void 0:t.getLocalMessageList(""+i+e))||[];if(0!==o.length){e=o["length"];for(let t=e-1;0<=t;t--){let e=o[t];if(!(s&&e.sequence>s)){if("in"===e.flow&&e.isRead)break;e.setIsRead(!0)}}}}updateUnreadCount(e,t){var{message:{messageDataHandler:s},OuterConstant:{CONV_GROUP:i}}=this._core;let o=!1;e=this.getTopic(e,t);e&&(s=(null==s?void 0:s.getLocalMessageList(""+i+t))||[],i=e.unreadCount,s=null==s?void 0:s.filter(e=>!e.isRead&&!e._onlineOnlyFlag&&!e.isDeleted).length,console.log(this._name+`._updateUnreadCount topicID:${t} currentUnreadCount:${i} newUnreadCount:`+s),i!==s&&(e.updateUnreadCount(s),o=!0),o)&&this.emitTopicUpdate(e)}updateSelfInfo(e){var{groupID:e,topicID:t,selfInfo:s}=e,i=this.getTopic(e,t);if(i){let e=i.updateSelfInfo(s);console.log(`${this._name}.updateSelfInfo topicID:${t} info:${JSON.stringify(s)} isUpdated:`+e),e&&this.emitTopicUpdate(i)}}getTopicRequestInfo(e){return this._topicRequestInfo.get(e)||{}}setTopicRequestInfo(e,t){return this._topicRequestInfo.set(e,t)}emitTopicUpdate(e){var{OuterEvent:t,notificationCenter:s}=this._core;s.emitOuterEvent(t.TOPIC_UPDATED,{name:t.TOPIC_UPDATED,data:e})}_resetTopicRequestInfo(){this._topicRequestInfo.clear()}_reset(){this._topicMap.clear(),this._topicRequestInfo.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let _=(t="")=>{var{OuterConstant:s}=e["core"];return t.replace(s.CONV_GROUP,"")},m=(e="")=>e.split(t)[0];var I=new class{constructor(){this._name="TopicMessageHandler"}init(e){var{helper:e,notificationCenter:t,constants:{WORKFLOW_NAME:s,WORKFLOW_STEP:i},InnerEvent:{MESSAGE_PUSH:o,TOPIC_NEW_MESSAGE:n,TOPIC_MESSAGE_DELETED:a,TOPIC_MESSAGE_REVOKED:r,TOPIC_MESSAGE_MODIFIED:c,DESTROY:u}}=this._core=e,{TOPIC_AT_TIPS:l,TOPIC_LATEST_MESSAGE:p}=t["InnerEventSubType"];e.registerWorkflowStep(s.SYNC_SERVER_INFO_AFTER_LOGIN,i.UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),e.registerWorkflowStep(s.RECEIVE_GROUP_NEW_MESSAGE,i.UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this),t.subscribeInnerEvent(n,this._handleNewMessage,this),t.subscribeInnerEvent(a,this._handleMessageDeleted,this),t.subscribeInnerEvent(r,this._handleMessageRevoked,this),t.subscribeInnerEvent(c,this._handleMessageModified,this),t.subscribeInnerEvent(o,l,this._handleTopicAtTips,this),t.subscribeInnerEvent(o,p,this._handleLatestMessage,this),t.subscribeInnerEvent(u,this._dispose,this),console.log(this._name+".init")}_handleUnreadSyncFinished(e){let s,{WORKFLOW_STEP:t}=this._core.constants,{groupTipList:i=[]}=e.result[t.UNREAD_MESSAGE_SYNC]||{};for(let t=0;t<i.length;t++){let e=i[t];12===e.Event&&null!=(s=e.GroupTips[0].MsgBody)&&s.TopicId&&this._handleTopicAtTips(e)}}_handleNewMessage(e){var{conversationUpdateFieldList:e=[]}=e.result||{};if(0!==e.length){var t=this._core["common"]["isTopic"];if(t(e[0].conversationID)){let a=this._core["common"]["getCurrentUserID"];e.forEach(e=>{let{conversationID:t="",lastMessage:o}=e,s=_(t),i=m(s),n=g.getTopic(i,s);if(n){let{from:e,sequence:t}=o,s=t+1,i=e===a();if(s>n.nextMessageSeq){n.updateNextMessageSeq(s),n.updateLastMessage(o),n.updateReadSequence(t,i);let e=i?0:g.computeUnreadCount(n);n.updateUnreadCount(e),this._emitTopicUpdate(n)}}})}}}_handleMessageDeleted(s){var i=_(s),o=m(i),o=g.getTopic(o,i);if(console.log(this._name+`._handleMessageDeleted, topicID:${i} hasTopic:`+!!o),o){var{message:{messageDataHandler:n},utils:{isEmpty:a}}=this._core,r=(null==n?void 0:n.getLocalMessageList(s))||[];let t={};for(let e=(r.length||0)-1;0<=e;e--)if(!r[e].isDeleted){t=r[e];break}let e=!1;o.lastMessage.lastSequence!==t.sequence&&(a(t)&&(t={}),o.updateLastMessage(t),e=!0),e&&(this._emitTopicUpdate(o),console.log(this._name+`._handleMessageDeleted, topicID:${i} with lastMessage:`+o.lastMessage))}}_handleMessageRevoked(e){var{messageList:e=[]}=e;if(console.log(this._name+"._handleMessageRevoked messageList:"+e.length),0!==e.length){let o=null,n=!1;e.forEach(e=>{var{to:e,sequence:t,revoker:s}=e,i=m(e);if(o=g.getTopic(i,e)){o.reduceUnreadCount()&&(n=!0),o.isLastMessageRevoked(t)&&(o.setLastMessageRevoked(!0),o.setLastMessageRevoker(s),n=!0);let{excludedUnreadSequenceList:e=[]}=o.selfInfo;e.push(t),o.updateSelfInfo({excludedUnreadSequenceList:e})}}),n&&this._emitTopicUpdate(o)}}_handleMessageModified(e){let{conversationID:t,messageList:s}=e,i=_(t),o=m(i),r=g.getTopic(o,i);if(console.log(`${this._name}._handleMessageModified topicID:${i} hasTopic:`+!!r),r){var c=r["lastMessage"];if(c){let a=(null==s?void 0:s[0])||{};if(this._shouldUpdateLastMessage(c,a)){let{getMessagePreviewText:e}=this._core["common"],{time:t,sequence:s,elements:i,cloudCustomData:o,messageVersion:n}=a;c.type=i[0].type,c.payload=i[0].content,c.messageForShow=e(c.type,c.payload),c.cloudCustomData=o,c.version=n,c.lastSequence=s,c.lastTime=t,this._emitTopicUpdate(r)}}}}_shouldUpdateLastMessage(e,t){var s;return null===e.payload||({sequence:t,messageVersion:s}=t,e.lastSequence===t&&e.version!==s)}_emitTopicUpdate(e){var{notificationCenter:t,OuterEvent:s}=this._core;t.emitOuterEvent(s.TOPIC_UPDATED,{name:s.TOPIC_UPDATED,data:e})}_handleTopicAtTips(e){let{GroupTips:t=[]}=e,n=[],a=!1;t.forEach(e=>{var{GroupAtTips:e,MsgBody:t,MsgRandom:s,ClientSeq:i}=e;let o={};e?o=this._convertAtInfo(e):t&&(o=this._convertAtInfo(t),a=!0),o.__random=s,o.__sequence=i,n.push(o)}),g.updateGroupAtInfoList(n,a)}_convertAtInfo(e){var{From_Account:e,GroupId:t,TopicId:s,MsgSeq:i,GroupAtType:o}=e;return{groupID:t,topicID:s,from:e,sequence:i,groupAtType:o}}_handleLatestMessage(e){let{utils:{isEmpty:t},message:{messageHelper:i,messageFactory:o}}=this._core,{NewMsg:n,NoUnreadSeqList:a}=e||{};if(!t(n)){let{TopicId:e}=n["GroupInfo"],t=i.parseServerGroupMessage(n),s=o.createMessage(t);s.setElement(t.elements),this._updateUnreadCountAndLastMessage({topicID:e,message:s,excludedUnreadSequenceList:a})}}_updateUnreadCountAndLastMessage(e){let{isUndefined:t}=this._core["utils"],{topicID:s,message:i,excludedUnreadSequenceList:o}=e,n=m(s),a=g.getTopic(n,s);if(a){let e=a.selfInfo.excludedUnreadSequenceList||[];if(t(o)||(e=o),i._isExcludedFromUnreadCount&&e.push(i.sequence),a.updateSelfInfo({excludedUnreadSequenceList:e}),console.log(`${this._name}._updateUnreadCountAndLastMessage latest message sequence:${i.sequence} lastMessage sequence:`+a.lastMessage.lastSequence),i.sequence>a.lastMessage.lastSequence){let e=i.sequence+1,t=(a.updateLastMessage(i),a.updateNextMessageSeq(e),g.computeUnreadCount(a));a.updateUnreadCount(t),this._emitTopicUpdate(a)}}}_dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,TOPIC_NEW_MESSAGE:s,TOPIC_MESSAGE_DELETED:i,TOPIC_MESSAGE_REVOKED:o,TOPIC_MESSAGE_MODIFIED:n,DESTROY:a}}=this._core,{TOPIC_AT_TIPS:r,TOPIC_LATEST_MESSAGE:c}=e["InnerEventSubType"];e.unSubscribeInnerEvent(s,this._handleNewMessage,this),e.unSubscribeInnerEvent(i,this._handleMessageDeleted,this),e.unSubscribeInnerEvent(o,this._handleMessageRevoked,this),e.unSubscribeInnerEvent(n,this._handleMessageModified,this),e.unSubscribeInnerEvent(t,r,this._handleTopicAtTips,this),e.unSubscribeInnerEvent(t,c,this._handleLatestMessage,this),e.unSubscribeInnerEvent(a,this._dispose,this)}},T=new class{constructor(){this._name="TopicOperationHandler"}init(e){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,DESTROY:s}}=this._core=e,{TOPIC_TIPS_NOTIFICATION:i,TOPIC_SYSTEM_NOTIFICATION:o,TOPIC_MESSAGE_READ_SYNC:n}=e["InnerEventSubType"];e.subscribeInnerEvent(t,i,this._handleTopicTips,this),e.subscribeInnerEvent(t,o,this._handleTopicNotices,this),e.subscribeInnerEvent(t,n,this._handleTopicMessageReadSynced,this),e.subscribeInnerEvent(s,this._dispose,this),console.log(this._name+".init")}_handleTopicTips(e){var{GroupTips:t=[]}=e;for(let e=0;e<t.length;e++){var i=t[e];i.MsgBody.OpType!==s?i.MsgBody.OpType!==o?this._emitTopicTips(i):this._handleTopicProfileUpdated(i):this._handleMuteTimeUpdated(i)}}_handleMuteTimeUpdated(e){var{getCurrentUserID:t}=this._core["common"],{GroupInfo:{GroupId:s,TopicId:i},MsgBody:{MsgMemberInfo:o=[]}}=e;for(let e=0;e<o.length;e++){var{User_Account:n,ShutupTime:a}=o[e];if(n===t()&&0<=a){g.updateSelfInfo({groupID:s,topicID:i,selfInfo:{muteTime:a}});break}}}_handleTopicProfileUpdated(e){var{GroupInfo:{GroupId:e,TopicId:t},MsgBody:{MsgTopicNewInfo:{CustomString:s,ShutupAll:i,TopicFaceUrl:o,TopicIntroduction:n,TopicName:a,TopicNotification:r}}}=e,c=g.getTopic(e,t);c&&(c.updateTopic({groupID:e,topicID:t,customData:s,muteAllMembers:i,avatar:o,introduction:n,topicName:a,notification:r}),g.emitTopicUpdate(c))}_handleTopicNotices(e){var{GroupTips:t=[]}=e;for(let e=0;e<t.length;e++){var s=t[e],{MsgBody:{ReportType:o,TopicIdArray:a,MsgFlag:c},GroupInfo:{GroupId:u,TopicId:l}}=s;o===i?this._handleTopicCreated({groupID:u,topicID:l}):o===n?this._handleTopicDeleted({groupID:u,topicIDList:a}):o===r?this._handleMessageRemindTypeUpdated({groupID:u,topicID:l,messageRemindType:c}):this._emitTopicNotices(s)}}_handleTopicCreated(e){var{OuterEvent:t,notificationCenter:s}=this._core;g.setTopicRequestInfo(e.groupID,{}),s.emitOuterEvent(t.TOPIC_CREATED,{name:t.TOPIC_CREATED,data:e})}_handleTopicDeleted(e){var{OuterEvent:t,notificationCenter:s}=this._core,{groupID:i,topicIDList:o=[]}=e;g.deleteTopicList(i,o),s.emitOuterEvent(t.TOPIC_DELETED,{name:t.TOPIC_DELETED,data:e})}_handleMessageRemindTypeUpdated(e){var{groupID:e,topicID:t,messageRemindType:s}=e;g.updateSelfInfo({groupID:e,topicID:t,selfInfo:{messageRemindType:s}})}_handleTopicMessageReadSynced(e){let t=e["GroupTips"],{isUndefined:s}=this._core["utils"];t.forEach(e=>{e=e.MsgBody.GroupReadInfoArray;s(e)||e.forEach(e=>{var{GroupId:e,TopicId:t,LastReadMsgSeq:s}=e;console.log(this._name+`._handleTopicMessageReadSynced topicID:${t} lastReadSequence:`+s),g.updateSelfInfo({groupID:e,topicID:t,selfInfo:{readedSequence:s}}),g.clearGroupAtInfoList(e,t),g.markMessageAsRead(t,s),g.updateUnreadCount(e,t)})})}_emitTopicTips(e){var{message:{messageHelper:t,messageFactory:s},OuterConstant:i,OuterEvent:o,notificationCenter:n}=this._core,t=(e.MsgBody.MsgType=i.MSG_GRP_TIP,t.parseServerGroupMessage(e)),e=(t.flow="in",t.conversationType=i.CONV_GROUP,s.createMessage(t));e.setElement(t.elements),e.isSystemMessage=!0,n.emitOuterEvent(o.MESSAGE_RECEIVED,{name:o.MESSAGE_RECEIVED,data:[e]})}_emitTopicNotices(e){var{message:{messageHelper:t,messageFactory:s},OuterConstant:i,OuterEvent:o,notificationCenter:n}=this._core,t=(e.MsgBody.MsgType=i.MSG_GRP_SYS_NOTICE,t.parseServerGroupMessage(e)),e=(t.flow="in",t.conversationType=i.CONV_SYSTEM,t.conversationID=i.CONV_SYSTEM,s.createMessage(t));e.setElement(t.elements),e.isSystemMessage=!0,n.emitOuterEvent(o.MESSAGE_RECEIVED,{name:o.MESSAGE_RECEIVED,data:[e]})}_dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,DESTROY:s}}=this._core,{TOPIC_TIPS_NOTIFICATION:i,TOPIC_SYSTEM_NOTIFICATION:o,TOPIC_MESSAGE_READ_SYNC:n}=e["InnerEventSubType"];e.unSubscribeInnerEvent(t,i,this._handleTopicTips,this),e.unSubscribeInnerEvent(t,o,this._handleTopicNotices,this),e.unSubscribeInnerEvent(t,n,this._handleTopicMessageReadSynced,this),e.unSubscribeInnerEvent(s,this._dispose,this)}};function f(e,a,r,c){return new(r=r||Promise)(function(s,t){function i(e){try{n(c.next(e))}catch(e){t(e)}}function o(e){try{n(c.throw(e))}catch(e){t(e)}}function n(e){var t;e.done?s(e.value):((t=e.value)instanceof r?t:new r(function(e){e(t)})).then(i,o)}n((c=c.apply(e,a||[])).next())})}var M=new class{constructor(){this._name="GetJoinedCommunityHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"getJoinedCommunityList",context:this})}getJoinedCommunityList(){return f(this,void 0,void 0,function*(){var e=this._core["apiMap"]["getGroupList"],e=(yield e(!0)).filter(e=>!0===e.isSupportTopic);return console.log(this._name+".getJoinedCommunityList ok, count:"+e.length),{code:0,data:{groupList:e}}})}},v=new class{constructor(){this._name="CreateTopicHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"createTopicInCommunity",context:this})}createTopicInCommunity(n){return f(this,void 0,void 0,function*(){let s="createTopicInCommunity",{utils:{isUndefined:e},common:{isTopic:t},helper:{ChatError:i}}=this._core,o=n["topicID"];if(!e(o)&&!t(o)){let e=new i({functionName:s,code:p});throw console.error(this._name+`.${s} fail:`,e),e}try{let e=yield function(r,c){return f(this,void 0,void 0,function*(){var{groupID:e,topicID:t,topicName:s,avatar:i,notification:o,introduction:n,customData:a}=r;return c.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.create_topic",data:{GroupId:e,TopicId:t,TopicName:s,FaceUrl:i,Notification:o,Introduction:n,CustomString:a}})})}(n,this._core),{TopicId:t=""}=e||{};return console.log(this._name+`.${s} ok, topicID:`+t),g.updateTopic([Object.assign(Object.assign({},n),{topicID:t})]),{code:0,data:{topicID:t}}}catch(e){throw console.error(this._name+`.${s} failed, error:`,e),e}})}},E=new class{constructor(){this._name="DeleteTopicHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"deleteTopicFromCommunity",context:this})}deleteTopicFromCommunity(c){return f(this,void 0,void 0,function*(){var s="deleteTopicFromCommunity",{groupID:a,topicIDList:r=[]}=c;try{let e=yield function(s,i){return f(this,void 0,void 0,function*(){var{groupID:e,topicIDList:t}=s;return i.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.destroy_topic",data:{GroupId:e,TopicIdList:t}})})}({groupID:a,topicIDList:r},this._core),{DestroyResultItem:t=[]}=e||{},i=[],o=[],n=[];return t.forEach(e=>{var{TopicId:e,ErrorCode:t,ErrorInfo:s}=e;0===t?(i.push({topicID:e}),n.push(e)):o.push({topicID:e,code:t,message:s})}),0<n.length&&g.deleteTopicList(c.groupID,n),console.log(`${this._name}.${s} ok, groupID:${a} success:${i.length} fail:`+o.length),{code:0,data:{successTopicList:i,failureTopicList:o}}}catch(e){throw console.error(this._name+`.${s} failed, error:`,e),e}})}},S=new class{constructor(){this._name="GetTopicHandler",this._getCloudConfig=e=>{var t=this._core["store"];return(t.get("cloudConfig")||{})[e]}}init(e){e=(this._core=e).helper;e.registerApi({apiName:"getTopicList",context:this})}getTopicList(e){return f(this,void 0,void 0,function*(){var{groupID:t,topicIDList:s=[]}=e,i=0===s.length;if(this._isFetchingFromCache(t,i)){let e=g.getTopicList(t,s);if(i||e.length===s.length)return console.log(this._name+`.getTopicList groupID:${t} from cache, count:`+e.length),{code:0,data:{successTopicList:e,failureTopicList:[]}}}return this._getTopicListFromServer({groupID:t,topicIDList:s},i)})}_isFetchingFromCache(e,t){var{hasFetchedAllTopics:e=!1,time:s=0}=g.getTopicRequestInfo(e);return!(!e&&(t||e))&&Date.now()-s<this._getCacheDuration()}_getCacheDuration(){var{isUndefined:e}=this._core["utils"];let t=this._getCloudConfig("topic_cache_time");return!e(t)&&(t=parseInt(t,10))>=a&&t<=u?1e3*t:1e3*c}_getTopicListFromServer(u,l){return f(this,void 0,void 0,function*(){var i="_getTopicListFromServer",{isEmpty:o}=this._core["utils"],c=u["groupID"];try{let e=yield function(s,i){return f(this,void 0,void 0,function*(){var{groupID:e,topicIDList:t}=s;return i.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.get_topic",data:{GroupId:e,TopicIdList:t,MemberInfoFilter:["NoUnreadSeqList"]}})})}(u,this._core),{TopicAndSelfInfo:t=[]}=e||{},n=[],a=[],r=[],s=(this._convertTopicInfoList(t).forEach(e=>{var{topic:e,selfInfo:t,code:s,message:i}=e,o=e["topicID"];0===s?(n.push(Object.assign(Object.assign({},e),{selfInfo:t})),a.push(o)):r.push({topicID:o,code:s,message:i})}),g.updateTopic(n),g.updateTopicAtInfo(n),console.log(`${this._name}.${i} groupID:${c} from remote, success count:${a.length}, fail count:`+r.length),[]);return o(a)||(g.setTopicRequestInfo(c,{hasFetchedAllTopics:l,time:Date.now()}),s=g.getTopicList(c,a)),{code:0,data:{successTopicList:s,failureTopicList:r}}}catch(e){throw console.error(this._name+`.${i} failed, error:`,e),e}})}_convertTopicInfoList(e){let o=[];return e.forEach(e=>{var{TopicInfo:e={},SelfInfo:t={},ErrorCode:s,ErrorInfo:i}=e;o.push({code:s,message:i,topic:this._convertTopicInfo(e),selfInfo:this._convertSelfInfo(t)})}),o}_convertTopicInfo(e){var t,s,i,o,n,a,r,c,u,l,p,d=this._core["utils"]["isEmpty"];return d(e)?{}:({CreateTime:d,CustomString:e,FaceUrl:t,GroupId:s,LastMsgTime:i,NextMsgSeq:o,Introduction:n,Notification:a,ShutUpAllFlag:r,TopicId:c,TopicName:u,LastMsg:l,AtInfoList:p}=e,{createTime:d,customData:e,avatar:t,groupID:s,lastMessageTime:i,nextMessageSeq:o,introduction:n,notification:a,muteAllMembers:r,topicID:c,topicName:u,lastMsg:this._convertLastMsg(l),groupAtInfoList:this._convertAtInfoList({groupID:s,topicID:c,atInfoList:p})})}_convertLastMsg(e){var t,{utils:{isUndefined:s},OuterConstant:i}=this._core;if(!s(e))return 4===e.Event&&(e.MsgBody.MsgType=i.MSG_GRP_TIP),{messageHelper:s}=this._core["message"],i=s.parseServerGroupMessage(e),{From_AccountHeadurl:s,From_AccountNick:e,LastMsgSeq:t}=e,Object.assign(Object.assign({},i),{avatar:s,nick:e,sequence:t})}_convertAtInfoList(e){let{groupID:i,topicID:o,atInfoList:t=[]}=e;if(0===t.length)return[];let n=[];return t.forEach(e=>{var{AtFlagList:e,AtMsgSeq:t,From_Account:s}=e;n.push({groupID:i,topicID:o,groupAtType:e,sequence:t,from:s})}),n}_convertSelfInfo(e){var t,s,i,o=this._core["utils"]["isEmpty"];return o(e)?{}:({InheritGroupReceiveOption:o,MsgFlag:e,MsgSeq:t,NoUnreadSeqList:s,ShutUpTime:i}=e,{inheritGroupReceiveOption:o,messageRemindType:e,readedSequence:t,excludedUnreadSequenceList:s,muteTime:i})}},D=new class{constructor(){this._name="UpdateTopicHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"updateTopicProfile",context:this})}updateTopicProfile(n){return f(this,void 0,void 0,function*(){var t="updateTopicProfile",{isUndefined:e}=this._core["utils"],{groupID:s,topicID:i,muteAllMembers:o}=n;e(n.muteAllMembers)||(n.muteAllMembers=!0===o?"On":"Off");try{return yield function(c,u){return f(this,void 0,void 0,function*(){var{groupID:e,topicID:t,topicName:s,avatar:i,notification:o,introduction:n,customData:a,muteAllMembers:r}=c;return u.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.modify_topic",data:{GroupId:e,TopicId:t,TopicName:s,FaceUrl:i,Notification:o,Introduction:n,CustomString:a,ShutUpAllMember:r}})})}(n,this._core),console.log(this._name+`.${t} ok, topicID:`+i),g.updateTopic([n]),{code:0,data:{topic:g.getTopic(s,i)}}}catch(e){throw console.error(this._name+`.${t} failed, topicID:${i} error:`,e),e}})}},C=new class{constructor(){this._name="MessageReadHandler"}init(e){let{helper:t,common:{isTopic:s}}=this._core=e;t.registerApi({apiName:"setMessageRead",context:this,matcher:e=>s(e[0].conversationID)})}setMessageRead(n){return f(this,void 0,void 0,function*(){var e=this._core["utils"]["isEmpty"],t=n["conversationID"],s={code:0,data:{}},t=_(t),i=m(t),o=g.getTopic(i,t);return console.log(this._name+`.setMessageRead topicID:${t} unreadCount:`+((null==o?void 0:o.unreadCount)||0)),o&&(e(o.groupAtInfoList)||this._deleteTopicAtTips(i,t),0!==o.unreadCount&&(e=this._getLocalMessageMaxSequence(o),yield this._setTopicMessageRead(i,t,e))),s})}_deleteTopicAtTips(n,a){return f(this,void 0,void 0,function*(){console.log(this._name+`._deleteTopicAtTips groupID:${n} topicID:`+a);let e=g.getTopic(n,a);if(e){var i=(null==e?void 0:e.groupAtInfoList)||[];if(0!==i.length)try{let{common:{getCurrentUserID:t},OuterConstant:{CONV_AT_ALL:s}}=this._core;var o=[...i];0===(o=i.filter(e=>!e.atTypeArray.includes(s))).length?g.clearGroupAtInfoList(n,a):(yield function(t,s){return f(this,void 0,void 0,function*(){var e=t["messageListToDelete"];return s.common.buildAndSendPacket({servcmd:"openim.deletemsg",data:{DelMsgList:e}})})}({messageListToDelete:o.map(e=>({From_Account:e.from,To_Account:t(),MsgSeq:e.__sequence,MsgRandom:e.__random,GroupId:e.groupID}))},this._core),console.log(this._name+"._deleteTopicAtTips ok. count:"+i.length),g.clearGroupAtInfoList(n,a))}catch(e){console.error(this._name+"._deleteTopicAtTips fail:",e)}}})}_getLocalMessageMaxSequence(e){var{message:{messageDataHandler:t},OuterConstant:{CONV_GROUP:s}}=this._core,i=e["topicID"],t=t.getLocalMessageList(""+s+i),s=Math.max(...t.map(e=>e.sequence));let o=(null==(i=null==e?void 0:e.lastMessage)?void 0:i.lastSequence)||0;return s>o&&(console.log(`${this._name}._getLocalMessageMaxSequence update lastMessageSequence from ${o} to `+s),o=s),o}_setTopicMessageRead(e,t,s){return f(this,void 0,void 0,function*(){try{yield function(i,o){return f(this,void 0,void 0,function*(){var{groupID:e,topicID:t,lastMessageSequence:s}=i;return o.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.msg_read_report",data:{GroupId:e,TopicId:t,MsgReadedSeq:s}})})}({groupID:e,topicID:t,lastMessageSequence:s},this._core),console.log(this._name+"._setTopicMessageRead ok, lastReadSequence:"+s),g.updateSelfInfo({groupID:e,topicID:t,selfInfo:{readedSequence:s}}),g.markMessageAsRead(t,s),g.updateUnreadCount(e,t)}catch(e){throw console.error(this._name+"._setTopicMessageRead fail:",e),e}})}},A=new class{init(e){console.log("TopicAction.init"),M.init(e),v.init(e),E.init(e),S.init(e),D.init(e),C.init(e)}};let L={required:!0,rules:["string"],allowEmpty:!1},y={createTopicInCommunity:{groupID:L,topicName:L},deleteTopicFromCommunity:{groupID:L,topicIDList:{required:!1,rules:["array"],allowEmpty:!0}},getTopicList:{groupID:L,topicIDList:{required:!1,rules:["array"],allowEmpty:!0}},updateTopicProfile:{groupID:L,topicID:L}},O={getJoinedCommunityList:!0,createTopicInCommunity:!0,deleteTopicFromCommunity:!0,getTopicList:!0,updateTopicProfile:!0};var R=new class{install(t){e.init(t),g.init(t),I.init(t),T.init(t),A.init(t),t.helper.registerValidateConfig({auth:O,params:y})}};export{R as default};
|
|
1
|
+
let e=new class{init(e){this.core=e}},t="@TOPIC#_",s=7,o=8,i=17,n=18,r=20,c=300,a=0,u=3600,p=3021,l=["topicID","topicName","avatar","introduction","notification","unreadCount","muteAllMembers","customData","nextMessageSeq","selfInfo","lastMessage"],d=t=>{var{common:{getMessagePreviewText:s}}=e["core"];return{lastTime:(null==t?void 0:t.time)||0,lastSequence:(null==t?void 0:t.sequence)||0,fromAccount:(null==t?void 0:t.from)||"",payload:(null==t?void 0:t.payload)||null,type:(null==t?void 0:t.type)||"",messageForShow:s(null==t?void 0:t.type,null==t?void 0:t.payload),nick:(null==t?void 0:t.nick)||"",avatar:(null==t?void 0:t.avatar)||"",version:(null==t?void 0:t.version)||0,cloudCustomData:(null==t?void 0:t.cloudCustomData)||"",isRevoked:(null==t?void 0:t.isRevoked)||!1,revoker:(null==t?void 0:t.revoker)||null}};class h{constructor(e){this.topicID="",this.topicName="",this.avatar="",this.introduction="",this.notification="",this.unreadCount=0,this.muteAllMembers=!1,this.customData="",this.groupAtInfoList=[],this.nextMessageSeq=0,this.lastMessage=d(),this.selfInfo={muteTime:0,readedSequence:0,messageRemindType:"",excludedUnreadSequenceList:void 0},this._init(e)}_init(e){for(var t in e)l.includes(t)&&("lastMessage"===t?this[t]=d(e[t]):"selfInfo"===t?this.updateSelfInfo(e[t]):this[t]="muteAllMembers"===t?1===e[t]:e[t])}updateUnreadCount(e=0){this.unreadCount=e}updateReadSequence(e=0,t=!1){t&&(this.selfInfo.readedSequence=e)}updateNextMessageSeq(e){this.nextMessageSeq=e}updateLastMessage(e){this.lastMessage=d(e)}updateGroupAtInfoList(t){var{common:{updateGroupAtInfo:s}}=e["core"];s(t,this.groupAtInfoList)}updateTopic(t){var{utils:{isUndefined:s},common:{deepMerge:i}}=e["core"];s(t.selfInfo)||this.updateSelfInfo(t.selfInfo),s(t.muteAllMembers)||(this.muteAllMembers=1===t.muteAllMembers),i(this,t,["groupID","lastMessageTime","selfInfo","muteAllMembers","lastMsg","groupAtInfoList"])}updateSelfInfo(t){var{common:{deepMerge:s}}=e["core"];return 0<s(this.selfInfo,t,[],[""])}reduceUnreadCount(){return 1<=this.unreadCount&&(--this.unreadCount,!0)}isLastMessageRevoked(e){return e===(null==(e=this.lastMessage)?void 0:e.lastSequence)}setLastMessageRevoked(e){this.lastMessage.isRevoked=e}setLastMessageRevoker(e){this.lastMessage.revoker=e}clearGroupAtInfoList(){this.groupAtInfoList.length=0}}var g=new class{constructor(){this._name="TopicDataHandler",this._topicMap=new Map,this._topicRequestInfo=new Map}init(e){var{helper:e,constants:t,notificationCenter:s,InnerEvent:{LOGOUT:i,DESTROY:o}}=this._core=e;e.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.TOPIC_REQUEST_INFO_RESET,this._resetTopicRequestInfo,this),s.subscribeInnerEvent(i,this._reset,this),s.subscribeInnerEvent(o,this._dispose,this),console.log(this._name+".init")}_hasTopic(e,t){return!(null==(e=this._topicMap.get(e))||!e.get(t))}_setTopic(e,t,s){null!=(e=this._topicMap.get(e))&&e.set(t,s)}_deleteTopic(e,t){null!=(e=this._topicMap.get(e))&&e.delete(t)}getTopic(e,t){return null==(e=this._topicMap.get(e))?void 0:e.get(t)}updateTopic(e){e.forEach(e=>{var{groupID:t,topicID:s}=e;let i=null;this._topicMap.has(t)||this._topicMap.set(t,new Map),this._hasTopic(t,s)?null!=(i=this.getTopic(t,s))&&i.updateTopic(e):(this._getLastMessage(e),i=new h(e),this._setTopic(t,s,i));e=this.computeUnreadCount(i);null!=i&&i.updateUnreadCount(e)})}_getLastMessage(s){var{isEmpty:i,isUndefined:o,isArray:n}=this._core["utils"];if(!o(s.lastMsg)){let e=null,t="";t=(n(s.lastMsg.elements)?(e=s.lastMsg.elements[0].content,s.lastMsg.elements[0]):(e=s.lastMsg.elements.content,s.lastMsg.elements)).type;o={payload:e,type:t,time:s.lastMsg.time,sequence:s.lastMsg.sequence,from:s.lastMsg.from,nick:s.lastMsg.nick,avatar:s.lastMsg.avatar,version:s.lastMsg.messageVersion,cloudCustomData:s.lastMsg.cloudCustomData,isRevoked:2===s.lastMsg.isPlaceMessage,revoker:i(s.lastMsg.revokerInfo)?null:s.lastMsg.revokerInfo.revoker};s.lastMessage=o}}computeUnreadCount(s){let{excludedUnreadSequenceList:e=[],readedSequence:i}=s.selfInfo,o=s.nextMessageSeq-s.selfInfo.readedSequence-1;if(0<e.length){let t=0;e.forEach(e=>{e>i&&e<=s.nextMessageSeq-1&&(t+=1)}),1<=t&&(o-=t)}return 0<o?o:0}updateTopicAtInfo(e){0!==e.length&&e.forEach(e=>{var t=this._core["utils"]["isEmpty"],e=e["groupAtInfoList"];t(e)||this.updateGroupAtInfoList(e)})}updateGroupAtInfoList(s,r=!1){if(0!==s.length){let{common:{getCurrentUserID:e},utils:{isUndefined:o,isEmpty:t}}=this._core,n=e(),a=null;s.forEach(e=>{var{groupID:t,topicID:s,from:i}=e;i!==n&&((a=this.getTopic(t,s))&&a.updateGroupAtInfoList(e),o(a))&&r&&(this.updateTopic([{groupID:t,topicID:s}]),null!=(i=this.getTopic(t,s)))&&i.updateGroupAtInfoList(e)}),t(a)||this.emitTopicUpdate(a)}}getTopicList(e,t=[]){var e=this._topicMap.get(e),s=[];return e&&s.push(...e.values()),0<t.length?s.filter(e=>t.includes(e.topicID)):s}deleteTopicList(t,e=[]){this._topicMap.has(t)&&(e.forEach(e=>{this._hasTopic(t,e)&&this._deleteTopic(t,e)}),console.log(this._name+`.deleteTopicList groupID:${t} topicID:`+e.join(",")))}clearGroupAtInfoList(e,t){var s=this._core["utils"]["isEmpty"],e=this.getTopic(e,t);s(null==e?void 0:e.groupAtInfoList)||(null!=e&&e.clearGroupAtInfoList(),console.log(this._name+".clearGroupAtInfoList topicID:"+t))}markMessageAsRead(e,s){let{message:{messageDataHandler:t},OuterConstant:{CONV_GROUP:i}}=this._core,o=(null==t?void 0:t.getLocalMessageList(""+i+e))||[];if(0!==o.length){e=o["length"];for(let t=e-1;0<=t;t--){let e=o[t];if(!(s&&e.sequence>s)){if("in"===e.flow&&e.isRead)break;e.setIsRead(!0)}}}}updateUnreadCount(e,t){var{message:{messageDataHandler:s},OuterConstant:{CONV_GROUP:i}}=this._core;let o=!1;e=this.getTopic(e,t);e&&(s=(null==s?void 0:s.getLocalMessageList(""+i+t))||[],i=e.unreadCount,s=null==s?void 0:s.filter(e=>!e.isRead&&!e._onlineOnlyFlag&&!e.isDeleted).length,console.log(this._name+`._updateUnreadCount topicID:${t} currentUnreadCount:${i} newUnreadCount:`+s),i!==s&&(e.updateUnreadCount(s),o=!0),o)&&this.emitTopicUpdate(e)}updateSelfInfo(e){var{groupID:e,topicID:t,selfInfo:s}=e,i=this.getTopic(e,t);if(i){let e=i.updateSelfInfo(s);console.log(`${this._name}.updateSelfInfo topicID:${t} info:${JSON.stringify(s)} isUpdated:`+e),e&&this.emitTopicUpdate(i)}}getTopicRequestInfo(e){return this._topicRequestInfo.get(e)||{}}setTopicRequestInfo(e,t){return this._topicRequestInfo.set(e,t)}emitTopicUpdate(e){var{OuterEvent:t,notificationCenter:s}=this._core;s.emitOuterEvent(t.TOPIC_UPDATED,{name:t.TOPIC_UPDATED,data:e})}_resetTopicRequestInfo(){this._topicRequestInfo.clear()}_reset(){this._topicMap.clear(),this._topicRequestInfo.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let _=(t="")=>{var{OuterConstant:s}=e["core"];return t.replace(s.CONV_GROUP,"")},m=(e="")=>e.split(t)[0];var I=new class{constructor(){this._name="TopicMessageHandler"}init(e){var{helper:e,notificationCenter:t,constants:{WORKFLOW_NAME:s,WORKFLOW_STEP:i},InnerEvent:{MESSAGE_PUSH:o,TOPIC_NEW_MESSAGE:n,TOPIC_MESSAGE_DELETED:a,TOPIC_MESSAGE_REVOKED:r,TOPIC_MESSAGE_MODIFIED:c,DESTROY:u}}=this._core=e,{TOPIC_AT_TIPS:l,TOPIC_LATEST_MESSAGE:p}=t["InnerEventSubType"];e.registerWorkflowStep(s.SYNC_SERVER_INFO_AFTER_LOGIN,i.UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),e.registerWorkflowStep(s.RECEIVE_GROUP_NEW_MESSAGE,i.UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this),t.subscribeInnerEvent(n,this._handleNewMessage,this),t.subscribeInnerEvent(a,this._handleMessageDeleted,this),t.subscribeInnerEvent(r,this._handleMessageRevoked,this),t.subscribeInnerEvent(c,this._handleMessageModified,this),t.subscribeInnerEvent(o,l,this._handleTopicAtTips,this),t.subscribeInnerEvent(o,p,this._handleLatestMessage,this),t.subscribeInnerEvent(u,this._dispose,this),console.log(this._name+".init")}_handleUnreadSyncFinished(e){let s,{WORKFLOW_STEP:t}=this._core.constants,{groupTipList:i=[]}=e.result[t.UNREAD_MESSAGE_SYNC]||{};for(let t=0;t<i.length;t++){let e=i[t];12===e.Event&&null!=(s=e.GroupTips[0].MsgBody)&&s.TopicId&&this._handleTopicAtTips(e)}}_handleNewMessage(e){var{conversationUpdateFieldList:e=[]}=e.result||{};if(0!==e.length){var t=this._core["common"]["isTopic"];if(t(e[0].conversationID)){let a=this._core["common"]["getCurrentUserID"];e.forEach(e=>{let{conversationID:t="",lastMessage:o}=e,s=_(t),i=m(s),n=g.getTopic(i,s);if(n){let{from:e,sequence:t}=o,s=t+1,i=e===a();if(s>n.nextMessageSeq){n.updateNextMessageSeq(s),n.updateLastMessage(o),n.updateReadSequence(t,i);let e=i?0:g.computeUnreadCount(n);n.updateUnreadCount(e),this._emitTopicUpdate(n)}}})}}}_handleMessageDeleted(s){var i=_(s),o=m(i),o=g.getTopic(o,i);if(console.log(this._name+`._handleMessageDeleted, topicID:${i} hasTopic:`+!!o),o){var{message:{messageDataHandler:n},utils:{isEmpty:a}}=this._core,r=(null==n?void 0:n.getLocalMessageList(s))||[];let t={};for(let e=(r.length||0)-1;0<=e;e--)if(!r[e].isDeleted){t=r[e];break}let e=!1;o.lastMessage.lastSequence!==t.sequence&&(a(t)&&(t={}),o.updateLastMessage(t),e=!0),e&&(this._emitTopicUpdate(o),console.log(this._name+`._handleMessageDeleted, topicID:${i} with lastMessage:`+o.lastMessage))}}_handleMessageRevoked(e){var{messageList:e=[]}=e;if(console.log(this._name+"._handleMessageRevoked messageList:"+e.length),0!==e.length){let o=null,n=!1;e.forEach(e=>{var{to:e,sequence:t,revoker:s}=e,i=m(e);if(o=g.getTopic(i,e)){o.reduceUnreadCount()&&(n=!0),o.isLastMessageRevoked(t)&&(o.setLastMessageRevoked(!0),o.setLastMessageRevoker(s),n=!0);let{excludedUnreadSequenceList:e=[]}=o.selfInfo;e.push(t),o.updateSelfInfo({excludedUnreadSequenceList:e})}}),n&&this._emitTopicUpdate(o)}}_handleMessageModified(e){let{conversationID:t,messageList:s}=e,i=_(t),o=m(i),r=g.getTopic(o,i);if(console.log(`${this._name}._handleMessageModified topicID:${i} hasTopic:`+!!r),r){var c=r["lastMessage"];if(c){let a=(null==s?void 0:s[0])||{};if(this._shouldUpdateLastMessage(c,a)){let{getMessagePreviewText:e}=this._core["common"],{time:t,sequence:s,elements:i,cloudCustomData:o,messageVersion:n}=a;c.type=i[0].type,c.payload=i[0].content,c.messageForShow=e(c.type,c.payload),c.cloudCustomData=o,c.version=n,c.lastSequence=s,c.lastTime=t,this._emitTopicUpdate(r)}}}}_shouldUpdateLastMessage(e,t){var s;return null===e.payload||({sequence:t,messageVersion:s}=t,e.lastSequence===t&&e.version!==s)}_emitTopicUpdate(e){var{notificationCenter:t,OuterEvent:s}=this._core;t.emitOuterEvent(s.TOPIC_UPDATED,{name:s.TOPIC_UPDATED,data:e})}_handleTopicAtTips(e){let{GroupTips:t=[]}=e,n=[],a=!1;t.forEach(e=>{var{GroupAtTips:e,MsgBody:t,MsgRandom:s,ClientSeq:i}=e;let o={};e?o=this._convertAtInfo(e):t&&(o=this._convertAtInfo(t),a=!0),o.__random=s,o.__sequence=i,n.push(o)}),g.updateGroupAtInfoList(n,a)}_convertAtInfo(e){var{From_Account:e,GroupId:t,TopicId:s,MsgSeq:i,GroupAtType:o}=e;return{groupID:t,topicID:s,from:e,sequence:i,groupAtType:o}}_handleLatestMessage(e){let{utils:{isEmpty:t},message:{messageHelper:i,messageFactory:o}}=this._core,{NewMsg:n,NoUnreadSeqList:a}=e||{};if(!t(n)){let{TopicId:e}=n["GroupInfo"],t=i.parseServerGroupMessage(n),s=o.createMessage(t);s.setElement(t.elements),this._updateUnreadCountAndLastMessage({topicID:e,message:s,excludedUnreadSequenceList:a})}}_updateUnreadCountAndLastMessage(e){let{isUndefined:t}=this._core["utils"],{topicID:s,message:i,excludedUnreadSequenceList:o}=e,n=m(s),a=g.getTopic(n,s);if(a){let e=a.selfInfo.excludedUnreadSequenceList||[];if(t(o)||(e=o),i._isExcludedFromUnreadCount&&e.push(i.sequence),a.updateSelfInfo({excludedUnreadSequenceList:e}),console.log(`${this._name}._updateUnreadCountAndLastMessage latest message sequence:${i.sequence} lastMessage sequence:`+a.lastMessage.lastSequence),i.sequence>a.lastMessage.lastSequence){let e=i.sequence+1,t=(a.updateLastMessage(i),a.updateNextMessageSeq(e),g.computeUnreadCount(a));a.updateUnreadCount(t),this._emitTopicUpdate(a)}}}_dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,TOPIC_NEW_MESSAGE:s,TOPIC_MESSAGE_DELETED:i,TOPIC_MESSAGE_REVOKED:o,TOPIC_MESSAGE_MODIFIED:n,DESTROY:a}}=this._core,{TOPIC_AT_TIPS:r,TOPIC_LATEST_MESSAGE:c}=e["InnerEventSubType"];e.unSubscribeInnerEvent(s,this._handleNewMessage,this),e.unSubscribeInnerEvent(i,this._handleMessageDeleted,this),e.unSubscribeInnerEvent(o,this._handleMessageRevoked,this),e.unSubscribeInnerEvent(n,this._handleMessageModified,this),e.unSubscribeInnerEvent(t,r,this._handleTopicAtTips,this),e.unSubscribeInnerEvent(t,c,this._handleLatestMessage,this),e.unSubscribeInnerEvent(a,this._dispose,this)}},T=new class{constructor(){this._name="TopicOperationHandler"}init(e){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,DESTROY:s}}=this._core=e,{TOPIC_TIPS_NOTIFICATION:i,TOPIC_SYSTEM_NOTIFICATION:o,TOPIC_MESSAGE_READ_SYNC:n}=e["InnerEventSubType"];e.subscribeInnerEvent(t,i,this._handleTopicTips,this),e.subscribeInnerEvent(t,o,this._handleTopicNotices,this),e.subscribeInnerEvent(t,n,this._handleTopicMessageReadSynced,this),e.subscribeInnerEvent(s,this._dispose,this),console.log(this._name+".init")}_handleTopicTips(e){var{GroupTips:t=[]}=e;for(let e=0;e<t.length;e++){var i=t[e];i.MsgBody.OpType!==s?i.MsgBody.OpType!==o?this._emitTopicTips(i):this._handleTopicProfileUpdated(i):this._handleMuteTimeUpdated(i)}}_handleMuteTimeUpdated(e){var{getCurrentUserID:t}=this._core["common"],{GroupInfo:{GroupId:s,TopicId:i},MsgBody:{MsgMemberInfo:o=[]}}=e;for(let e=0;e<o.length;e++){var{User_Account:n,ShutupTime:a}=o[e];if(n===t()&&0<=a){g.updateSelfInfo({groupID:s,topicID:i,selfInfo:{muteTime:a}});break}}}_handleTopicProfileUpdated(e){var{GroupInfo:{GroupId:e,TopicId:t},MsgBody:{MsgTopicNewInfo:{CustomString:s,ShutupAll:i,TopicFaceUrl:o,TopicIntroduction:n,TopicName:a,TopicNotification:r}}}=e,c=g.getTopic(e,t);c&&(c.updateTopic({groupID:e,topicID:t,customData:s,muteAllMembers:i,avatar:o,introduction:n,topicName:a,notification:r}),g.emitTopicUpdate(c))}_handleTopicNotices(e){var{GroupTips:t=[]}=e;for(let e=0;e<t.length;e++){var s=t[e],{MsgBody:{ReportType:o,TopicIdArray:a,MsgFlag:c},GroupInfo:{GroupId:u,TopicId:l}}=s;o===i?this._handleTopicCreated({groupID:u,topicID:l}):o===n?this._handleTopicDeleted({groupID:u,topicIDList:a}):o===r?this._handleMessageRemindTypeUpdated({groupID:u,topicID:l,messageRemindType:c}):this._emitTopicNotices(s)}}_handleTopicCreated(e){var{OuterEvent:t,notificationCenter:s}=this._core;g.setTopicRequestInfo(e.groupID,{}),s.emitOuterEvent(t.TOPIC_CREATED,{name:t.TOPIC_CREATED,data:e})}_handleTopicDeleted(e){var{OuterEvent:t,notificationCenter:s}=this._core,{groupID:i,topicIDList:o=[]}=e;g.deleteTopicList(i,o),s.emitOuterEvent(t.TOPIC_DELETED,{name:t.TOPIC_DELETED,data:e})}_handleMessageRemindTypeUpdated(e){var{groupID:e,topicID:t,messageRemindType:s}=e;g.updateSelfInfo({groupID:e,topicID:t,selfInfo:{messageRemindType:s}})}_handleTopicMessageReadSynced(e){let t=e["GroupTips"],{isUndefined:s}=this._core["utils"];t.forEach(e=>{e=e.MsgBody.GroupReadInfoArray;s(e)||e.forEach(e=>{var{GroupId:e,TopicId:t,LastReadMsgSeq:s}=e;console.log(this._name+`._handleTopicMessageReadSynced topicID:${t} lastReadSequence:`+s),g.updateSelfInfo({groupID:e,topicID:t,selfInfo:{readedSequence:s}}),g.clearGroupAtInfoList(e,t),g.markMessageAsRead(t,s),g.updateUnreadCount(e,t)})})}_emitTopicTips(e){var{message:{messageHelper:t,messageFactory:s},OuterConstant:i,OuterEvent:o,notificationCenter:n}=this._core,t=(e.MsgBody.MsgType=i.MSG_GRP_TIP,t.parseServerGroupMessage(e)),e=(t.flow="in",t.conversationType=i.CONV_GROUP,s.createMessage(t));e.setElement(t.elements),e.isSystemMessage=!0,n.emitOuterEvent(o.MESSAGE_RECEIVED,{name:o.MESSAGE_RECEIVED,data:[e]})}_emitTopicNotices(e){var{message:{messageHelper:t,messageFactory:s},OuterConstant:i,OuterEvent:o,notificationCenter:n}=this._core,t=(e.MsgBody.MsgType=i.MSG_GRP_SYS_NOTICE,t.parseServerGroupMessage(e)),e=(t.flow="in",t.conversationType=i.CONV_SYSTEM,t.conversationID=i.CONV_SYSTEM,s.createMessage(t));e.setElement(t.elements),e.isSystemMessage=!0,n.emitOuterEvent(o.MESSAGE_RECEIVED,{name:o.MESSAGE_RECEIVED,data:[e]})}_dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,DESTROY:s}}=this._core,{TOPIC_TIPS_NOTIFICATION:i,TOPIC_SYSTEM_NOTIFICATION:o,TOPIC_MESSAGE_READ_SYNC:n}=e["InnerEventSubType"];e.unSubscribeInnerEvent(t,i,this._handleTopicTips,this),e.unSubscribeInnerEvent(t,o,this._handleTopicNotices,this),e.unSubscribeInnerEvent(t,n,this._handleTopicMessageReadSynced,this),e.unSubscribeInnerEvent(s,this._dispose,this)}};function f(e,a,r,c){return new(r=r||Promise)(function(s,t){function i(e){try{n(c.next(e))}catch(e){t(e)}}function o(e){try{n(c.throw(e))}catch(e){t(e)}}function n(e){var t;e.done?s(e.value):((t=e.value)instanceof r?t:new r(function(e){e(t)})).then(i,o)}n((c=c.apply(e,a||[])).next())})}var M=new class{constructor(){this._name="GetJoinedCommunityHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"getJoinedCommunityList",context:this})}getJoinedCommunityList(){return f(this,void 0,void 0,function*(){var e=this._core["apiMap"]["getGroupList"],e=(yield e(!0)).filter(e=>!0===e.isSupportTopic);return console.log(this._name+".getJoinedCommunityList ok, count:"+e.length),{code:0,data:{groupList:e}}})}},v=new class{constructor(){this._name="CreateTopicHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"createTopicInCommunity",context:this})}createTopicInCommunity(n){return f(this,void 0,void 0,function*(){let s="createTopicInCommunity",{utils:{isUndefined:e},common:{isTopic:t},helper:{ChatError:i}}=this._core,o=n["topicID"];if(!e(o)&&!t(o)){let e=new i({functionName:s,code:p});throw console.error(this._name+`.${s} fail:`,e),e}try{let e=yield function(r,c){return f(this,void 0,void 0,function*(){var{groupID:e,topicID:t,topicName:s,avatar:i,notification:o,introduction:n,customData:a}=r;return c.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.create_topic",data:{GroupId:e,TopicId:t,TopicName:s,FaceUrl:i,Notification:o,Introduction:n,CustomString:a}})})}(n,this._core),{TopicId:t=""}=e||{};return console.log(this._name+`.${s} ok, topicID:`+t),g.updateTopic([Object.assign(Object.assign({},n),{topicID:t})]),{code:0,data:{topicID:t}}}catch(e){throw console.error(this._name+`.${s} failed, error:`,e),e}})}},E=new class{constructor(){this._name="DeleteTopicHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"deleteTopicFromCommunity",context:this})}deleteTopicFromCommunity(c){return f(this,void 0,void 0,function*(){var s="deleteTopicFromCommunity",{groupID:a,topicIDList:r=[]}=c;try{let e=yield function(s,i){return f(this,void 0,void 0,function*(){var{groupID:e,topicIDList:t}=s;return i.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.destroy_topic",data:{GroupId:e,TopicIdList:t}})})}({groupID:a,topicIDList:r},this._core),{DestroyResultItem:t=[]}=e||{},i=[],o=[],n=[];return t.forEach(e=>{var{TopicId:e,ErrorCode:t,ErrorInfo:s}=e;0===t?(i.push({topicID:e}),n.push(e)):o.push({topicID:e,code:t,message:s})}),0<n.length&&g.deleteTopicList(c.groupID,n),console.log(`${this._name}.${s} ok, groupID:${a} success:${i.length} fail:`+o.length),{code:0,data:{successTopicList:i,failureTopicList:o}}}catch(e){throw console.error(this._name+`.${s} failed, error:`,e),e}})}},S=new class{constructor(){this._name="GetTopicHandler",this._getCloudConfig=e=>{var t=this._core["store"];return(t.get("cloudConfig")||{})[e]}}init(e){e=(this._core=e).helper;e.registerApi({apiName:"getTopicList",context:this})}getTopicList(e){return f(this,void 0,void 0,function*(){var{groupID:t,topicIDList:s=[]}=e,i=0===s.length;if(this._isFetchingFromCache(t,i)){let e=g.getTopicList(t,s);if(i||e.length===s.length)return console.log(this._name+`.getTopicList groupID:${t} from cache, count:`+e.length),{code:0,data:{successTopicList:e,failureTopicList:[]}}}return this._getTopicListFromServer({groupID:t,topicIDList:s},i)})}_isFetchingFromCache(e,t){var{hasFetchedAllTopics:e=!1,time:s=0}=g.getTopicRequestInfo(e);return!(!e&&(t||e))&&Date.now()-s<this._getCacheDuration()}_getCacheDuration(){var{isUndefined:e}=this._core["utils"];let t=this._getCloudConfig("topic_cache_time");return!e(t)&&(t=parseInt(t,10))>=a&&t<=u?1e3*t:1e3*c}_getTopicListFromServer(u,l){return f(this,void 0,void 0,function*(){var i="_getTopicListFromServer",{isEmpty:o}=this._core["utils"],c=u["groupID"];try{let e=yield function(s,i){return f(this,void 0,void 0,function*(){var{groupID:e,topicIDList:t}=s;return i.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.get_topic",data:{GroupId:e,TopicIdList:t,MemberInfoFilter:["NoUnreadSeqList"]}})})}(u,this._core),{TopicAndSelfInfo:t=[]}=e||{},n=[],a=[],r=[],s=(this._convertTopicInfoList(t).forEach(e=>{var{topic:e,selfInfo:t,code:s,message:i}=e,o=e["topicID"];0===s?(n.push(Object.assign(Object.assign({},e),{selfInfo:t})),a.push(o)):r.push({topicID:o,code:s,message:i})}),g.updateTopic(n),g.updateTopicAtInfo(n),console.log(`${this._name}.${i} groupID:${c} from remote, success count:${a.length}, fail count:`+r.length),[]);return o(a)||(g.setTopicRequestInfo(c,{hasFetchedAllTopics:l,time:Date.now()}),s=g.getTopicList(c,a)),{code:0,data:{successTopicList:s,failureTopicList:r}}}catch(e){throw console.error(this._name+`.${i} failed, error:`,e),e}})}_convertTopicInfoList(e){let o=[];return e.forEach(e=>{var{TopicInfo:e={},SelfInfo:t={},ErrorCode:s,ErrorInfo:i}=e;o.push({code:s,message:i,topic:this._convertTopicInfo(e),selfInfo:this._convertSelfInfo(t)})}),o}_convertTopicInfo(e){var t,s,i,o,n,a,r,c,u,l,p,d=this._core["utils"]["isEmpty"];return d(e)?{}:({CreateTime:d,CustomString:e,FaceUrl:t,GroupId:s,LastMsgTime:i,NextMsgSeq:o,Introduction:n,Notification:a,ShutUpAllFlag:r,TopicId:c,TopicName:u,LastMsg:l,AtInfoList:p}=e,{createTime:d,customData:e,avatar:t,groupID:s,lastMessageTime:i,nextMessageSeq:o,introduction:n,notification:a,muteAllMembers:r,topicID:c,topicName:u,lastMsg:this._convertLastMsg(l),groupAtInfoList:this._convertAtInfoList({groupID:s,topicID:c,atInfoList:p})})}_convertLastMsg(e){var t,{utils:{isUndefined:s},OuterConstant:i}=this._core;if(!s(e))return 4===e.Event&&(e.MsgBody.MsgType=i.MSG_GRP_TIP),{messageHelper:s}=this._core["message"],i=s.parseServerGroupMessage(e),{From_AccountHeadurl:s,From_AccountNick:e,LastMsgSeq:t}=e,Object.assign(Object.assign({},i),{avatar:s,nick:e,sequence:t})}_convertAtInfoList(e){let{groupID:i,topicID:o,atInfoList:t=[]}=e;if(0===t.length)return[];let n=[];return t.forEach(e=>{var{AtFlagList:e,AtMsgSeq:t,From_Account:s}=e;n.push({groupID:i,topicID:o,groupAtType:e,sequence:t,from:s})}),n}_convertSelfInfo(e){var t,s,i,o=this._core["utils"]["isEmpty"];return o(e)?{}:({InheritGroupReceiveOption:o,MsgFlag:e,MsgSeq:t,NoUnreadSeqList:s,ShutUpTime:i}=e,{inheritGroupReceiveOption:o,messageRemindType:e,readedSequence:t,excludedUnreadSequenceList:s,muteTime:i})}},D=new class{constructor(){this._name="UpdateTopicHandler"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"updateTopicProfile",context:this})}updateTopicProfile(n){return f(this,void 0,void 0,function*(){var t="updateTopicProfile",{isUndefined:e}=this._core["utils"],{groupID:s,topicID:i,muteAllMembers:o}=n;e(n.muteAllMembers)||(n.muteAllMembers=!0===o?"On":"Off");try{return yield function(c,u){return f(this,void 0,void 0,function*(){var{groupID:e,topicID:t,topicName:s,avatar:i,notification:o,introduction:n,customData:a,muteAllMembers:r}=c;return u.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.modify_topic",data:{GroupId:e,TopicId:t,TopicName:s,FaceUrl:i,Notification:o,Introduction:n,CustomString:a,ShutUpAllMember:r}})})}(n,this._core),console.log(this._name+`.${t} ok, topicID:`+i),g.updateTopic([n]),{code:0,data:{topic:g.getTopic(s,i)}}}catch(e){throw console.error(this._name+`.${t} failed, topicID:${i} error:`,e),e}})}},C=new class{constructor(){this._name="MessageReadHandler"}init(e){let{helper:t,common:{isTopic:s}}=this._core=e;t.registerApi({apiName:"setMessageRead",context:this,matcher:e=>s(e[0].conversationID)})}setMessageRead(l){return f(this,void 0,void 0,function*(){let{utils:{isEmpty:e},ssoLog:t,helper:{ChatError:o}}=this._core,s=l["conversationID"],i={code:0,data:{}},n=_(s),a=m(n),r=g.getTopic(a,n);if(console.log(this._name+`.setMessageRead topicID:${n} unreadCount:`+((null==r?void 0:r.unreadCount)||0)),r&&(e(r.groupAtInfoList)||this._deleteTopicAtTips(a,n),0!==r.unreadCount)){var c=this._getLocalMessageMaxSequence(r),u=t.createSSOLogData({method:"setMessageRead"});u.setLogInfo({message:"conversationID:"+s,moreMessage:"lastMessageSequence:"+c});try{yield this._setTopicMessageRead(a,n,c),u.end()}catch(e){let{errorCode:t,errorInfo:s}=e,i=new o({functionName:"setMessageRead",code:t,message:s});throw u.setError(i).end(),i}}return i})}_deleteTopicAtTips(n,a){return f(this,void 0,void 0,function*(){console.log(this._name+`._deleteTopicAtTips groupID:${n} topicID:`+a);let e=g.getTopic(n,a);if(e){var i=(null==e?void 0:e.groupAtInfoList)||[];if(0!==i.length)try{let{common:{getCurrentUserID:t},OuterConstant:{CONV_AT_ALL:s}}=this._core;var o=[...i];0===(o=i.filter(e=>!e.atTypeArray.includes(s))).length?g.clearGroupAtInfoList(n,a):(yield function(t,s){return f(this,void 0,void 0,function*(){var e=t["messageListToDelete"];return s.common.buildAndSendPacket({servcmd:"openim.deletemsg",data:{DelMsgList:e}})})}({messageListToDelete:o.map(e=>({From_Account:e.from,To_Account:t(),MsgSeq:e.__sequence,MsgRandom:e.__random,GroupId:e.groupID}))},this._core),console.log(this._name+"._deleteTopicAtTips ok. count:"+i.length),g.clearGroupAtInfoList(n,a))}catch(e){console.error(this._name+"._deleteTopicAtTips fail:",e)}}})}_getLocalMessageMaxSequence(e){var{message:{messageDataHandler:t},OuterConstant:{CONV_GROUP:s}}=this._core,i=e["topicID"],t=t.getLocalMessageList(""+s+i),s=Math.max(...t.map(e=>e.sequence));let o=(null==(i=null==e?void 0:e.lastMessage)?void 0:i.lastSequence)||0;return s>o&&(console.log(`${this._name}._getLocalMessageMaxSequence update lastMessageSequence from ${o} to `+s),o=s),o}_setTopicMessageRead(e,t,s){return f(this,void 0,void 0,function*(){try{yield function(i,o){return f(this,void 0,void 0,function*(){var{groupID:e,topicID:t,lastMessageSequence:s}=i;return o.common.buildAndSendPacket({servcmd:"million_group_open_http_svc.msg_read_report",data:{GroupId:e,TopicId:t,MsgReadedSeq:s}})})}({groupID:e,topicID:t,lastMessageSequence:s},this._core),console.log(this._name+"._setTopicMessageRead ok, lastReadSequence:"+s),g.updateSelfInfo({groupID:e,topicID:t,selfInfo:{readedSequence:s}}),g.markMessageAsRead(t,s),g.updateUnreadCount(e,t)}catch(e){throw console.error(this._name+"._setTopicMessageRead fail:",e),e}})}},A=new class{init(e){console.log("TopicAction.init"),M.init(e),v.init(e),E.init(e),S.init(e),D.init(e),C.init(e)}};let L={required:!0,rules:["string"],allowEmpty:!1},y={createTopicInCommunity:{groupID:L,topicName:L},deleteTopicFromCommunity:{groupID:L,topicIDList:{required:!1,rules:["array"],allowEmpty:!0}},getTopicList:{groupID:L,topicIDList:{required:!1,rules:["array"],allowEmpty:!0}},updateTopicProfile:{groupID:L,topicID:L}},O={getJoinedCommunityList:!0,createTopicInCommunity:!0,deleteTopicFromCommunity:!0,getTopicList:!0,updateTopicProfile:!0};var R=new class{install(t){e.init(t),g.init(t),I.init(t),T.init(t),A.init(t),t.helper.registerValidateConfig({auth:O,params:y})}};export{R as default};
|