@tencentcloud/lite-chat 1.6.1 → 1.6.2-beta.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/basic.es.js +1 -1
- package/basic.js +1 -1
- package/package.json +1 -23
- package/plugins/conversation.es.js +1 -1
- package/plugins/conversation.js +1 -1
- package/plugins/message-enhancer.es.js +1 -1
- package/plugins/message-enhancer.js +1 -1
- package/plugins/rich-media-message.es.js +1 -1
- package/plugins/rich-media-message.js +1 -1
- package/professional.es.js +1 -1
- package/professional.js +1 -1
- package/standard.es.js +1 -1
- package/standard.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["TencentCloudChatMessage-enhancer"]=t()}(this,function(){function h(e,a,i,c){return new(i=i||Promise)(function(s,t){function r(e){try{o(c.next(e))}catch(e){t(e)}}function n(e){try{o(c.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?s(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(r,n)}o((c=c.apply(e,a||[])).next())})}let M=new class{init(e){this.core=e}};var r,E,n,e;(e=r=r||{}).MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem",(e=E=E||{})[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD";let a={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},i="16k_zh-PY",c={[a.ZH_CN]:"16k_zh",[a.EN_US]:"16k_en",[a.YUE_HK]:"16k_yue",[a.JA_JP]:"16k_ja",[a.ZH_PY]:i},u=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,d={READ:0,UNREAD:1},f=((e=n=n||{}).IN="in",e.OUT="out","C2C"),y="GROUP";function I(o){return h(this,void 0,void 0,function*(){var e,s=M.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(f,""),t=yield function(t){return h(this,void 0,void 0,function*(){var e={To_Account:t};return M.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([e]);if(t){let e=t["ReadTime"];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 C(i){return h(this,void 0,void 0,function*(){var e;let{message:s,user:t,appStore:r,constants:{OuterConstant:n}}=M.core,o=r.conversationStore.getConversationMap();if(o.has(i)){let s=null==(e=o.get(i))?void 0:e.userProfile;if(s&&i.startsWith(n.CONV_C2C)){let{avatar:e,nick:t}=s;M.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:i,latestAvatar:e,latestNick:t,isSentByMe:!1})}}var a=((yield t.userProfile.getMyProfile())||{})["data"];if(a){let{avatar:e,nick:t}=a;s.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:i,latestAvatar:e,latestNick:t,isSentByMe:!0})}})}function l(e){let t,s=M.core["message"],{conversationID:r,messageID:n}=e;return t=(t=s.messageDataHandler.getLocalMessageList(r).find(e=>e.ID===n))||s.messageDataHandler.getSparseMessageList(r).find(e=>e.ID===n)}function g(e){return e.map(e=>{var{from:t,to:s,cloudCustomData:r,avatar:n,nick:o,ID:a,clientSequence:i,clientTime:c,messageRandom:u,messageSequence:l,time:d}=e;return{ClientSeq:i,CloudCustomData:r,From_Account:t,From_AccountHeadurl:n,From_AccountNick:o,Id:a,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:u,Random:u,MsgSeq:l,MsgTimeStamp:d,ReceiverId:s,SenderId:t,To_Account:s}})}function m(e){var{From_Account:t,From_AccountHeadurl:s,From_AccountNick:r,GroupId:n,MsgClientTime:o,ClientSeq:a,To_Account:i,MsgTimeStamp:c,TinyId:u,MsgRandom:l,MsgSeq:d}=e;return{from:t,avatar:s,nick:r,clientTime:o,time:c,tinyID:u,random:l,sequence:d,to:i,groupID:n,clientSequence:a,_elements:null==(t=e.MsgBody)?void 0:t.map(e=>{var t=e["MsgType"];return M.core.message.messageFactory.getElementClass(t).parseServerPushElement(e)})}}var t=new class{constructor(){this._reactionsMap=new Map}init(e){var{helper:e,notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{MESSAGE_REACTION_UPDATED:r,MESSAGE_REACTION_UPDATED_SYNC:n}}=this._core=e;e.registerApi({apiName:"addMessageReaction",context:this}),e.registerApi({apiName:"removeMessageReaction",context:this}),e.registerApi({apiName:"getMessageReactions",context:this}),e.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),t.subscribeInnerEvent(s,r,this._handleReactionUpdated,this),t.subscribeInnerEvent(s,n,this._handleReactionSync,this)}addMessageReaction(d,g){return h(this,void 0,void 0,function*(){var{OuterConstant:e,helper:s}=this._core,{conversationID:r,ID:n,conversationType:t,from:o,to:a,clientSequence:i,random:c,time:u,sequence:l}=(this._validateMessageReactionBusinessCapability(),d),r=`conversationID:${r} messageID:${n} reactionID:`+g;try{return this._recordMessageReactedByMe(n,g),t===e.CONV_C2C?yield function(a,i){return h(this,void 0,void 0,function*(){var{from:e,to:t,clientSequence:s,random:r,time:n,reactionID:o}=a,t={From_Account:e,To_Account:t,MsgKey:s+`_${r}_`+n,Reaction:o,Add_Account:[null==(e=i.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:t})})}({from:o,to:a,clientSequence:i,random:c,time:u,reactionID:g},this._core):t===e.CONV_GROUP&&(yield function(r,n){return h(this,void 0,void 0,function*(){var{to:e,reactionID:t,sequence:s}=r,s={GroupId:e,MsgSeq:s,Reaction:t,Add_Account:[null==(e=n.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:s})})}({to:a,reactionID:g,sequence:l},this._core)),{code:0,successLog:{message:r}}}catch(e){this._removeMyReactionRecord(n,g);let t=(e||{})["errorCode"];throw new s.ChatError({functionName:"addMessageReaction",code:t,moreMessage:r})}})}removeMessageReaction(d,g){return h(this,void 0,void 0,function*(){var{OuterConstant:e,helper:s}=this._core,{conversationID:r,ID:t,conversationType:n,from:o,to:a,clientSequence:i,random:c,time:u,sequence:l}=(this._validateMessageReactionBusinessCapability(),d),r=`conversationID:${r} messageID:${t} reactionID:`+g;try{return this._removeMyReactionRecord(t,g),n===e.CONV_C2C?yield function(a,i){return h(this,void 0,void 0,function*(){var{from:e,to:t,clientSequence:s,random:r,time:n,reactionID:o}=a,t={From_Account:e,To_Account:t,MsgKey:s+`_${r}_`+n,Reaction:o,Del_Account:[null==(e=i.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:t})})}({from:o,to:a,clientSequence:i,random:c,time:u,reactionID:g},this._core):n===e.CONV_GROUP&&(yield function(r,n){return h(this,void 0,void 0,function*(){var{to:e,reactionID:t,sequence:s}=r,s={GroupId:e,MsgSeq:s,Reaction:t,Del_Account:[null==(e=n.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:s},n)})}({to:a,reactionID:g,sequence:l},this._core)),{code:0,successLog:{message:r}}}catch(e){let t=(e||{})["errorCode"];throw new s.ChatError({functionName:"removeMessageReaction",code:t,moreMessage:r})}})}getAllUserListOfMessageReaction(c){return h(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();let{message:e,reactionID:t,nextSeq:r=0}=c,s=100<c.count?100:c.count,n=e["conversationID"],{helper:o,constants:a}=this._core;try{var i;if(i=n.startsWith(a.OuterConstant.CONV_C2C)?yield function(c){return h(this,void 0,void 0,function*(){var{message:e,nextSeq:t,reactionID:s,count:r}=c,{from:e,to:n,clientSequence:o,random:a,time:i}=e,s={Reaction:s,NextSeq:t,Count:r,From_Account:e,To_Account:n,MsgKey:o+`_${a}_`+i};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:s})})}({message:e,reactionID:t,nextSeq:r,count:s}):yield function(o){return h(this,void 0,void 0,function*(){var{message:e,nextSeq:t,reactionID:s,count:r}=o,{sequence:e,to:n}=e,s={Reaction:s,NextSeq:t,GroupId:n,Count:r,MsgSeq:e};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:s})})}({message:e,reactionID:t,nextSeq:r,count:s})){let{Reaction_Account:e,NextSeq:t}=i,s=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===r,userList:s}}}}catch(e){let t=(e||{})["errorCode"];throw new o.ChatError({functionName:"getAllUserListOfMessageReaction",code:t})}})}getMessageReactions(m){return h(this,void 0,void 0,function*(){var e=this._core["constants"],{messageList:t,maxUserCountPerReaction:s=10}=(this._validateMessageReactionBusinessCapability(),m),r=t[0];let n=null,o=new Map,{from:a,to:i,conversationType:c}=r,u=this._generateMessageKeyList(t,o),{Results:l=[]}=(c===e.OuterConstant.CONV_C2C?n=yield function(n){return h(this,void 0,void 0,function*(){var{from:e,to:t,messageKeyList:s,maxUserCountPerReaction:r}=n,e={From_Account:e,To_Account:t,MsgKeyList:s,Count:r};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:e})})}({from:a,to:i,messageKeyList:u,maxUserCountPerReaction:s}):c===e.OuterConstant.CONV_GROUP&&(n=yield function(r){return h(this,void 0,void 0,function*(){var{groupId:e,messageSequenceList:t,maxUserCountPerReaction:s}=r,e={GroupId:e,MsgSeqList:t,Count:s};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:e})})}({groupId:i,messageSequenceList:u,maxUserCountPerReaction:s})),n||{}),d=this._extractUserIDsFromReactionResults(l),g=yield this._getUserProfileMap(d);return{code:0,data:{resultList:l.map(e=>{var{ReactionList:e,MsgSeq:t,MsgKey:s}=e;return{messageID:this._generateMessageID({messageSequence:t,messageKey:s,messageIDMap:o}),reactionList:e.map(e=>{var{Reaction:e,Count:t,Reaction_Account:s,ReactedByMe:r}=e;return{reactionID:e,totalUserCount:t,partialUserList:this._generatePartialUserInfo({userIDList:s,userProfileMap:g}),reactedByMyself:1===r}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(e){let t=[];return null!=e&&e.forEach(e=>{var{ReactionList:e=[]}=e;e.forEach(e=>{e.Reaction_Account&&t.push(...e.Reaction_Account)})}),t}_getUserProfileList(s){return h(this,void 0,void 0,function*(){var e;try{var t=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:s});return t?t.data:[]}catch(e){return[]}})}_getUserProfileMap(e){return h(this,void 0,void 0,function*(){let r=new Map;return(yield this._getUserProfileList(e)).forEach(e=>{var{nick:e,avatar:t,userID:s}=e;r.set(s,{nick:e,avatar:t,userID:s})}),r})}_recordMessageReactedByMe(e,t){e=e+"-"+t;this._reactionsMap.has(e)?this._reactionsMap.get(e).reactedByMe=!0:this._reactionsMap.set(e,{reactedByMe:!0})}_removeMyReactionRecord(e,t){e=e+"-"+t;this._reactionsMap.has(e)&&(this._reactionsMap.get(e).reactedByMe=!1)}_recordMessageReactionInfo(e){var{messageID:e,reactionID:t,reactionInfo:s}=e,e=e+"-"+t,t=this._reactionsMap.get(e)||{};this._reactionsMap.set(e,Object.assign(Object.assign({},t),s))}_validateMessageReactionBusinessCapability(){var{helper:e,constants:t}=this._core;if(!e.checkBusinessCapabilityBits("MSG_REACTION"))throw new e.ChatError({functionName:"addMessageReaction",code:t.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(e){let t=e["MsgReactionNotifyList"],{notificationCenter:d,constants:g}=this._core;t.forEach(l=>h(this,void 0,void 0,function*(){let{C2CMsgInfo:e,GroupMsgInfo:t,MsgReactionSummary:s}=l,{TinyId:r,MsgClientTime:n,MsgRandom:o}=Object.assign(Object.assign({},e),t),a=r+`-${n}-`+o,i=this._extractUserIDsFromReactionResults([{ReactionList:s}]),c=yield this._getUserProfileMap(i),u=s.map(e=>{var{Reaction:t,Reaction_Account:s}=e,r=this._generatePartialUserInfo({userIDList:s,userProfileMap:c}),s=s?e.Count:0,e=(null==(e=this._reactionsMap.get(a+"-"+t))?void 0:e.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:a,reactionID:t,reactionInfo:{reactionID:t,totalUserCount:s,partialUserList:r}}),{reactionID:t,totalUserCount:s,partialUserList:r,reactedByMyself:e}});d.emitOuterEvent(g.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:g.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:a,reactionList:u}})}))}_handleReactionSync(e){var{notificationCenter:t,constants:s}=this._core,{C2CMsgInfo:e={},GroupMsgInfo:r={},Reaction:n,OperateType:o}=e.MsgReactionNotify,{TinyId:e="",MsgClientTime:r=0,MsgRandom:a=0}=Object.assign(Object.assign({},e),r),r=e+`-${r}-`+a,a=r+"-"+n;if(1===o?this._recordMessageReactedByMe(r,n):this._removeMyReactionRecord(r,n),null!=(e=this._reactionsMap.get(a))&&e.reactionID){let e=this._reactionsMap.get(a);e.reactedByMyself=1===o,t.emitOuterEvent(s.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:s.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:r,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){let s=[];return null!=e&&e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){var{messageSequence:e,messageKey:t,messageIDMap:s}=e;return t?s.get(t):s.get(e)}_generateMessageKeyList(e,n){var t=this._core["constants"],s=e[0]["conversationType"];let r=[];return s===t.OuterConstant.CONV_C2C?r=e.map(e=>{var{clientSequence:e,random:t,time:s,ID:r}=e,e=e+`_${t}_`+s;return n.set(e,r),e}):s===t.OuterConstant.CONV_GROUP&&(r=e.map(e=>{var{ID:e,sequence:t}=e;return n.set(t,e),t})),r}},s=new class{init(e){var{helper:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:s,GROUP_MESSAGE_READ_RECEIPT:r},notificationCenter:n}=this._core=e;e.registerApi({apiName:"sendMessageReadReceipt",context:this}),e.registerApi({apiName:"getMessageReadReceiptList",context:this}),e.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),n.subscribeInnerEvent(t,s,this._handleC2CMessageReadReceipt,this),n.subscribeInnerEvent(t,r,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(e){return h(this,void 0,void 0,function*(){var{common:r,constants:t}=this._core,s=this._filterValidMessageSendByOther(e);if(0===s.length)throw new r.ChatError({code:t.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{let e=s[0]["conversationType"];return e===t.OuterConstant.CONV_C2C?yield function(s){return h(this,void 0,void 0,function*(){var{common:e,constants:t}=M.core,t={Peer_Account:s[0].conversationID.replace(t.OuterConstant.CONV_C2C,""),C2CMsgInfo:s.map(e=>{var{from:e,to:t,sequence:s,random:r,time:n,clientTime:o}=e;return{From_Account:e,To_Account:t,MsgSeq:s,MsgRandom:r,MsgTime:n,MsgClientTime:o}})};return e.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:t})})}(s):yield function(s){return h(this,void 0,void 0,function*(){var{common:e,constants:t}=M.core,t={GroupId:s[0].conversationID.replace(t.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:t})})}(s),{code:0,data:{}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getMessageReadReceiptList(n){return h(this,void 0,void 0,function*(){let{common:r,constants:t}=this._core;try{let e=n[0]["conversationType"];if(e===t.OuterConstant.CONV_GROUP){let s=this._filterValidMessageSendByMe(n);if(0<(null==s?void 0:s.length)){let e=yield function(s){return h(this,void 0,void 0,function*(){var{common:e,constants:t}=M.core,t={GroupId:s[0].conversationID.replace(t.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:t})})}(s),t=(e||{})["GroupMsgReceiptList"];this._updateGroupMessagesReadReceiptInfo({messageList:n,readReceiptList:t})}}return{code:0,data:{messageList:n}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getGroupMessageReadMemberList(o){return h(this,void 0,void 0,function*(){let{constants:e,common:r}=this._core,{message:t,filter:a=d.READ,cursor:s=""}=o,{conversationID:n,sequence:i,ID:c}=t,u=n.replace(e.OuterConstant.CONV_GROUP,""),l=100<=o.count?100:o.count;try{let o=yield function(o){return h(this,void 0,void 0,function*(){var{sequence:e,groupID:t,filter:s,cursor:r,count:n}=o,e={MsgSeq:e,GroupId:t,Filter:s,Cursor:r,Num:n};return M.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:e})})}({groupID:u,sequence:i,filter:a,cursor:s,count:l});if(o){let{Cursor:e,IsFinish:t,UnreadList:s,ReadList:r}=o,n={cursor:e,isCompleted:1===t,messageID:c,unreadUserIDList:[],readUserIDList:[]};return a===d.READ?n.readUserIDList=r.map(e=>e.Read_Account):a===d.UNREAD&&(n.unreadUserIDList=s.map(e=>e.Unread_Account)),{code:0,data:n}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}_handleC2CMessageReadReceipt(e){let n=[],{constants:t,helper:s}=this._core,{C2cMsgInfo:o,PeerReadTime:a,Peer_Account:i}=e;if(!s.isEmpty(o)){let r=""+t.OuterConstant.CONV_C2C+i;null!=o&&o.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s}=e,e=e+`-${t}-`+s,t=l({conversationID:r,messageID:e});t&&!t.readReceiptInfo.isPeerRead&&(t.readReceiptInfo.isPeerRead=!0,t.readReceiptInfo.timestamp=a,n.push({userID:i,messageID:e,isPeerRead:!0,timestamp:a}))}),this._emitReadReceiptEventIfNeed(n)}}_updateGroupMessagesReadReceiptInfo(e){let{messageList:t,readReceiptList:s}=e,r=new Map;t.forEach(e=>{r.set(e.sequence,e)}),null!=s&&s.forEach(e=>{var t,s;0===e.Code&&({MsgSeq:e,ReadNum:t,UnreadNum:s}=e,e=r.get(e))&&(e.readReceiptInfo.readCount=t,e.readReceiptInfo.unreadCount=s)})}_handleGroupMessageReadReceipt(e){let i=[],s=this._core["constants"],t=e["GroupTips"];t.forEach(e=>{let{MsgBody:{GroupMsgReceiptList:t},GroupInfo:{GroupId:o}}=e,a=""+s.OuterConstant.CONV_GROUP+o;null!=t&&t.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s,ReadNum:r,UnreadNum:n}=e,e=e+`-${t}-`+s,t=l({conversationID:a,messageID:e}),s={groupID:o,messageID:e,readCount:0,unreadCount:0};t&&("number"==typeof r&&(t.readReceiptInfo.readCount=r,s.readCount=r),"number"==typeof n&&(t.readReceiptInfo.unreadCount=n,s.unreadCount=n),i.push(s))})}),this._emitReadReceiptEventIfNeed(i)}_emitReadReceiptEventIfNeed(e){var{notificationCenter:t,OuterEvent:s}=this._core;0<e.length&&t.emitOuterEvent(s.MESSAGE_READ_RECEIPT_RECEIVED,{name:s.MESSAGE_READ_RECEIPT_RECEIVED,data:e})}_filterValidMessageSendByOther(e){return this._filterNeedReadReceiptMessages(e).filter(e=>{e=e.from;return e!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(e){let s=this._core.constants["OuterConstant"];return this._filterNeedReadReceiptMessages(e).filter(e=>{var{from:e,status:t}=e;return e===this._core.common.getCurrentUserID()&&t===s.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(e){return e.filter(e=>!0===e.needReadReceipt)}dispose(){var{InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:t,GROUP_MESSAGE_READ_RECEIPT:s},notificationCenter:r}=this._core;r.unSubscribeInnerEvent(e,t,this._handleC2CMessageReadReceipt,this),r.unSubscribeInnerEvent(e,s,this._handleGroupMessageReadReceipt,this)}};function p(a,i,c){return h(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=M.core["common"],{from:t,to:s,clientSequence:r,random:n,time:o}=a;return e({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:t,To_Account:s,MsgKey:r+`_${n}_`+o,OperateType:c,ExtensionList:i}})})}function v(r,n,o){return h(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=M.core["common"],{to:t,sequence:s}=r;return e({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:t,MsgSeq:s,OperateType:o,ExtensionList:n}})})}var o=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){var{notificationCenter:e,helper:{registerApi:t},InnerEvent:{MESSAGE_PUSH:s,LOGOUT:r},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core=e;t({apiName:"setMessageExtensions",context:this}),t({apiName:"getMessageExtensions",context:this}),t({apiName:"deleteMessageExtensions",context:this}),e.subscribeInnerEvent(s,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(r,this.reset,this)}setMessageExtensions(l,d){return h(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");let{constants:{OuterConstant:t},ssoLog:e}=this._core,{ID:s,conversationID:r,sequence:n,time:o,conversationType:a}=l,i=d;20<d.length&&(i=d.slice(0,20),e.warn("setMessageExtensions","the length of extensions cannot exceed 20"));var c=this._generateServerExtensions(l,i),u=`convID:${r} messageID:${s} sequence:${n} time:${o} count:`+i.length;try{let r;if(a===t.CONV_C2C?r=yield p(l,c,1):a===t.CONV_GROUP&&(r=yield v(l,c,1)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(l,r);return{code:0,data:{extensions:e},successLog:{message:u+` successCount:${t} failCount:`+s}}}return{code:0,data:{extensions:[]}}}catch(t){let e=t["errorCode"];throw new this._core.helper.ChatError({functionName:"setMessageExtensions",code:e,moreMessage:u})}})}getMessageExtensions(a){return h(this,void 0,void 0,function*(){var{isUndefined:s}=this._core["utils"];this._validateMessageExtensionBusinessCapability("getMessageExtensions");let{conversationID:e,ID:r,sequence:t,time:n}=a,o=`convID:${e} messageID:${r} sequence:${t} time:`+n;try{let e,t=(this._completedFetchExtensions.has(r)&&(e=this._extensionsLatestSequenceMap.get(r)),yield this._fetchMessageExtensions(a,e));return s(e)&&1<t.length&&this._completedFetchExtensions.add(r),{code:0,data:{extensions:t},successLog:{message:o}}}catch(s){let{errorCode:e,errorInfo:t=""}=s||{};throw new this._core.common.ChatError({code:e,message:t,moreMessage:o})}})}deleteMessageExtensions(d,g){return h(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");let{utils:{isEmpty:t},constants:{OuterConstant:e}}=this._core,{conversationType:s,conversationID:r,sequence:n,ID:o,time:a}=d,i=3,c=[];t(g)||(i=2,null==g)||g.forEach(e=>{c.push({key:e,value:"",seq:0})});var u=`convID:${r} messageID:${o} sequence:${n} time:${a} operateType:`+i,l=this._generateServerExtensions(d,c);try{let r;if(s===e.CONV_C2C?r=yield p(d,l,i):s===e.CONV_GROUP&&(r=yield v(d,l,i)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(d,r);return{code:0,data:{extensions:e},successLog:{message:u+`successCount:${t} failCount:`+s}}}return{code:0,data:{extensions:[]}}}catch(t){let e=t["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:e,moreMessage:u})}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=this._core;e.unSubscribeInnerEvent(t,r,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){let s=e["ID"],r=t["Seq"],n=t.ExtensionList||[],o=[],a=0,i=0,c=[];return n.forEach(e=>{var{ErrorCode:e,Extension:t}=e,{Key:t,Value:s,Seq:r}=t;o.push({code:e,key:t,value:s}),0===e?a++:i++,c.push({key:t,value:s,seq:r})}),this._extensionsLatestSequenceMap.set(s,r),0<c.length&&this._updateLocalExtensions(e.ID,c),{resultList:o,successCount:a,failureCount:i}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);let r=this._messageExtensionsMap.get(e);null!=t&&t.forEach(e=>{var{key:e,seq:t,value:s=""}=e;null!=r&&r.set(e,{value:s,seq:t})})}_fetchMessageExtensions(c,s){return h(this,void 0,void 0,function*(){let{constants:{OuterConstant:e},utils:{isEmpty:a}}=this._core;try{let o;var{conversationType:t,ID:i}=c;if(t===e.CONV_C2C?o=yield function(e,t){var s=M.core["common"]["buildAndSendPacket"],{from:e,to:r,clientSequence:n,random:o,time:a}=e;return s({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:e,To_Account:r,MsgKey:n+`_${o}_`+a,StartSeq:t}})}(c,s):t===e.CONV_GROUP&&(o=yield function(e,t){var s=M.core["common"]["buildAndSendPacket"],{to:e,sequence:r}=e;return s({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:e,MsgSeq:r,StartSeq:t}})}(c,s)),o){let{LatestSeq:e,ClearSeq:t,CompleteFlag:s}=o,r=(o.ExtensionList||[]).map(e=>({key:e.Key,value:e.Value,seq:e.Seq}));if(this._updateLocalExtensions(i,r),this._clearLocationExtensions(i,t),this._extensionsLatestSequenceMap.set(i,e),1!==s){let e=r[r.length-1].seq+1;return this._fetchMessageExtensions(c,e)}let n=[];if(this._messageExtensionsMap.has(i)){let e=this._messageExtensionsMap.get(i);null!=e&&e.forEach((e,t)=>{e=e.value;a(e)||n.push({key:t,value:e})})}return n}}catch(e){throw e}})}_clearLocationExtensions(e,r){if(!(r<=0)&&this._messageExtensionsMap.has(e)){let s=this._messageExtensionsMap.get(e);null!=s&&s.forEach((e,t)=>{e.seq<=r&&s.delete(t)})}}_generateServerExtensions(e,t){var s=e["ID"];if(this._messageExtensionsMap.has(s)){let r=this._messageExtensionsMap.get(s);return t.map(e=>{var{key:e,value:t}=e;let s=0;return{Key:e,Value:t,Seq:s=null!=r&&r.has(e)?null==(t=r.get(e))?void 0:t.seq:s}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){var{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits("MSG_EXT"))throw new t.ChatError({functionName:e,code:s.ERROR_CODE.NO_USE,replacement1:e})}_handleMessageExtensionsNotify(e){var{SetKVInfo:e,DeleteKVInfo:t,ClearKVInfo:s,MsgOptType:r,TinyId:n,MsgLastSeq:o,ExtensionC2cMsgInfo:a,ExtensionGroupMsgInfo:i}=(null==e?void 0:e.MsgExtensionNotify)||{},{MsgClientTime:a,MsgRandom:i}=a||i||{},n=n+`-${a}-`+i;this._extensionsLatestSequenceMap.set(n,o),1===r?this._handleMessageExtensionsUpdated({messageID:n,updateMessageExtensionsInfo:e}):2===r?this._handleMessageExtensionsDeleted({messageID:n,deleteMessageExtensionsInfo:t}):3===r&&this._handleMessageExtensionsCleared({messageID:n,clearMessageExtensionsInfo:s})}_handleMessageExtensionsUpdated(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,updateMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push({key:e.Key,value:e.Value}),{key:e.Key,value:e.Value,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_UPDATED,{name:s.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:r,extensions:o}})}_handleMessageExtensionsDeleted(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,deleteMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push(e.Key),{key:e.Key,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_DELETED,{name:s.MESSAGE_EXTENSIONS_DELETED,data:{messageID:r,keyList:o}})}_handleMessageExtensionsCleared(e){let{notificationCenter:t,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:s},utils:{isEmpty:r}}=this._core,{messageID:n,clearMessageExtensionsInfo:o=[]}=e,a=[];o.forEach(e=>{let s=e["ClearMsgSeq"];this._messageExtensionsMap.has(n)&&(this._messageExtensionsMap.get(n)||[]).forEach((e,t)=>{e.seq<=s&&!r(e.value)&&a.push(t)}),this._clearLocationExtensions(n,s)}),t.emitOuterEvent(s,{name:s,data:{messageID:n,keyList:a}})}};let _={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{OuterConstant:t}=M.core["constants"];return e.status!==t.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},S={setMessageExtensions:[_,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[_],deleteMessageExtensions:[_]},R=Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>"GROUP"===e||"conversationType should be GROUP."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var t="string"==typeof(null==e?void 0:e.text)&&("string"!=typeof e.text||0!==(null==(t=null==e?void 0:e.text)?void 0:t.length))||"payload.text is invalid.";return!0!==t?t:!(null!=e&&e.atUserList&&!Array.isArray(e.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>!(!e.startsWith("C2C")&&!e.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{isString:t,isNumber:s}=M.core["utils"];return t(null==e?void 0:e.description)?s(null==e?void 0:e.longitude)?!!s(null==e?void 0:e.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"!=typeof e?"maxUserCountPerReaction is invalid.":!(e<0||10<e)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>"success"===e.status||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),S),{pinGroupMessage:{groupID:{required:!0,rules:["string"],allowEmpty:!1},message:{required:!0,rules:["object"],allowEmpty:!1},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},getPinnedGroupMessageList:[{key:"groupID",required:!0,rules:["string"],allowEmpty:!1}]}),D=Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0}),{pinGroupMessage:!0,getPinnedGroupMessageList:!0});class A{constructor(e){this._core=e}deleteMessage(s){return h(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={From_Account:this._core.common.getCurrentUserID(),To_Account:e,MsgKeyList:t};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:e})})}revokeMessage(o){return h(this,void 0,void 0,function*(){var{to:e,from:t,sequence:s,time:r,random:n}=o;return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:{MsgInfo:{From_Account:t,To_Account:e,MsgSeq:s,MsgRandom:n,MsgTimeStamp:r}}})})}}class L{constructor(e){this._core=e}deleteMessage(s){return h(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={GroupId:e,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:t};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:e})})}revokeMessage(s){return h(this,void 0,void 0,function*(){var{to:e,sequence:t}=s;return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:{GroupId:e,MsgSeqList:[{MsgSeq:t}]}})})}}class O{constructor(e){this._core=e}generateRevokeMessage(e){var{conversationID:e,sequence:t,random:s,tinyID:r,clientTime:n,revokeReason:o,revoker:a}=e;let i={};var c=this._core.message["messageDataHandler"];return(i=c.revokeMessage({conversationID:e,sequence:t,random:s,revoker:a}))||(i={conversationID:e,sequence:t},r&&n&&s&&(i.ID=r+`-${n}-`+s)),i.revoker=a,i.revokeReason=o,i.revokerInfo={userID:a,nick:"",avatar:""},i}updateRevokerInfo(t){return h(this,void 0,void 0,function*(){var e=t.map(e=>e.revoker);try{let s=yield this._fetchUserInfos(e);s&&t.forEach(e=>{var t=e["revoker"];s[t]&&(e.revokerInfo.nick=s[t].nick||"",e.revokerInfo.avatar=s[t].avatar||"",e.revokerInfo.userID=t)})}catch(e){console.debug(e)}})}_fetchUserInfos(t){return h(this,void 0,void 0,function*(){var e=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:t});return null!=e&&e.data?null==(e=e.data)?void 0:e.reduce((e,{userID:t,nick:s,avatar:r})=>(e[t]={nick:s||"",avatar:r||""},e),{}):null})}}var P=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new L(e),this._c2cMessageAction=new A(e),this._messageHelper=new O(e);e=e.helper;e.registerApi({apiName:"deleteMessage",context:this}),e.registerApi({apiName:"revokeMessage",context:this}),e.registerApi({apiName:"resendMessage",context:this}),e.registerApi({apiName:"findMessage",context:this})}deleteMessage(t){return h(this,void 0,void 0,function*(){let c=[],u=[],{conversationID:l,conversationType:d}=t[0],e=l.replace(d,"");if("@TIM#SYSTEM"===d)throw new this._core.helper.ChatError({code:2116});if(t.forEach(e=>{var{conversationID:t,conversationType:s,status:r,_onlineOnlyFlag:n,sequence:o,random:a,time:i}=e||{};if("success"===r&&t===l&&s===d){if(!n){let e="C2C"===s?o+`_${a}_`+i:String(o);c.push(e)}u.push(e)}}),0===c.length)return this._handleDeleteMessageSuccess(u),{code:0,data:{messageList:u}};30<c.length&&(c=c.slice(0,30),u=u.slice(0,30));try{return"C2C"===d?yield this._c2cMessageAction.deleteMessage({to:e,messageIdentifiers:c}):yield this._groupMessageAction.deleteMessage({to:e,messageIdentifiers:c}),this._handleDeleteMessageSuccess(u),{code:0,data:{messageList:u}}}catch(c){let e=c["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessage",code:e})}})}revokeMessage(u){return h(this,void 0,void 0,function*(){var s;this._core.ssoLog.createSSOLogData({method:"revokeMessage"});let{conversationType:e,isRevoked:t,ID:r,type:n,from:o,to:a}=u;var i,c=`type:${n} from:${o} to:${a} ID:`+r;if("@TIM#SYSTEM"===e)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(t)throw new this._core.helper.ChatError({message:"message has been revoked",moreMessage:c});try{if(i="C2C"===e?yield this._c2cMessageAction.revokeMessage(u):yield this._groupMessageAction.revokeMessage(u)){let e=i["RecallRetList"],t=(null==(s=null==e?void 0:e[0])?void 0:s.RetCode)||0;if(0!==t)throw new this._core.helper.ChatError({code:t,moreMessage:c});return yield this._handleRevokeMessageSuccess(u),{code:0,data:{message:u},successLog:{message:c}}}}catch(s){let e=s["errorCode"];throw new this._core.helper.ChatError({functionName:"revokeMessage",code:e,moreMessage:c})}})}resendMessage(t,s){return h(this,void 0,void 0,function*(){var e;return t.isResend=!0,t.status="unSend",null==(e=null==(e=this._core)?void 0:e.apiMap)?void 0:e.sendMessage(t,s)})}findMessage(e){return this._core.message.messageDataHandler.findMessage(e)}_handleDeleteMessageSuccess(n){if(0!==n.length){let{message:{messageDataHandler:s},common:{isTopic:e},notificationCenter:t,InnerEvent:r}=this._core;n.forEach(t=>{t.isDeleted=!0;var e=s.getLocalMessageList(t.conversationID);null!=e&&e.forEach(e=>{e.ID===t.ID&&(e.isDeleted=!0)})});var{conversationID:n=""}=n[0];e(n)?t.emitInnerEvent(r.TOPIC_MESSAGE_DELETED,n):t.emitInnerEvent(r.MESSAGE_DELETED,n)}}_handleRevokeMessageSuccess(n){return h(this,void 0,void 0,function*(){var e=null==(e=this._core.store.get("login"))?void 0:e.userId,{conversationID:t,sequence:s,random:r}=n;this._core.message.messageDataHandler.revokeMessage({conversationID:t,sequence:s,random:r,revoker:e}),yield this._messageHelper.updateRevokerInfo([n])})}};class T{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Index:e,Data:t}=e;return new T({index:e,data:t})}constructor(e){this.type=r.MSG_FACE;var{index:e,data:t}=e;this.content={index:e,data:t}}validateBeforeSend(){var e;return"number"==typeof(null==(e=this.content)?void 0:e.index)&&"string"==typeof(null==(e=this.content)?void 0:e.data)?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{index:e,data:t}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Index:e,Data:t}}}}class x{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Desc:e,Longitude:t,Latitude:s}=e;return new x({description:e,longitude:t,latitude:s})}constructor(e){this.type=r.MSG_LOCATION;var{description:e,longitude:t,latitude:s}=e;this.content={description:e,longitude:t,latitude:s}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{description:e,longitude:t,latitude:s}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Desc:e,Longitude:t,Latitude:s}}}}var G=new class{init(e){(this._core=e).message.messageFactory.registerElementClass(r.MSG_FACE,T),e.message.messageFactory.registerElementClass(r.MSG_LOCATION,x),e.helper.registerApi({apiName:"createFaceMessage",context:this}),e.helper.registerApi({apiName:"createTextAtMessage",context:this}),e.helper.registerApi({apiName:"createForwardMessage",context:this}),e.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(e){var t,s;return e?({index:t,data:s}=(null==e?void 0:e.payload)||{},t=new T({index:t,data:s}),s=this._core.common.getCurrentUserID(),(e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),e):null}createTextAtMessage(e){let r=((null==e?void 0:e.payload)||{})["atUserList"],n=this._core.apiMap.createTextMessage(e),o=this._core["OuterConstant"];if(!n)return null;if(Array.isArray(r)){let t=[],s=[];r.forEach(e=>{e!==o.MSG_AT_ALL?(t.push({GroupAtAllFlag:0,GroupAt_Account:e}),s.push(e)):(t.push({GroupAtAllFlag:1}),s.push(o.MSG_AT_ALL))}),n._groupAtInfoList=t,n.atUserList=s}return n}createForwardMessage(e){var{helper:t,OuterConstant:s}=this._core,{to:e,conversationType:r,priority:n,payload:o,needReadReceipt:a,receiverList:i,cloudCustomData:c="",isSupportExtension:u=!1}=e;if(!Array.isArray(o._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(o.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});s=this._core.common.getCurrentUserID(),t=this._core.message.messageFactory.createMessage({to:e,from:s,conversationType:r,isPlaceMessage:0,priority:n,payload:o,needReadReceipt:a,isSupportExtension:u,cloudCustomData:c,receiverList:i});return t.setRelayFlag(!0),t.setElement(o._elements[0]),t}createLocationMessage(e){var t,s,r;return e?({description:t,longitude:s,latitude:r}=(null==e?void 0:e.payload)||{},t=new x({description:t,longitude:s,latitude:r}),s=this._core.common.getCurrentUserID(),(r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),r):null}};class k{init(e){this._messageHelper=new O(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s},helper:{registerWorkflowStep:r},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:o}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this),r(n.SYNC_SERVER_INFO_AFTER_RE_ONLINE,o.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(e){e=e.C2cNotifyMsgArray;null!=e&&e.forEach(e=>{Object.keys(e).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(e)})}_handleC2CRevokeMessage(t){return h(this,void 0,void 0,function*(){try{var{C2cWithdrawInfoArray:e}=t["WithdrawC2cMsgNotify"];yield this._parseAndEmitC2CRevokedMessages(e)}catch(e){console.debug(e)}})}_parseAndEmitC2CRevokedMessages(s){return h(this,void 0,void 0,function*(){let i=[],{notificationCenter:e,OuterEvent:t,common:{getCurrentUserID:c}}=this._core;s.forEach(e=>{var{MsgRand:t,MsgSeq:s,To_Account:r,From_Account:n,RevokerInfo:{Revoker_Account:o,Revoke_Reason:a}}=e,r=c()===n?"C2C"+r:"C2C"+n,e=(null==(n=null==e?void 0:e.RevokerInfo)?void 0:n.Reason)||a,n=this._messageHelper.generateRevokeMessage({conversationID:r,sequence:s,random:t,revoker:o,revokeReason:e});i.push(n)}),0<i.length&&(yield this._messageHelper.updateRevokerInfo(i),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:i}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return h(this,void 0,void 0,function*(){var e=t.result["revokedMessageList"];yield this._parseAndEmitC2CRevokedMessages(e)})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this)}}class U{init(e){this._messageHelper=new O(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(e){e=e.GroupTips;null!=e&&e.forEach(e=>{var t;Array.isArray(null==(t=null==e?void 0:e.MsgBody)?void 0:t.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(e)})}_handleGroupRevokeMessage(o){return h(this,void 0,void 0,function*(){try{let{RevokerInfo:c,MsgBody:{GroupWithdrawInfoArray:e},GroupInfo:u}=o,l=[],d=[],{notificationCenter:t,OuterEvent:s,utils:{isEmpty:r},common:{isCommunity:n}}=this._core,g=!1;u&&(g=n({groupID:u.GroupId})||!r(u.TopicId)),e.forEach(e=>{var{Random:e,MsgSeq:t,GroupId:s,MsgClientTime:r,TinyId:n,TopicId:o,RevokerInfo:{Revoker_Account:a=(null==c?void 0:c.Revoker_Account)||"",Reason:i=(null==c?void 0:c.Reason)||""}}=e,o=this._messageHelper.generateRevokeMessage({conversationID:o?"GROUP"+o:"GROUP"+s,sequence:t,random:e,tinyID:n,clientTime:r,revoker:a,revokeReason:i});(g?(o.revokerInfo.nick=u.From_AccountNick,o.revokerInfo.avatar=u.From_AccountHeadurl,l):d).push(o)}),0<d.length&&(yield this._messageHelper.updateRevokerInfo(d),l.push(...d)),0!==l.length&&t.emitOuterEvent(s.MESSAGE_REVOKED,{name:s.MESSAGE_REVOKED,data:l})}catch(e){console.debug(e)}})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}}var q=new class{constructor(){this._c2cMessageReceiver=new k,this._groupMessageReceiver=new U}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class F{constructor(e){var t=(this._core=e)["constants"];this._messageHelper=new O(e),e.helper.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.GROUP_REVOKED_NOTICE_RECOVER,this._recoverGroupRevokeNotice,this)}getRoamingMessagesByAnchor(e){return this._core.message.messageHistory.getGroupRoamingMessagesByAnchor(e)}_recoverGroupRevokeNotice(e){let{recoverRevokeNoticeGroupIDList:t=[]}=e.result,r=this._filterValidGroupIDList(t);0!==r.length&&(e=Math.min(Math.ceil(r.length/10),5),Promise.all(Array.from({length:e},(e,t)=>{var t=10*t,s=Math.min(10+t,r.length);return this._fetchGroupRevokeNotice(r.slice(t,s))})).catch(e=>console.error(e)))}_fetchGroupRevokeNotice(s){return h(this,void 0,void 0,function*(){var e;try{var t=yield function(o){return h(this,void 0,void 0,function*(){let{appStore:e,constants:{OuterConstant:s},common:r}=M.core,n=e.groupStore.getGroupMap(),t={NotifyReqList:o.map(e=>{var t=n.get(e);return{NotifyType:1,Limit:20,Type:r.isCommunity({type:t.type,groupID:e})?s.GRP_COMMUNITY:void 0,GroupId:e,BeginTime:(null==t?void 0:t._lastRevokedTime)||0,EndTime:1e3*M.core.common.timeManager.getServerTimeMs()}})||[]};return r.buildAndSendPacket({servcmd:"group_open_http_svc.batch_get_group_notify",data:t})})}(s);if(t){let s=[];null!=(e=null==t?void 0:t.NotifyRspList)&&e.forEach(e=>{var{GroupId:e,NotifyMsgList:t}=e,e=this._parseServerRevokeMessageList({groupID:e,serverRevokeMessageList:t});s.push(...e)}),0!==s.length&&(yield this._emitMessageRevokedEvent(s))}}catch(e){console.error(e)}})}_parseServerRevokeMessageList(e){let{serverRevokeMessageList:t,groupID:a}=e,i=[];return null!=t&&t.forEach(e=>{var{ClientTime:e,MsgSeq:t,Random:s,RevokerInfo:{Revoker_Account:r="",Reason:n=""}}=e,o="GROUP"+a,o=this._messageHelper.generateRevokeMessage({conversationID:o,sequence:t,random:s,clientTime:e,revoker:r,revokeReason:n});i.push(o)}),i}_filterValidGroupIDList(e){let{OuterConstant:t}=this._core["constants"],s=this._core.appStore.groupStore.getGroupMap();return(null==e?void 0:e.filter(e=>{return!(!s.has(e)||(null==(e=s.get(e))?void 0:e.type)===t.GRP_AVCHATROOM||null!=e&&e.isSupportTopic)}))||[]}_emitMessageRevokedEvent(s){return h(this,void 0,void 0,function*(){var{notificationCenter:e,OuterEvent:t}=this._core;yield this._messageHelper.updateRevokerInfo(s),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:s})})}}class V{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new O(e)}getRoamingMessagesByAnchor(g){return h(this,void 0,void 0,function*(){var n;try{var{conversationID:o,count:e,messageID:r,time:a,direction:i}=g;let t=a,s="";if(!a){let e=r?this._core.message.messageDataHandler.findMessage(r):null;if(t=(null==e?void 0:e.time)||0,r&&this._historyMessageListFetchAnchors.has(o)){let e=this._historyMessageListFetchAnchors.get(o);t=e.lastMessageTime,s=e.messageKey}}var c=o.replace(f,""),u=yield function(o){return h(this,void 0,void 0,function*(){var{peerAccount:e,count:t,lastMessageTime:s,messageKey:r,direction:n}=o,e={Peer_Account:e,MaxCnt:t,WithRecalledMsg:1,LastMsgTime:s,MsgKey:r,GetDirection:n};return M.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:e})})}({count:e,lastMessageTime:t,messageKey:s,peerAccount:c,direction:i});if(u){let{MsgList:r=[],Complete:e,MsgKey:t,LastMsgTime:s}=u;this._historyMessageListFetchAnchors.set(o,{messageKey:t,lastMessageTime:s});var l=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);l.push(t)}var d=this._core.message.messageHelper.filterValidMessages(l);return{messageList:d,nextReqMessageIDFromServer:null==(n=d[0])?void 0:n.ID,lastMessageTime:s,hasNoMoreHistoryMessage:1===e}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}clearHistoryMessageListFetchAnchors(e){this._historyMessageListFetchAnchors.delete(e)}reset(){this._historyMessageListFetchAnchors.clear()}_parseMessage(e){f;var e=this._core.message.messageHelper.parseServerPushMessage(e),t=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:"C2C",flow:"in"}));return t.setElement(e.elements),t}}var b=new class{constructor(){this._clearedConversations=new Set,this._fetchedCompleteConversations=new Set}init(e){this._core=e,this._groupMessageHistory=new F(e),this._c2cMessageHistory=new V(e),this._messageHelper=new O(e),e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(e){return h(this,void 0,void 0,function*(){try{var{conversationID:o,nextReqMessageID:a}=e;if("@TIM#SYSTEM"===o)return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};var i=this._getAvailableLocalMessagesCount({conversationID:o,nextReqMessageID:a});if(this._needFetchHistoryMessageList({conversationID:o,availableLocalMessagesCount:i,targetCount:20})){let n=null;if(o.startsWith(y)?n=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:o,sequence:Number(a),count:20,direction:E.FORWARD}):o.startsWith(f)&&(n=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:o,messageID:a,count:20,direction:E.FORWARD})),n){let{nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:t,messageList:s}=n,r=this._core.message.messageDataHandler.prependLocalMessageList({messageList:s,conversationID:o});var c=o,{appStore:u,message:l,OuterConstant:d}=M.core,u=u.conversationStore.getConversation(c),g=l.messageDataHandler.getLocalMessageList(c);if(u&&0!==g.length&&c!==d.CONV_SYSTEM){var m=[];for(let e=0;e<g.length;e++)"in"!==g[e].flow?"out"!==g[e].flow||g[e].isRead||g[e].setIsRead(!0):m.push(g[e]);let t=0;if(u.type===d.CONV_C2C){let e=m.slice(-u.unreadCount).filter(e=>e.isRevoked).length;t=m.length-u.unreadCount-e}else t=m.length-u.unreadCount;for(let e=0;e<t&&!m[e].isRead;e++)m[e].setIsRead(!0)}yield C(o),o.startsWith(f)&&(yield I({messageList:s,conversationID:o}));var h=this._core.message.messageDataHandler.getLocalMessageList(o).slice(0,r.length+i),p=h.filter(e=>e.isRevoked),v=(yield this._messageHelper.updateRevokerInfo(p),t&&this._fetchedCompleteConversations.add(o),{nextReqMessageID:t?"":String(e),messageList:h,isCompleted:t}),_=h.map(e=>e.sequence);return{code:0,data:v,successLog:{message:`conversationID: ${o} nextReqMessageID: ${a} availableLocalMessagesCount: ${i} sequenceList: `+JSON.stringify(_)}}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return{code:0,data:yield this._getMessageListFromMemory({conversationID:o,nextReqMessageID:a,count:20}),successLog:{message:`conversationID: ${o} nextReqMessageID: ${a} availableLocalMessagesCount: ${i}}`}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}getMessageListHopping(r){return h(this,void 0,void 0,function*(){var o,a;let{conversationID:e,sequence:i,time:t,direction:c=E.FORWARD}=r,u=this._core.helper["isEmpty"];if(![E.BACKWARD,E.FORWARD].includes(c))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:s=20}=r,l=(s=20<s?20:s,null);if(e.startsWith(y)){if(l=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:i,count:s,direction:c})){let{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:s,messageList:r,invisibleSequenceList:n}=l;if(this._core.message.messageDataHandler.storeSparseMessageList(r),c===E.FORWARD){let e=s&&t<1;return{code:0,data:{messageList:r,isCompleted:e,nextMessageSeq:e?"":t}}}if(c!==E.BACKWARD)return{code:0,data:l};{if(u(r)&&u(n))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};let e=(null==(o=null==r?void 0:r[r.length-1])?void 0:o.sequence)||0,t=(null==(a=null==n?void 0:n[n.length-1])?void 0:a.sequence)||0;return{code:0,data:{messageList:r.filter(e=>e.sequence>=i),isCompleted:!s,nextMessageSeq:s?Math.max(e,t)+1:""}}}}}else if(e.startsWith(f)&&(l=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:e,count:s+1,time:t,direction:c}))){let{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=l;return s||(c===E.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}})}clearHistoryMessage(d){return h(this,void 0,void 0,function*(){let t,{appStore:e,common:{ChatError:s,getCurrentUserID:r},OuterConstant:{CONV_C2C:n,CONV_GROUP:o},message:a,apiMap:i}=this._core,c=e.conversationStore.getConversation(d);if(!c)throw new s({code:2500});var u={fromAccount:r()},l=c["type"];l===n?(u.type=1,u.toAccount=d.replace(n,"")):l===o&&(u.type=2,u.toGroupID=d.replace(o,""));try{yield null==(t=null==i?void 0:i.setMessageRead)?void 0:t.call(i,{conversationID:d});let e=yield function(n){return h(this,void 0,void 0,function*(){var{fromAccount:e,type:t,toAccount:s,toGroupID:r}=n,e={From_Account:e,Type:t,To_Account:s,ToGroupid:r};return M.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:e})})}(u);return e&&(a.messageDataHandler.deleteConversationMessageList(d),this._clearedConversations.add(d),this._fetchedCompleteConversations.delete(d),this._c2cMessageHistory.clearHistoryMessageListFetchAnchors(d),this._updateConversationLastMessage(d)),{code:0,data:{conversationID:d},successLog:{message:"convID:"+d}}}catch(e){let t=e["errorCode"];throw new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:t,moreMessage:"convID:"+d})}})}_updateConversationLastMessage(e){var t=this._core["appStore"];t.conversationStore.updateConversation(e,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e),r=s["length"];if(!t)return r;let n=-1;return null!=e&&e.startsWith(f)?n=s.findIndex(e=>e.ID===t):null!=e&&e.startsWith(y)&&(n=s.findIndex(e=>t.includes("-")?e.ID===t:String(e.sequence)===t)),-1===n?0:n}_needFetchHistoryMessageList({conversationID:e,availableLocalMessagesCount:t,targetCount:s}){return!!this._clearedConversations.has(e)||t<s&&!this._fetchedCompleteConversations.has(e)}_getMessageListFromMemory(e){return h(this,arguments,void 0,function*({conversationID:t,nextReqMessageID:s,count:e}){var r=this._core.message.messageDataHandler.getLocalMessageList(t),n=r.length;let o=n,a={isCompleted:!1,nextReqMessageID:"",messageList:[]},i=0,c=n;return s?(c=r.findIndex(e=>t.startsWith(f)?e.ID===s:String(e.sequence)===s),i=c>e?c-e:0,o=c):i=e<n?n-e:0,a.nextReqMessageID=0===i?"":this._generateNextReqMessageID({conversationID:t,targetIndex:i}),a.messageList=r.slice(i,c),a.isCompleted=o<=e,t.startsWith(f)&&(yield C(t),yield I({messageList:a.messageList,conversationID:t})),a})}_generateNextReqMessageID({conversationID:e,targetIndex:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e);return e.startsWith("C2C")?s[t].ID:String(s[t].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}reset(){this._clearedConversations.clear(),this._fetchedCompleteConversations.clear(),this._c2cMessageHistory.reset()}dispose(){this.reset()}},H=new class{constructor(){this._core=null}init(e){e=(this._core=e).helper;e.registerApi({apiName:"translateText",context:this})}translateText(n){return h(this,void 0,void 0,function*(){try{var{sourceLanguage:e,sourceTextList:t,targetLanguage:s}=n,r=yield function(a,i){return h(this,void 0,void 0,function*(){var e,{sourceTextList:t,sourceLanguage:s,targetLanguage:r}=a,{store:n,common:o}=i,s={SourceText:t,Source:s,Target:r,FromAccount:null==(e=n.get("login"))?void 0:e.tinyID,SDKAppID:null==(t=n.get("instance"))?void 0:t.sdkAppId},r=yield o.buildAndSendPacket({servcmd:"im_open_translate.ws_batch_trans_text",data:s});if(r){let{CmdErrorCode:e,TargetText:t}=r;return{cmdErrorCode:e,translatedTextList:t}}})}({sourceLanguage:e,sourceTextList:t,targetLanguage:s},this._core);if(r){let{cmdErrorCode:{ErrorCode:e,ErrorInfo:t},translatedTextList:s}=r;if(0===e)return{code:0,data:{translatedTextList:s}};throw{errorCode:e,errorInfo:t,message:t}}}catch(e){let{errorCode:t,errorInfo:s}=e||{};throw new this._core.helper.ChatError({functionName:"translateText",code:t,message:s})}})}},K=new class{init(e){(this._core=e).helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(o){return h(this,void 0,void 0,function*(){var s,{message:e,language:t=a.ZH_PY}=o;let r=(e.payload||{})["url"];var n=null==(s=this._core.store.get("login"))?void 0:s.userID,e=(e.from===n&&"out"===e.flow&&(r=e.payload.remoteAudioUrl),this._validateVoiceFormat(r),(null==(n=u.exec(r))?void 0:n[1])||"mp3"),n=c[t]||i;try{let s=yield function(e){var{store:t,common:s}=M.core,{url:e,format:r,serverLanguageType:n}=e,n={BytesUrl:e,BytesEngServiceType:n,BytesVoiceFormat:r,Uint32Sdkappid:null==(e=t.get("instance"))?void 0:e.sdkAppId,Uint64SourceType:0};return s.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:n})}({url:r,format:e,serverLanguageType:n});if(s){let{CmdErrorCode:e,BytesResult:t}=s;if(0===e.ErrorCode)return{code:0,data:{result:t}};throw{code:e.ErrorCode,message:e.ErrorInfo}}}catch(s){let{code:e,message:t}=s||{};throw new this._core.common.ChatError({functionName:"convertVoiceToText",code:e,message:t})}})}_validateVoiceFormat(e){if(!u.test(e))throw new this._core.common.ChatError({code:2119})}};class w{constructor(e){var{constants:t,common:s,utils:r}=M.core,{CONV_C2C:t,CONV_GROUP:n}=t.OuterConstant,{ID:e,tinyID:o,from:a,to:i,clientTime:s=s.timeManager.getServerTimeSeconds()||0,random:c,sequence:u,cloudCustomData:l="",nick:d="",avatar:g="",clientSequence:m,conversationType:h,groupID:p,_elements:v,time:_}=e,o=(this.ID=e||o+`-${s}-`+c,this.messageRandom=c,this.from=a,this.messageSender=a,this.time=_,this.messageSequence=u,this.clientSequence=m||u,this.clientTime=s,this.cloudCustomData=l,this.messageReceiver=i,this.avatar=g,this.nick=d,r.deepCopyWithMethods(v));o.forEach(e=>{e.payload=e.content,delete e.content}),this.messageBody=o,e?h.startsWith(t)?this.receiverUserID=i:h.startsWith(n)&&(this.receiverGroupID=i):p?(this.receiverGroupID=p,this.messageReceiver=p):i&&(this.receiverUserID=i,this.messageReceiver=i)}transformElementsToServerFormat(){return this.messageBody?Array.isArray(this.messageBody)?this.messageBody.map(e=>e.transformToServerFormat({isMergerMessage:!0})):this.messageBody.transformToServerFormat({isMergerMessage:!0}):null}}class 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=>m(e));return new N({messageList:e,title:r,abstractList:s,compatibleText:t,pbDownloadKey:n,downloadKey:o})}constructor(e){this.type=M.core.constants.OuterConstant.MSG_MERGER;let{messageList:t,title:s,abstractList:r,compatibleText:n,pbDownloadKey:o="",downloadKey:a="",version:i=0,layersOverLimit:c=!1}=e,u=[];t.forEach(e=>{e&&(e=new w(e),u.push(e))}),this.content={messageList:u,title:s,abstractList:r,compatibleText:n,version:i,downloadKey:a,pbDownloadKey:o,layersOverLimit:c}}validateBeforeSend(){var e=M.core.helper["isEmpty"];return e(this.content.messageList)?{isValid:!1,error:{message:"content is invalid"}}:{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{abstractList:e,compatibleText:t,downloadKey:s,layersOverLimit:r,pbDownloadKey:n,title:o,version:a,messageList:i}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{AbstractList:e,CompatibleText:t,JsonMsgKey:s,LayersOverLimit:r,PbMsgKey:n,Title:o,Version:a,MsgList:g(i)}}}}var B=new class{init(e){let{message:t,helper:s,constants:{OuterConstant:r}}=this._core=e;t.messageFactory.registerElementClass(r.MSG_MERGER,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";M.core.helper.IN_BROWSER&&document&&(e=document.charset.toLowerCase());let s,r=0,n;if(n=t.length,"utf-8"===e||"utf8"===e)for(let e=0;e<n;e++)(s=t.codePointAt(e))<=127?r+=1:s<=2047?r+=2:s<=65535?r+=3:(r+=4,e++);else if("utf-16"===e||"utf16"===e)for(let e=0;e<n;e++)(s=t.codePointAt(e))<=65535?r+=2:(r+=4,e++);else r=t.replace(/[^\x00-\xff]/g,"aa").length;return r}(JSON.stringify(i));let r=i,n=null;if(11264<o){r=this._core.utils.deepCopyWithMethods(i);try{let{JsonMsgKey:e,PbMsgKey:t}=yield function(t){return h(this,void 0,void 0,function*(){var e=t["payload"]["messageList"],e={MsgList:g(e)};return M.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:e})})}(r),s=r["payload"];n=new 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){let t=e["errorCode"];throw new this._core.helper.ChatError({code:t})}})}downloadMergerMessage(a){return h(this,void 0,void 0,function*(){let r=this._core["ssoLog"],e=a.payload,{downloadKey:n,pbDownload:t,type:s}=e,o=function(e,t){var s={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(s[n[r]]=e[n[r]]);return s}(e,["downloadKey","pbDownload","type","messageList"]);try{let e=yield function(e){return h(this,void 0,void 0,function*(){return M.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:e}})})}(n),t=(e||{})["MsgList"],s=null==t?void 0:t.map(e=>{e=m(e);return new w(e)});return"function"==typeof a.isOnlineMessage?a.setElement({type:a.type,content:Object.assign({messageList:s},o)}):(a.payload.messageList=s,a.payload.downloadKey="",a.payload.pbDownloadKey=""),r.info("downloadMergerMessage"," success downloadKey:"+n),a}catch(e){let t=e["errorCode"];throw new this._core.helper.ChatError({functionName:"downloadMergerMessage",code:t,moreMessage:n})}})}},j=new class{init(e){this._core=e,this._core.helper.registerExperimentalAPI("sendComboMessage",this)}sendComboMessage(i){return h(this,void 0,void 0,function*(){let{appStore:t,message:e,common:{getCurrentUserID:s},utils:{isArray:r}}=this._core,{GroupId:n,To_Account:o}=i,a=(i.From_Account=i.From_Account||s(),null);if(n){a=this._generateGroupMessage(Object.assign(Object.assign({},i),{ToGroupId:n}));let e=t.userStore.getUserProfile(s());a.level=(null==e?void 0:e.level)||0,r(o)&&0<o.length&&(a._receiverList=o)}else o&&(a=this._generateC2CMessage(i));return e.messageSender.sendMessage(a,i)})}_generateC2CMessage(e){var{message:t,OuterConstant:{CONV_C2C:s}}=this._core,e=t.messageHelper.parseServerPushMessage(e),t=t.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:s,flow:n.OUT})),s=e["elements"];return t.setElement(s),t}_generateGroupMessage(e){var{message:t,OuterConstant:{CONV_GROUP:s}}=this._core,e=t.messageHelper.parseServerGroupMessage(e),t=t.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:s,flow:n.OUT})),s=e["elements"];return t.setElement(s),t}},W=new class{init(e){var{helper:e,notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{GROUP_MESSAGE_PINNED:r}}=this._core=e;t.subscribeInnerEvent(s,r,this._handleGroupMessagePinned,this),e.registerApi({apiName:"pinGroupMessage",context:this}),e.registerApi({apiName:"getPinnedGroupMessageList",context:this})}pinGroupMessage(n){return h(this,void 0,void 0,function*(){var{common:{},OuterConstant:{},helper:{ChatError:r}}=this._core,{groupID:e,message:t,isPinned:s}=n,t=t["sequence"];try{return yield function(a){return h(this,void 0,void 0,function*(){var{buildAndSendPacket:e,getCurrentUserID:t}=M.core["common"],{groupID:s,sequence:r,isPinned:n}=a,t=t(),o=n?"group_open_http_svc.pin_message":"group_open_http_svc.unpin_message",s={GroupId:s,MsgSeq:r};return n?s.Pinner_Account=t:s.UnPinner_Account=t,e({servcmd:o,data:s})})}({groupID:e,sequence:t,isPinned:s}),{code:0,data:{}}}catch(e){let{errorCode:t,errorInfo:s}=e||{};throw new r({code:t,message:s})}})}getPinnedGroupMessageList(r){return h(this,void 0,void 0,function*(){let t=[];try{var s=yield function(s){return h(this,void 0,void 0,function*(){var e=s["groupID"],{buildAndSendPacket:t}=M.core["common"];return t({servcmd:"group_open_http_svc.get_pinned_messages",data:{GroupId:e}})})}({groupID:r});if(s){let{PinnedMsgList:e=[]}=s;t=yield this._updatePinnedMessageInfo({serverPinnedMessageList:e,groupID:r})}return{code:0,data:{messageList:t}}}catch(e){throw e}})}_handleGroupMessagePinned(e){let{message:{messageHelper:u,messageFactory:l},notificationCenter:d,OuterEvent:g,OuterConstant:m}=this._core;e.GroupTips.forEach(e=>{var{ToGroupId:e,MsgBody:{PinnedMsg:t,OpType:s,MsgOperatorMemberExtraInfo:r,SdkGroupMessageId:o}}=e,{UserId:r,NickName:n="",ImageUrl:a=""}=r;let i=null,c=!1;if(16===s){c=!0;let e=u.parseServerGroupMessage(t);(i=l.createMessage(Object.assign(Object.assign({},e),{conversationType:m.CONV_GROUP,flow:"in"}))).setElement(e.elements),i.pinnerInfo={userID:r,nick:n,avatar:a}}else if(17===s){let{ClientTime:e,Random:t,SenderTinyId:s,ServerTime:r,MsgSeq:n}=o;i={ID:`${s}-${e}-`+t,sequence:n,random:t,time:r,clientTime:e}}i&&d.emitOuterEvent(g.PINNED_GROUP_MESSAGE_UPDATED,{name:g.PINNED_GROUP_MESSAGE_UPDATED,data:{groupID:e,message:i,isPinned:c,operatorInfo:{userID:r,nick:n,avatar:a}}})})}_findMessageBySequence(e,t){var{messageDataHandler:s}=this._core["message"];return[...s.getLocalMessageList(e),...s.getSparseMessageList(e)].find(e=>e.sequence===t)}_updatePinnedMessageInfo(e){return h(this,arguments,void 0,function*({serverPinnedMessageList:o,groupID:e}){let{OuterConstant:{CONV_GROUP:t},utils:{isEmpty:s}}=this._core,a=[],i=[],c=[],u=new Map,l=""+t+e;for(let n=0;n<o.length;n++){let e=o[n],{Pinner_Account:t,MsgSeq:s}=e,r=this._findMessageBySequence(l,s);i.push(t),u.set(s,t),r?a.push(r):c.push(s)}let r=yield this._fetchPinnedMessageInfo({conversationID:l,messageSequenceList:c,pinnerIDList:i});if(r){let{pinnerInfoMap:s,messageList:e}=r;return a.push(...e),a.forEach(e=>{var t=e["sequence"],t=u.get(t),t=s[t]||{userID:t,nick:"",avatar:""};e.pinnerInfo=t}),a.sort((e,t)=>e.sequence-t.sequence),a}return[]})}_fetchPinnedMessageInfo(o){return h(this,void 0,void 0,function*(){var{message:{},user:{userProfile:e},utils:{isArray:t}}=this._core,{conversationID:s,messageSequenceList:n,pinnerIDList:r}=o,s=yield Promise.all([this._fetchMessageBySequence({conversationID:s,messageSequenceList:n}),null==e?void 0:e.getUserProfile({userIDList:r})]);if(t(s)){let r={};return((null==(n=s[1])?void 0:n.data)||[]).forEach(e=>{var{userID:e,nick:t="",avatar:s=""}=e;r[e]={userID:e,nick:t,avatar:s}}),{messageList:(null==(e=s[0])?void 0:e.messageList)||[],pinnerInfoMap:r}}})}_fetchMessageBySequence(n){return h(this,void 0,void 0,function*(){var{utils:{isEmpty:e},message:{messageHistory:t}}=this._core,{conversationID:s,messageSequenceList:r}=n;return e(r)?[]:t.getGroupRoamingMessagesByAnchor({conversationID:s,messageSequenceList:r,getType:3})})}};return new class{constructor(){this.name="MessageEnhancer"}install(e){this._core=e,M.init(e),P.init(e),G.init(e),q.init(e),b.init(e),t.init(e),H.init(e),K.init(e),s.init(e),B.init(e),o.init(e),j.init(e),W.init(e),e.helper.registerValidateConfig({auth:D,params:R}),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.LOGOUT,this._reset,this),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.DESTROY,this.dispose,this)}dispose(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this.dispose,this),q.dispose(),b.dispose(),s.dispose(),o.dispose()}_reset(){b.reset()}}});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["TencentCloudChatMessage-enhancer"]=t()}(this,function(){function h(e,a,i,c){return new(i=i||Promise)(function(s,t){function r(e){try{o(c.next(e))}catch(e){t(e)}}function n(e){try{o(c.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?s(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(r,n)}o((c=c.apply(e,a||[])).next())})}let M=new class{init(e){this.core=e}};var r,E,n,e;(e=r=r||{}).MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem",(e=E=E||{})[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD";let a={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},i="16k_zh-PY",c={[a.ZH_CN]:"16k_zh",[a.EN_US]:"16k_en",[a.YUE_HK]:"16k_yue",[a.JA_JP]:"16k_ja",[a.ZH_PY]:i},u=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,d={READ:0,UNREAD:1},f=((e=n=n||{}).IN="in",e.OUT="out","C2C"),y="GROUP";function I(o){return h(this,void 0,void 0,function*(){var e,s=M.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(f,""),t=yield function(t){return h(this,void 0,void 0,function*(){var e={To_Account:t};return M.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([e]);if(t){let e=t["ReadTime"];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 C(i){return h(this,void 0,void 0,function*(){var e;let{message:s,user:t,appStore:r,constants:{OuterConstant:n}}=M.core,o=r.conversationStore.getConversationMap();if(o.has(i)){let s=null==(e=o.get(i))?void 0:e.userProfile;if(s&&i.startsWith(n.CONV_C2C)){let{avatar:e,nick:t}=s;M.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:i,latestAvatar:e,latestNick:t,isSentByMe:!1})}}var a=((yield t.userProfile.getMyProfile())||{})["data"];if(a){let{avatar:e,nick:t}=a;s.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:i,latestAvatar:e,latestNick:t,isSentByMe:!0})}})}function l(e){let t,s=M.core["message"],{conversationID:r,messageID:n}=e;return t=(t=s.messageDataHandler.getLocalMessageList(r).find(e=>e.ID===n))||s.messageDataHandler.getSparseMessageList(r).find(e=>e.ID===n)}function g(e){return e.map(e=>{var{from:t,to:s,cloudCustomData:r,avatar:n,nick:o,ID:a,clientSequence:i,clientTime:c,messageRandom:u,messageSequence:l,time:d}=e;return{ClientSeq:i,CloudCustomData:r,From_Account:t,From_AccountHeadurl:n,From_AccountNick:o,Id:a,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:u,Random:u,MsgSeq:l,MsgTimeStamp:d,ReceiverId:s,SenderId:t,To_Account:s}})}function m(e){var{From_Account:t,From_AccountHeadurl:s,From_AccountNick:r,GroupId:n,MsgClientTime:o,ClientSeq:a,To_Account:i,MsgTimeStamp:c,TinyId:u,MsgRandom:l,MsgSeq:d}=e;return{from:t,avatar:s,nick:r,clientTime:o,time:c,tinyID:u,random:l,sequence:d,to:i,groupID:n,clientSequence:a,_elements:null==(t=e.MsgBody)?void 0:t.map(e=>{var t=e["MsgType"];return M.core.message.messageFactory.getElementClass(t).parseServerPushElement(e)})}}var t=new class{constructor(){this._reactionsMap=new Map}init(e){var{helper:e,notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{MESSAGE_REACTION_UPDATED:r,MESSAGE_REACTION_UPDATED_SYNC:n}}=this._core=e;e.registerApi({apiName:"addMessageReaction",context:this}),e.registerApi({apiName:"removeMessageReaction",context:this}),e.registerApi({apiName:"getMessageReactions",context:this}),e.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),t.subscribeInnerEvent(s,r,this._handleReactionUpdated,this),t.subscribeInnerEvent(s,n,this._handleReactionSync,this)}addMessageReaction(d,g){return h(this,void 0,void 0,function*(){var{OuterConstant:e,helper:s}=this._core,{conversationID:r,ID:n,conversationType:t,from:o,to:a,clientSequence:i,random:c,time:u,sequence:l}=(this._validateMessageReactionBusinessCapability(),d),r=`conversationID:${r} messageID:${n} reactionID:`+g;try{return this._recordMessageReactedByMe(n,g),t===e.CONV_C2C?yield function(a,i){return h(this,void 0,void 0,function*(){var{from:e,to:t,clientSequence:s,random:r,time:n,reactionID:o}=a,t={From_Account:e,To_Account:t,MsgKey:s+`_${r}_`+n,Reaction:o,Add_Account:[null==(e=i.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:t})})}({from:o,to:a,clientSequence:i,random:c,time:u,reactionID:g},this._core):t===e.CONV_GROUP&&(yield function(r,n){return h(this,void 0,void 0,function*(){var{to:e,reactionID:t,sequence:s}=r,s={GroupId:e,MsgSeq:s,Reaction:t,Add_Account:[null==(e=n.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:s})})}({to:a,reactionID:g,sequence:l},this._core)),{code:0,successLog:{message:r}}}catch(e){this._removeMyReactionRecord(n,g);let t=(e||{})["errorCode"];throw new s.ChatError({functionName:"addMessageReaction",code:t,moreMessage:r})}})}removeMessageReaction(d,g){return h(this,void 0,void 0,function*(){var{OuterConstant:e,helper:s}=this._core,{conversationID:r,ID:t,conversationType:n,from:o,to:a,clientSequence:i,random:c,time:u,sequence:l}=(this._validateMessageReactionBusinessCapability(),d),r=`conversationID:${r} messageID:${t} reactionID:`+g;try{return this._removeMyReactionRecord(t,g),n===e.CONV_C2C?yield function(a,i){return h(this,void 0,void 0,function*(){var{from:e,to:t,clientSequence:s,random:r,time:n,reactionID:o}=a,t={From_Account:e,To_Account:t,MsgKey:s+`_${r}_`+n,Reaction:o,Del_Account:[null==(e=i.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:t})})}({from:o,to:a,clientSequence:i,random:c,time:u,reactionID:g},this._core):n===e.CONV_GROUP&&(yield function(r,n){return h(this,void 0,void 0,function*(){var{to:e,reactionID:t,sequence:s}=r,s={GroupId:e,MsgSeq:s,Reaction:t,Del_Account:[null==(e=n.store.get("login"))?void 0:e.userId]};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:s},n)})}({to:a,reactionID:g,sequence:l},this._core)),{code:0,successLog:{message:r}}}catch(e){let t=(e||{})["errorCode"];throw new s.ChatError({functionName:"removeMessageReaction",code:t,moreMessage:r})}})}getAllUserListOfMessageReaction(c){return h(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();let{message:e,reactionID:t,nextSeq:r=0}=c,s=100<c.count?100:c.count,n=e["conversationID"],{helper:o,constants:a}=this._core;try{var i;if(i=n.startsWith(a.OuterConstant.CONV_C2C)?yield function(c){return h(this,void 0,void 0,function*(){var{message:e,nextSeq:t,reactionID:s,count:r}=c,{from:e,to:n,clientSequence:o,random:a,time:i}=e,s={Reaction:s,NextSeq:t,Count:r,From_Account:e,To_Account:n,MsgKey:o+`_${a}_`+i};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:s})})}({message:e,reactionID:t,nextSeq:r,count:s}):yield function(o){return h(this,void 0,void 0,function*(){var{message:e,nextSeq:t,reactionID:s,count:r}=o,{sequence:e,to:n}=e,s={Reaction:s,NextSeq:t,GroupId:n,Count:r,MsgSeq:e};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:s})})}({message:e,reactionID:t,nextSeq:r,count:s})){let{Reaction_Account:e,NextSeq:t}=i,s=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===r,userList:s}}}}catch(e){let t=(e||{})["errorCode"];throw new o.ChatError({functionName:"getAllUserListOfMessageReaction",code:t})}})}getMessageReactions(m){return h(this,void 0,void 0,function*(){var e=this._core["constants"],{messageList:t,maxUserCountPerReaction:s=10}=(this._validateMessageReactionBusinessCapability(),m),r=t[0];let n=null,o=new Map,{from:a,to:i,conversationType:c}=r,u=this._generateMessageKeyList(t,o),{Results:l=[]}=(c===e.OuterConstant.CONV_C2C?n=yield function(n){return h(this,void 0,void 0,function*(){var{from:e,to:t,messageKeyList:s,maxUserCountPerReaction:r}=n,e={From_Account:e,To_Account:t,MsgKeyList:s,Count:r};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:e})})}({from:a,to:i,messageKeyList:u,maxUserCountPerReaction:s}):c===e.OuterConstant.CONV_GROUP&&(n=yield function(r){return h(this,void 0,void 0,function*(){var{groupId:e,messageSequenceList:t,maxUserCountPerReaction:s}=r,e={GroupId:e,MsgSeqList:t,Count:s};return M.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:e})})}({groupId:i,messageSequenceList:u,maxUserCountPerReaction:s})),n||{}),d=this._extractUserIDsFromReactionResults(l),g=yield this._getUserProfileMap(d);return{code:0,data:{resultList:l.map(e=>{var{ReactionList:e,MsgSeq:t,MsgKey:s}=e;return{messageID:this._generateMessageID({messageSequence:t,messageKey:s,messageIDMap:o}),reactionList:e.map(e=>{var{Reaction:e,Count:t,Reaction_Account:s,ReactedByMe:r}=e;return{reactionID:e,totalUserCount:t,partialUserList:this._generatePartialUserInfo({userIDList:s,userProfileMap:g}),reactedByMyself:1===r}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(e){let t=[];return null!=e&&e.forEach(e=>{var{ReactionList:e=[]}=e;e.forEach(e=>{e.Reaction_Account&&t.push(...e.Reaction_Account)})}),t}_getUserProfileList(s){return h(this,void 0,void 0,function*(){var e;try{var t=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:s});return t?t.data:[]}catch(e){return[]}})}_getUserProfileMap(e){return h(this,void 0,void 0,function*(){let r=new Map;return(yield this._getUserProfileList(e)).forEach(e=>{var{nick:e,avatar:t,userID:s}=e;r.set(s,{nick:e,avatar:t,userID:s})}),r})}_recordMessageReactedByMe(e,t){e=e+"-"+t;this._reactionsMap.has(e)?this._reactionsMap.get(e).reactedByMe=!0:this._reactionsMap.set(e,{reactedByMe:!0})}_removeMyReactionRecord(e,t){e=e+"-"+t;this._reactionsMap.has(e)&&(this._reactionsMap.get(e).reactedByMe=!1)}_recordMessageReactionInfo(e){var{messageID:e,reactionID:t,reactionInfo:s}=e,e=e+"-"+t,t=this._reactionsMap.get(e)||{};this._reactionsMap.set(e,Object.assign(Object.assign({},t),s))}_validateMessageReactionBusinessCapability(){var{helper:e,constants:t}=this._core;if(!e.checkBusinessCapabilityBits("MSG_REACTION"))throw new e.ChatError({functionName:"addMessageReaction",code:t.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(e){let t=e["MsgReactionNotifyList"],{notificationCenter:d,constants:g}=this._core;t.forEach(l=>h(this,void 0,void 0,function*(){let{C2CMsgInfo:e,GroupMsgInfo:t,MsgReactionSummary:s}=l,{TinyId:r,MsgClientTime:n,MsgRandom:o}=Object.assign(Object.assign({},e),t),a=r+`-${n}-`+o,i=this._extractUserIDsFromReactionResults([{ReactionList:s}]),c=yield this._getUserProfileMap(i),u=s.map(e=>{var{Reaction:t,Reaction_Account:s}=e,r=this._generatePartialUserInfo({userIDList:s,userProfileMap:c}),s=s?e.Count:0,e=(null==(e=this._reactionsMap.get(a+"-"+t))?void 0:e.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:a,reactionID:t,reactionInfo:{reactionID:t,totalUserCount:s,partialUserList:r}}),{reactionID:t,totalUserCount:s,partialUserList:r,reactedByMyself:e}});d.emitOuterEvent(g.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:g.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:a,reactionList:u}})}))}_handleReactionSync(e){var{notificationCenter:t,constants:s}=this._core,{C2CMsgInfo:e={},GroupMsgInfo:r={},Reaction:n,OperateType:o}=e.MsgReactionNotify,{TinyId:e="",MsgClientTime:r=0,MsgRandom:a=0}=Object.assign(Object.assign({},e),r),r=e+`-${r}-`+a,a=r+"-"+n;if(1===o?this._recordMessageReactedByMe(r,n):this._removeMyReactionRecord(r,n),null!=(e=this._reactionsMap.get(a))&&e.reactionID){let e=this._reactionsMap.get(a);e.reactedByMyself=1===o,t.emitOuterEvent(s.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:s.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:r,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){let s=[];return null!=e&&e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){var{messageSequence:e,messageKey:t,messageIDMap:s}=e;return t?s.get(t):s.get(e)}_generateMessageKeyList(e,n){var t=this._core["constants"],s=e[0]["conversationType"];let r=[];return s===t.OuterConstant.CONV_C2C?r=e.map(e=>{var{clientSequence:e,random:t,time:s,ID:r}=e,e=e+`_${t}_`+s;return n.set(e,r),e}):s===t.OuterConstant.CONV_GROUP&&(r=e.map(e=>{var{ID:e,sequence:t}=e;return n.set(t,e),t})),r}},s=new class{init(e){var{helper:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:s,GROUP_MESSAGE_READ_RECEIPT:r},notificationCenter:n}=this._core=e;e.registerApi({apiName:"sendMessageReadReceipt",context:this}),e.registerApi({apiName:"getMessageReadReceiptList",context:this}),e.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),n.subscribeInnerEvent(t,s,this._handleC2CMessageReadReceipt,this),n.subscribeInnerEvent(t,r,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(e){return h(this,void 0,void 0,function*(){var{common:r,constants:t}=this._core,s=this._filterValidMessageSendByOther(e);if(0===s.length)throw new r.ChatError({code:t.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{let e=s[0]["conversationType"];return e===t.OuterConstant.CONV_C2C?yield function(s){return h(this,void 0,void 0,function*(){var{common:e,constants:t}=M.core,t={Peer_Account:s[0].conversationID.replace(t.OuterConstant.CONV_C2C,""),C2CMsgInfo:s.map(e=>{var{from:e,to:t,sequence:s,random:r,time:n,clientTime:o}=e;return{From_Account:e,To_Account:t,MsgSeq:s,MsgRandom:r,MsgTime:n,MsgClientTime:o}})};return e.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:t})})}(s):yield function(s){return h(this,void 0,void 0,function*(){var{common:e,constants:t}=M.core,t={GroupId:s[0].conversationID.replace(t.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:t})})}(s),{code:0,data:{}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getMessageReadReceiptList(n){return h(this,void 0,void 0,function*(){let{common:r,constants:t}=this._core;try{let e=n[0]["conversationType"];if(e===t.OuterConstant.CONV_GROUP){let s=this._filterValidMessageSendByMe(n);if(0<(null==s?void 0:s.length)){let e=yield function(s){return h(this,void 0,void 0,function*(){var{common:e,constants:t}=M.core,t={GroupId:s[0].conversationID.replace(t.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:t})})}(s),t=(e||{})["GroupMsgReceiptList"];this._updateGroupMessagesReadReceiptInfo({messageList:n,readReceiptList:t})}}return{code:0,data:{messageList:n}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}getGroupMessageReadMemberList(o){return h(this,void 0,void 0,function*(){let{constants:e,common:r}=this._core,{message:t,filter:a=d.READ,cursor:s=""}=o,{conversationID:n,sequence:i,ID:c}=t,u=n.replace(e.OuterConstant.CONV_GROUP,""),l=100<=o.count?100:o.count;try{let o=yield function(o){return h(this,void 0,void 0,function*(){var{sequence:e,groupID:t,filter:s,cursor:r,count:n}=o,e={MsgSeq:e,GroupId:t,Filter:s,Cursor:r,Num:n};return M.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:e})})}({groupID:u,sequence:i,filter:a,cursor:s,count:l});if(o){let{Cursor:e,IsFinish:t,UnreadList:s,ReadList:r}=o,n={cursor:e,isCompleted:1===t,messageID:c,unreadUserIDList:[],readUserIDList:[]};return a===d.READ?n.readUserIDList=r.map(e=>e.Read_Account):a===d.UNREAD&&(n.unreadUserIDList=s.map(e=>e.Unread_Account)),{code:0,data:n}}}catch(e){let{errorCode:t,errorInfo:s}=e;throw new r.ChatError({code:t,message:s})}})}_handleC2CMessageReadReceipt(e){let n=[],{constants:t,helper:s}=this._core,{C2cMsgInfo:o,PeerReadTime:a,Peer_Account:i}=e;if(!s.isEmpty(o)){let r=""+t.OuterConstant.CONV_C2C+i;null!=o&&o.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s}=e,e=e+`-${t}-`+s,t=l({conversationID:r,messageID:e});t&&!t.readReceiptInfo.isPeerRead&&(t.readReceiptInfo.isPeerRead=!0,t.readReceiptInfo.timestamp=a,n.push({userID:i,messageID:e,isPeerRead:!0,timestamp:a}))}),this._emitReadReceiptEventIfNeed(n)}}_updateGroupMessagesReadReceiptInfo(e){let{messageList:t,readReceiptList:s}=e,r=new Map;t.forEach(e=>{r.set(e.sequence,e)}),null!=s&&s.forEach(e=>{var t,s;0===e.Code&&({MsgSeq:e,ReadNum:t,UnreadNum:s}=e,e=r.get(e))&&(e.readReceiptInfo.readCount=t,e.readReceiptInfo.unreadCount=s)})}_handleGroupMessageReadReceipt(e){let i=[],s=this._core["constants"],t=e["GroupTips"];t.forEach(e=>{let{MsgBody:{GroupMsgReceiptList:t},GroupInfo:{GroupId:o}}=e,a=""+s.OuterConstant.CONV_GROUP+o;null!=t&&t.forEach(e=>{var{TinyId:e,MsgClientTime:t,MsgRandom:s,ReadNum:r,UnreadNum:n}=e,e=e+`-${t}-`+s,t=l({conversationID:a,messageID:e}),s={groupID:o,messageID:e,readCount:0,unreadCount:0};t&&("number"==typeof r&&(t.readReceiptInfo.readCount=r,s.readCount=r),"number"==typeof n&&(t.readReceiptInfo.unreadCount=n,s.unreadCount=n),i.push(s))})}),this._emitReadReceiptEventIfNeed(i)}_emitReadReceiptEventIfNeed(e){var{notificationCenter:t,OuterEvent:s}=this._core;0<e.length&&t.emitOuterEvent(s.MESSAGE_READ_RECEIPT_RECEIVED,{name:s.MESSAGE_READ_RECEIPT_RECEIVED,data:e})}_filterValidMessageSendByOther(e){return this._filterNeedReadReceiptMessages(e).filter(e=>{e=e.from;return e!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(e){let s=this._core.constants["OuterConstant"];return this._filterNeedReadReceiptMessages(e).filter(e=>{var{from:e,status:t}=e;return e===this._core.common.getCurrentUserID()&&t===s.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(e){return e.filter(e=>!0===e.needReadReceipt)}dispose(){var{InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:t,GROUP_MESSAGE_READ_RECEIPT:s},notificationCenter:r}=this._core;r.unSubscribeInnerEvent(e,t,this._handleC2CMessageReadReceipt,this),r.unSubscribeInnerEvent(e,s,this._handleGroupMessageReadReceipt,this)}};function p(a,i,c){return h(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=M.core["common"],{from:t,to:s,clientSequence:r,random:n,time:o}=a;return e({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:t,To_Account:s,MsgKey:r+`_${n}_`+o,OperateType:c,ExtensionList:i}})})}function v(r,n,o){return h(this,void 0,void 0,function*(){var{buildAndSendPacket:e}=M.core["common"],{to:t,sequence:s}=r;return e({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:t,MsgSeq:s,OperateType:o,ExtensionList:n}})})}var o=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){var{notificationCenter:e,helper:{registerApi:t},InnerEvent:{MESSAGE_PUSH:s,LOGOUT:r},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core=e;t({apiName:"setMessageExtensions",context:this}),t({apiName:"getMessageExtensions",context:this}),t({apiName:"deleteMessageExtensions",context:this}),e.subscribeInnerEvent(s,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(r,this.reset,this)}setMessageExtensions(l,d){return h(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");let{constants:{OuterConstant:t},ssoLog:e}=this._core,{ID:s,conversationID:r,sequence:n,time:o,conversationType:a}=l,i=d;20<d.length&&(i=d.slice(0,20),e.warn("setMessageExtensions","the length of extensions cannot exceed 20"));var c=this._generateServerExtensions(l,i),u=`convID:${r} messageID:${s} sequence:${n} time:${o} count:`+i.length;try{let r;if(a===t.CONV_C2C?r=yield p(l,c,1):a===t.CONV_GROUP&&(r=yield v(l,c,1)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(l,r);return{code:0,data:{extensions:e},successLog:{message:u+` successCount:${t} failCount:`+s}}}return{code:0,data:{extensions:[]}}}catch(t){let e=t["errorCode"];throw new this._core.helper.ChatError({functionName:"setMessageExtensions",code:e,moreMessage:u})}})}getMessageExtensions(a){return h(this,void 0,void 0,function*(){var{isUndefined:s}=this._core["utils"];this._validateMessageExtensionBusinessCapability("getMessageExtensions");let{conversationID:e,ID:r,sequence:t,time:n}=a,o=`convID:${e} messageID:${r} sequence:${t} time:`+n;try{let e,t=(this._completedFetchExtensions.has(r)&&(e=this._extensionsLatestSequenceMap.get(r)),yield this._fetchMessageExtensions(a,e));return s(e)&&1<t.length&&this._completedFetchExtensions.add(r),{code:0,data:{extensions:t},successLog:{message:o}}}catch(s){let{errorCode:e,errorInfo:t=""}=s||{};throw new this._core.common.ChatError({code:e,message:t,moreMessage:o})}})}deleteMessageExtensions(d,g){return h(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");let{utils:{isEmpty:t},constants:{OuterConstant:e}}=this._core,{conversationType:s,conversationID:r,sequence:n,ID:o,time:a}=d,i=3,c=[];t(g)||(i=2,null==g)||g.forEach(e=>{c.push({key:e,value:"",seq:0})});var u=`convID:${r} messageID:${o} sequence:${n} time:${a} operateType:`+i,l=this._generateServerExtensions(d,c);try{let r;if(s===e.CONV_C2C?r=yield p(d,l,i):s===e.CONV_GROUP&&(r=yield v(d,l,i)),r){let{resultList:e,successCount:t,failureCount:s}=this._handleModifyMessageExtensions(d,r);return{code:0,data:{extensions:e},successLog:{message:u+`successCount:${t} failCount:`+s}}}return{code:0,data:{extensions:[]}}}catch(t){let e=t["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:e,moreMessage:u})}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=this._core;e.unSubscribeInnerEvent(t,r,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){let s=e["ID"],r=t["Seq"],n=t.ExtensionList||[],o=[],a=0,i=0,c=[];return n.forEach(e=>{var{ErrorCode:e,Extension:t}=e,{Key:t,Value:s,Seq:r}=t;o.push({code:e,key:t,value:s}),0===e?a++:i++,c.push({key:t,value:s,seq:r})}),this._extensionsLatestSequenceMap.set(s,r),0<c.length&&this._updateLocalExtensions(e.ID,c),{resultList:o,successCount:a,failureCount:i}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);let r=this._messageExtensionsMap.get(e);null!=t&&t.forEach(e=>{var{key:e,seq:t,value:s=""}=e;null!=r&&r.set(e,{value:s,seq:t})})}_fetchMessageExtensions(c,s){return h(this,void 0,void 0,function*(){let{constants:{OuterConstant:e},utils:{isEmpty:a}}=this._core;try{let o;var{conversationType:t,ID:i}=c;if(t===e.CONV_C2C?o=yield function(e,t){var s=M.core["common"]["buildAndSendPacket"],{from:e,to:r,clientSequence:n,random:o,time:a}=e;return s({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:e,To_Account:r,MsgKey:n+`_${o}_`+a,StartSeq:t}})}(c,s):t===e.CONV_GROUP&&(o=yield function(e,t){var s=M.core["common"]["buildAndSendPacket"],{to:e,sequence:r}=e;return s({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:e,MsgSeq:r,StartSeq:t}})}(c,s)),o){let{LatestSeq:e,ClearSeq:t,CompleteFlag:s}=o,r=(o.ExtensionList||[]).map(e=>({key:e.Key,value:e.Value,seq:e.Seq}));if(this._updateLocalExtensions(i,r),this._clearLocationExtensions(i,t),this._extensionsLatestSequenceMap.set(i,e),1!==s){let e=r[r.length-1].seq+1;return this._fetchMessageExtensions(c,e)}let n=[];if(this._messageExtensionsMap.has(i)){let e=this._messageExtensionsMap.get(i);null!=e&&e.forEach((e,t)=>{e=e.value;a(e)||n.push({key:t,value:e})})}return n}}catch(e){throw e}})}_clearLocationExtensions(e,r){if(!(r<=0)&&this._messageExtensionsMap.has(e)){let s=this._messageExtensionsMap.get(e);null!=s&&s.forEach((e,t)=>{e.seq<=r&&s.delete(t)})}}_generateServerExtensions(e,t){var s=e["ID"];if(this._messageExtensionsMap.has(s)){let r=this._messageExtensionsMap.get(s);return t.map(e=>{var{key:e,value:t}=e;let s=0;return{Key:e,Value:t,Seq:s=null!=r&&r.has(e)?null==(t=r.get(e))?void 0:t.seq:s}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){var{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits("MSG_EXT"))throw new t.ChatError({functionName:e,code:s.ERROR_CODE.NO_USE,replacement1:e})}_handleMessageExtensionsNotify(e){var{SetKVInfo:e,DeleteKVInfo:t,ClearKVInfo:s,MsgOptType:r,TinyId:n,MsgLastSeq:o,ExtensionC2cMsgInfo:a,ExtensionGroupMsgInfo:i}=(null==e?void 0:e.MsgExtensionNotify)||{},{MsgClientTime:a,MsgRandom:i}=a||i||{},n=n+`-${a}-`+i;this._extensionsLatestSequenceMap.set(n,o),1===r?this._handleMessageExtensionsUpdated({messageID:n,updateMessageExtensionsInfo:e}):2===r?this._handleMessageExtensionsDeleted({messageID:n,deleteMessageExtensionsInfo:t}):3===r&&this._handleMessageExtensionsCleared({messageID:n,clearMessageExtensionsInfo:s})}_handleMessageExtensionsUpdated(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,updateMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push({key:e.Key,value:e.Value}),{key:e.Key,value:e.Value,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_UPDATED,{name:s.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:r,extensions:o}})}_handleMessageExtensionsDeleted(e){let{notificationCenter:t,OuterEvent:s}=this._core,{messageID:r,deleteMessageExtensionsInfo:n=[]}=e,o=[];n.forEach(e=>{var{MsgKeyValue:e=[]}=e,e=e.map(e=>(o.push(e.Key),{key:e.Key,seq:e.Seq}));this._updateLocalExtensions(r,e)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_DELETED,{name:s.MESSAGE_EXTENSIONS_DELETED,data:{messageID:r,keyList:o}})}_handleMessageExtensionsCleared(e){let{notificationCenter:t,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:s},utils:{isEmpty:r}}=this._core,{messageID:n,clearMessageExtensionsInfo:o=[]}=e,a=[];o.forEach(e=>{let s=e["ClearMsgSeq"];this._messageExtensionsMap.has(n)&&(this._messageExtensionsMap.get(n)||[]).forEach((e,t)=>{e.seq<=s&&!r(e.value)&&a.push(t)}),this._clearLocationExtensions(n,s)}),t.emitOuterEvent(s,{name:s,data:{messageID:n,keyList:a}})}};let _={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{OuterConstant:t}=M.core["constants"];return e.status!==t.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},S={setMessageExtensions:[_,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[_],deleteMessageExtensions:[_]},R=Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>"GROUP"===e||"conversationType should be GROUP."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var t="string"==typeof(null==e?void 0:e.text)&&("string"!=typeof e.text||0!==(null==(t=null==e?void 0:e.text)?void 0:t.length))||"payload.text is invalid.";return!0!==t?t:!(null!=e&&e.atUserList&&!Array.isArray(e.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>!(!e.startsWith("C2C")&&!e.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{var{isString:t,isNumber:s}=M.core["utils"];return t(null==e?void 0:e.description)?s(null==e?void 0:e.longitude)?!!s(null==e?void 0:e.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"!=typeof e?"maxUserCountPerReaction is invalid.":!(e<0||10<e)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>"success"===e.status||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),S),{pinGroupMessage:{groupID:{required:!0,rules:["string"],allowEmpty:!1},message:{required:!0,rules:["object"],allowEmpty:!1},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},getPinnedGroupMessageList:[{key:"groupID",required:!0,rules:["string"],allowEmpty:!1}]}),D=Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0}),{pinGroupMessage:!0,getPinnedGroupMessageList:!0});class A{constructor(e){this._core=e}deleteMessage(s){return h(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={From_Account:this._core.common.getCurrentUserID(),To_Account:e,MsgKeyList:t};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:e})})}revokeMessage(o){return h(this,void 0,void 0,function*(){var{to:e,from:t,sequence:s,time:r,random:n}=o;return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:{MsgInfo:{From_Account:t,To_Account:e,MsgSeq:s,MsgRandom:n,MsgTimeStamp:r}}})})}}class L{constructor(e){this._core=e}deleteMessage(s){return h(this,void 0,void 0,function*(){var{to:e,messageIdentifiers:t}=s,e={GroupId:e,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:t};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:e})})}revokeMessage(s){return h(this,void 0,void 0,function*(){var{to:e,sequence:t}=s;return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:{GroupId:e,MsgSeqList:[{MsgSeq:t}]}})})}}class O{constructor(e){this._core=e}generateRevokeMessage(e){var{conversationID:e,sequence:t,random:s,tinyID:r,clientTime:n,revokeReason:o,revoker:a}=e;let i={};var c=this._core.message["messageDataHandler"];return(i=c.revokeMessage({conversationID:e,sequence:t,random:s,revoker:a}))||(i={conversationID:e,sequence:t},r&&n&&s&&(i.ID=r+`-${n}-`+s)),i.revoker=a,i.revokeReason=o,i.revokerInfo={userID:a,nick:"",avatar:""},i}updateRevokerInfo(t){return h(this,void 0,void 0,function*(){var e=t.map(e=>e.revoker);try{let s=yield this._fetchUserInfos(e);s&&t.forEach(e=>{var t=e["revoker"];s[t]&&(e.revokerInfo.nick=s[t].nick||"",e.revokerInfo.avatar=s[t].avatar||"",e.revokerInfo.userID=t)})}catch(e){console.debug(e)}})}_fetchUserInfos(t){return h(this,void 0,void 0,function*(){var e=yield null==(e=this._core.user.userProfile)?void 0:e.getUserProfile({userIDList:t});return null!=e&&e.data?null==(e=e.data)?void 0:e.reduce((e,{userID:t,nick:s,avatar:r})=>(e[t]={nick:s||"",avatar:r||""},e),{}):null})}}var P=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new L(e),this._c2cMessageAction=new A(e),this._messageHelper=new O(e);e=e.helper;e.registerApi({apiName:"deleteMessage",context:this}),e.registerApi({apiName:"revokeMessage",context:this}),e.registerApi({apiName:"resendMessage",context:this}),e.registerApi({apiName:"findMessage",context:this})}deleteMessage(t){return h(this,void 0,void 0,function*(){let c=[],u=[],{conversationID:l,conversationType:d}=t[0],e=l.replace(d,"");if("@TIM#SYSTEM"===d)throw new this._core.helper.ChatError({code:2116});if(t.forEach(e=>{var{conversationID:t,conversationType:s,status:r,_onlineOnlyFlag:n,sequence:o,random:a,time:i}=e||{};if("success"===r&&t===l&&s===d){if(!n){let e="C2C"===s?o+`_${a}_`+i:String(o);c.push(e)}u.push(e)}}),0===c.length)return this._handleDeleteMessageSuccess(u),{code:0,data:{messageList:u}};30<c.length&&(c=c.slice(0,30),u=u.slice(0,30));try{return"C2C"===d?yield this._c2cMessageAction.deleteMessage({to:e,messageIdentifiers:c}):yield this._groupMessageAction.deleteMessage({to:e,messageIdentifiers:c}),this._handleDeleteMessageSuccess(u),{code:0,data:{messageList:u}}}catch(c){let e=c["errorCode"];throw new this._core.helper.ChatError({functionName:"deleteMessage",code:e})}})}revokeMessage(u){return h(this,void 0,void 0,function*(){let s,{conversationType:e,isRevoked:t,ID:r,type:n,from:o,to:a}=u;var i,c=`type:${n} from:${o} to:${a} ID:`+r;if("@TIM#SYSTEM"===e)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(t)throw new this._core.helper.ChatError({message:"message has been revoked",moreMessage:c});try{if(i="C2C"===e?yield this._c2cMessageAction.revokeMessage(u):yield this._groupMessageAction.revokeMessage(u)){let e=i["RecallRetList"],t=(null==(s=null==e?void 0:e[0])?void 0:s.RetCode)||0;if(0!==t)throw new this._core.helper.ChatError({code:t,moreMessage:c});return u.isRevoked=!0,yield this._handleRevokeMessageSuccess(u),{code:0,data:{message:u},successLog:{message:c}}}}catch(s){let e=s["errorCode"];throw new this._core.helper.ChatError({functionName:"revokeMessage",code:e,moreMessage:c})}})}resendMessage(t,s){return h(this,void 0,void 0,function*(){var e;return t.isResend=!0,t.status="unSend",null==(e=null==(e=this._core)?void 0:e.apiMap)?void 0:e.sendMessage(t,s)})}findMessage(e){return this._core.message.messageDataHandler.findMessage(e)}_handleDeleteMessageSuccess(n){if(0!==n.length){let{message:{messageDataHandler:s},common:{isTopic:e},notificationCenter:t,InnerEvent:r}=this._core;n.forEach(t=>{t.isDeleted=!0;var e=s.getLocalMessageList(t.conversationID);null!=e&&e.forEach(e=>{e.ID===t.ID&&(e.isDeleted=!0)})});var{conversationID:n=""}=n[0];e(n)?t.emitInnerEvent(r.TOPIC_MESSAGE_DELETED,n):t.emitInnerEvent(r.MESSAGE_DELETED,n)}}_handleRevokeMessageSuccess(n){return h(this,void 0,void 0,function*(){var e=null==(e=this._core.store.get("login"))?void 0:e.userId,{conversationID:t,sequence:s,random:r}=n;this._core.message.messageDataHandler.revokeMessage({conversationID:t,sequence:s,random:r,revoker:e}),yield this._messageHelper.updateRevokerInfo([n])})}};class T{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Index:e,Data:t}=e;return new T({index:e,data:t})}constructor(e){this.type=r.MSG_FACE;var{index:e,data:t}=e;this.content={index:e,data:t}}validateBeforeSend(){var e;return"number"==typeof(null==(e=this.content)?void 0:e.index)&&"string"==typeof(null==(e=this.content)?void 0:e.data)?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{index:e,data:t}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Index:e,Data:t}}}}class x{static parseServerPushElement(e){var{MsgContent:e={}}=e,{Desc:e,Longitude:t,Latitude:s}=e;return new x({description:e,longitude:t,latitude:s})}constructor(e){this.type=r.MSG_LOCATION;var{description:e,longitude:t,latitude:s}=e;this.content={description:e,longitude:t,latitude:s}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{description:e,longitude:t,latitude:s}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Desc:e,Longitude:t,Latitude:s}}}}var G=new class{init(e){(this._core=e).message.messageFactory.registerElementClass(r.MSG_FACE,T),e.message.messageFactory.registerElementClass(r.MSG_LOCATION,x),e.helper.registerApi({apiName:"createFaceMessage",context:this}),e.helper.registerApi({apiName:"createTextAtMessage",context:this}),e.helper.registerApi({apiName:"createForwardMessage",context:this}),e.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(e){var t,s;return e?({index:t,data:s}=(null==e?void 0:e.payload)||{},t=new T({index:t,data:s}),s=this._core.common.getCurrentUserID(),(e=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),e):null}createTextAtMessage(e){let r=((null==e?void 0:e.payload)||{})["atUserList"],n=this._core.apiMap.createTextMessage(e),o=this._core["OuterConstant"];if(!n)return null;if(Array.isArray(r)){let t=[],s=[];r.forEach(e=>{e!==o.MSG_AT_ALL?(t.push({GroupAtAllFlag:0,GroupAt_Account:e}),s.push(e)):(t.push({GroupAtAllFlag:1}),s.push(o.MSG_AT_ALL))}),n._groupAtInfoList=t,n.atUserList=s}return n}createForwardMessage(e){var{helper:t,OuterConstant:s}=this._core,{to:e,conversationType:r,priority:n,payload:o,needReadReceipt:a,receiverList:i,cloudCustomData:c="",isSupportExtension:u=!1}=e;if(!Array.isArray(o._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(o.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});s=this._core.common.getCurrentUserID(),t=this._core.message.messageFactory.createMessage({to:e,from:s,conversationType:r,isPlaceMessage:0,priority:n,payload:o,needReadReceipt:a,isSupportExtension:u,cloudCustomData:c,receiverList:i});return t.setRelayFlag(!0),t.setElement(o._elements[0]),t}createLocationMessage(e){var t,s,r;return e?({description:t,longitude:s,latitude:r}=(null==e?void 0:e.payload)||{},t=new x({description:t,longitude:s,latitude:r}),s=this._core.common.getCurrentUserID(),(r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:s}))).setElement(t),r):null}};class k{init(e){this._messageHelper=new O(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s},helper:{registerWorkflowStep:r},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:o}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this),r(n.SYNC_SERVER_INFO_AFTER_RE_ONLINE,o.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(e){e=e.C2cNotifyMsgArray;null!=e&&e.forEach(e=>{Object.keys(e).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(e)})}_handleC2CRevokeMessage(t){return h(this,void 0,void 0,function*(){try{var{C2cWithdrawInfoArray:e}=t["WithdrawC2cMsgNotify"];yield this._parseAndEmitC2CRevokedMessages(e)}catch(e){console.debug(e)}})}_parseAndEmitC2CRevokedMessages(s){return h(this,void 0,void 0,function*(){let i=[],{notificationCenter:e,OuterEvent:t,common:{getCurrentUserID:c}}=this._core;s.forEach(e=>{var{MsgRand:t,MsgSeq:s,To_Account:r,From_Account:n,RevokerInfo:{Revoker_Account:o,Revoke_Reason:a}}=e,r=c()===n?"C2C"+r:"C2C"+n,e=(null==(n=null==e?void 0:e.RevokerInfo)?void 0:n.Reason)||a,n=this._messageHelper.generateRevokeMessage({conversationID:r,sequence:s,random:t,revoker:o,revokeReason:e});i.push(n)}),0<i.length&&(yield this._messageHelper.updateRevokerInfo(i),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:i}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return h(this,void 0,void 0,function*(){var e=t.result["revokedMessageList"];yield this._parseAndEmitC2CRevokedMessages(e)})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this)}}class U{init(e){this._messageHelper=new O(e);var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core=e;e.subscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(e){e=e.GroupTips;null!=e&&e.forEach(e=>{var t;Array.isArray(null==(t=null==e?void 0:e.MsgBody)?void 0:t.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(e)})}_handleGroupRevokeMessage(o){return h(this,void 0,void 0,function*(){try{let{RevokerInfo:c,MsgBody:{GroupWithdrawInfoArray:e},GroupInfo:u}=o,l=[],d=[],{notificationCenter:t,OuterEvent:s,utils:{isEmpty:r},common:{isCommunity:n}}=this._core,g=!1;u&&(g=n({groupID:u.GroupId})||!r(u.TopicId)),e.forEach(e=>{var{Random:e,MsgSeq:t,GroupId:s,MsgClientTime:r,TinyId:n,TopicId:o,RevokerInfo:{Revoker_Account:a=(null==c?void 0:c.Revoker_Account)||"",Reason:i=(null==c?void 0:c.Reason)||""}}=e,o=this._messageHelper.generateRevokeMessage({conversationID:o?"GROUP"+o:"GROUP"+s,sequence:t,random:e,tinyID:n,clientTime:r,revoker:a,revokeReason:i});(g?(o.revokerInfo.nick=u.From_AccountNick,o.revokerInfo.avatar=u.From_AccountHeadurl,l):d).push(o)}),0<d.length&&(yield this._messageHelper.updateRevokerInfo(d),l.push(...d)),0!==l.length&&t.emitOuterEvent(s.MESSAGE_REVOKED,{name:s.MESSAGE_REVOKED,data:l})}catch(e){console.debug(e)}})}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}}var q=new class{constructor(){this._c2cMessageReceiver=new k,this._groupMessageReceiver=new U}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class F{constructor(e){var t=(this._core=e)["constants"];this._messageHelper=new O(e),e.helper.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.GROUP_REVOKED_NOTICE_RECOVER,this._recoverGroupRevokeNotice,this)}getRoamingMessagesByAnchor(e){return this._core.message.messageHistory.getGroupRoamingMessagesByAnchor(e)}_recoverGroupRevokeNotice(e){let{recoverRevokeNoticeGroupIDList:t=[]}=e.result,r=this._filterValidGroupIDList(t);0!==r.length&&(e=Math.min(Math.ceil(r.length/10),5),Promise.all(Array.from({length:e},(e,t)=>{var t=10*t,s=Math.min(10+t,r.length);return this._fetchGroupRevokeNotice(r.slice(t,s))})).catch(e=>console.error(e)))}_fetchGroupRevokeNotice(s){return h(this,void 0,void 0,function*(){var e;try{var t=yield function(o){return h(this,void 0,void 0,function*(){let{appStore:e,constants:{OuterConstant:s},common:r}=M.core,n=e.groupStore.getGroupMap(),t={NotifyReqList:o.map(e=>{var t=n.get(e);return{NotifyType:1,Limit:20,Type:r.isCommunity({type:t.type,groupID:e})?s.GRP_COMMUNITY:void 0,GroupId:e,BeginTime:(null==t?void 0:t._lastRevokedTime)||0,EndTime:1e3*M.core.common.timeManager.getServerTimeMs()}})||[]};return r.buildAndSendPacket({servcmd:"group_open_http_svc.batch_get_group_notify",data:t})})}(s);if(t){let s=[];null!=(e=null==t?void 0:t.NotifyRspList)&&e.forEach(e=>{var{GroupId:e,NotifyMsgList:t}=e,e=this._parseServerRevokeMessageList({groupID:e,serverRevokeMessageList:t});s.push(...e)}),0!==s.length&&(yield this._emitMessageRevokedEvent(s))}}catch(e){console.error(e)}})}_parseServerRevokeMessageList(e){let{serverRevokeMessageList:t,groupID:a}=e,i=[];return null!=t&&t.forEach(e=>{var{ClientTime:e,MsgSeq:t,Random:s,RevokerInfo:{Revoker_Account:r="",Reason:n=""}}=e,o="GROUP"+a,o=this._messageHelper.generateRevokeMessage({conversationID:o,sequence:t,random:s,clientTime:e,revoker:r,revokeReason:n});i.push(o)}),i}_filterValidGroupIDList(e){let{OuterConstant:t}=this._core["constants"],s=this._core.appStore.groupStore.getGroupMap();return(null==e?void 0:e.filter(e=>{return!(!s.has(e)||(null==(e=s.get(e))?void 0:e.type)===t.GRP_AVCHATROOM||null!=e&&e.isSupportTopic)}))||[]}_emitMessageRevokedEvent(s){return h(this,void 0,void 0,function*(){var{notificationCenter:e,OuterEvent:t}=this._core;yield this._messageHelper.updateRevokerInfo(s),e.emitOuterEvent(t.MESSAGE_REVOKED,{name:t.MESSAGE_REVOKED,data:s})})}}class V{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new O(e)}getRoamingMessagesByAnchor(g){return h(this,void 0,void 0,function*(){var n;try{var{conversationID:o,count:e,messageID:r,time:a,direction:i}=g;let t=a,s="";if(!a){let e=r?this._core.message.messageDataHandler.findMessage(r):null;if(t=(null==e?void 0:e.time)||0,r&&this._historyMessageListFetchAnchors.has(o)){let e=this._historyMessageListFetchAnchors.get(o);t=e.lastMessageTime,s=e.messageKey}}var c=o.replace(f,""),u=yield function(o){return h(this,void 0,void 0,function*(){var{peerAccount:e,count:t,lastMessageTime:s,messageKey:r,direction:n}=o,e={Peer_Account:e,MaxCnt:t,WithRecalledMsg:1,LastMsgTime:s,MsgKey:r,GetDirection:n};return M.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:e})})}({count:e,lastMessageTime:t,messageKey:s,peerAccount:c,direction:i});if(u){let{MsgList:r=[],Complete:e,MsgKey:t,LastMsgTime:s}=u;this._historyMessageListFetchAnchors.set(o,{messageKey:t,lastMessageTime:s});var l=[];for(let s=0;s<r.length;s++){let e=r[s],t=this._parseMessage(e);l.push(t)}var d=this._core.message.messageHelper.filterValidMessages(l);return{messageList:d,nextReqMessageIDFromServer:null==(n=d[0])?void 0:n.ID,lastMessageTime:s,hasNoMoreHistoryMessage:1===e}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}clearHistoryMessageListFetchAnchors(e){this._historyMessageListFetchAnchors.delete(e)}reset(){this._historyMessageListFetchAnchors.clear()}_parseMessage(e){f;var e=this._core.message.messageHelper.parseServerPushMessage(e),t=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:"C2C",flow:"in"}));return t.setElement(e.elements),t}}var b=new class{constructor(){this._clearedConversations=new Set,this._fetchedCompleteConversations=new Set}init(e){this._core=e,this._groupMessageHistory=new F(e),this._c2cMessageHistory=new V(e),this._messageHelper=new O(e),e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(e){return h(this,void 0,void 0,function*(){try{var{conversationID:o,nextReqMessageID:a}=e;if("@TIM#SYSTEM"===o)return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};var i=this._getAvailableLocalMessagesCount({conversationID:o,nextReqMessageID:a});if(this._needFetchHistoryMessageList({conversationID:o,availableLocalMessagesCount:i,targetCount:20})){let n=null;if(o.startsWith(y)?n=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:o,sequence:Number(a),count:20,direction:E.FORWARD}):o.startsWith(f)&&(n=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:o,messageID:a,count:20,direction:E.FORWARD})),n){let{nextReqMessageIDFromServer:e,hasNoMoreHistoryMessage:t,messageList:s}=n,r=this._core.message.messageDataHandler.prependLocalMessageList({messageList:s,conversationID:o});var c=o,{appStore:u,message:l,OuterConstant:d}=M.core,u=u.conversationStore.getConversation(c),g=l.messageDataHandler.getLocalMessageList(c);if(u&&0!==g.length&&c!==d.CONV_SYSTEM){var m=[];for(let e=0;e<g.length;e++)"in"!==g[e].flow?"out"!==g[e].flow||g[e].isRead||g[e].setIsRead(!0):m.push(g[e]);let t=0;if(u.type===d.CONV_C2C){let e=m.slice(-u.unreadCount).filter(e=>e.isRevoked).length;t=m.length-u.unreadCount-e}else t=m.length-u.unreadCount;for(let e=0;e<t&&!m[e].isRead;e++)m[e].setIsRead(!0)}yield C(o),o.startsWith(f)&&(yield I({messageList:s,conversationID:o}));var h=this._core.message.messageDataHandler.getLocalMessageList(o).slice(0,r.length+i),p=h.filter(e=>e.isRevoked),v=(yield this._messageHelper.updateRevokerInfo(p),t&&this._fetchedCompleteConversations.add(o),{nextReqMessageID:t?"":String(e),messageList:h,isCompleted:t}),_=h.map(e=>e.sequence);return{code:0,data:v,successLog:{message:`conversationID: ${o} nextReqMessageID: ${a} availableLocalMessagesCount: ${i} sequenceList: `+JSON.stringify(_)}}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return{code:0,data:yield this._getMessageListFromMemory({conversationID:o,nextReqMessageID:a,count:20}),successLog:{message:`conversationID: ${o} nextReqMessageID: ${a} availableLocalMessagesCount: ${i}}`}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}getMessageListHopping(r){return h(this,void 0,void 0,function*(){var o,a;let{conversationID:e,sequence:i,time:t,direction:c=E.FORWARD}=r,u=this._core.helper["isEmpty"];if(![E.BACKWARD,E.FORWARD].includes(c))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:s=20}=r,l=(s=20<s?20:s,null);if(e.startsWith(y)){if(l=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:i,count:s,direction:c})){let{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:s,messageList:r,invisibleSequenceList:n}=l;if(this._core.message.messageDataHandler.storeSparseMessageList(r),c===E.FORWARD){let e=s&&t<1;return{code:0,data:{messageList:r,isCompleted:e,nextMessageSeq:e?"":t}}}if(c!==E.BACKWARD)return{code:0,data:l};{if(u(r)&&u(n))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};let e=(null==(o=null==r?void 0:r[r.length-1])?void 0:o.sequence)||0,t=(null==(a=null==n?void 0:n[n.length-1])?void 0:a.sequence)||0;return{code:0,data:{messageList:r.filter(e=>e.sequence>=i),isCompleted:!s,nextMessageSeq:s?Math.max(e,t)+1:""}}}}}else if(e.startsWith(f)&&(l=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:e,count:s+1,time:t,direction:c}))){let{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=l;return s||(c===E.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}})}clearHistoryMessage(d){return h(this,void 0,void 0,function*(){let t,{appStore:e,common:{ChatError:s,getCurrentUserID:r},OuterConstant:{CONV_C2C:n,CONV_GROUP:o},message:a,apiMap:i}=this._core,c=e.conversationStore.getConversation(d);if(!c)throw new s({code:2500});var u={fromAccount:r()},l=c["type"];l===n?(u.type=1,u.toAccount=d.replace(n,"")):l===o&&(u.type=2,u.toGroupID=d.replace(o,""));try{yield null==(t=null==i?void 0:i.setMessageRead)?void 0:t.call(i,{conversationID:d});let e=yield function(n){return h(this,void 0,void 0,function*(){var{fromAccount:e,type:t,toAccount:s,toGroupID:r}=n,e={From_Account:e,Type:t,To_Account:s,ToGroupid:r};return M.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:e})})}(u);return e&&(a.messageDataHandler.deleteConversationMessageList(d),this._clearedConversations.add(d),this._fetchedCompleteConversations.delete(d),this._c2cMessageHistory.clearHistoryMessageListFetchAnchors(d),this._updateConversationLastMessage(d)),{code:0,data:{conversationID:d},successLog:{message:"convID:"+d}}}catch(e){let t=e["errorCode"];throw new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:t,moreMessage:"convID:"+d})}})}_updateConversationLastMessage(e){var t=this._core["appStore"];t.conversationStore.updateConversation(e,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e),r=s["length"];if(!t)return r;let n=-1;return null!=e&&e.startsWith(f)?n=s.findIndex(e=>e.ID===t):null!=e&&e.startsWith(y)&&(n=s.findIndex(e=>t.includes("-")?e.ID===t:String(e.sequence)===t)),-1===n?0:n}_needFetchHistoryMessageList({conversationID:e,availableLocalMessagesCount:t,targetCount:s}){return!!this._clearedConversations.has(e)||t<s&&!this._fetchedCompleteConversations.has(e)}_getMessageListFromMemory(e){return h(this,arguments,void 0,function*({conversationID:t,nextReqMessageID:s,count:e}){var r=this._core.message.messageDataHandler.getLocalMessageList(t),n=r.length;let o=n,a={isCompleted:!1,nextReqMessageID:"",messageList:[]},i=0,c=n;return s?(c=r.findIndex(e=>t.startsWith(f)?e.ID===s:String(e.sequence)===s),i=c>e?c-e:0,o=c):i=e<n?n-e:0,a.nextReqMessageID=0===i?"":this._generateNextReqMessageID({conversationID:t,targetIndex:i}),a.messageList=r.slice(i,c),a.isCompleted=o<=e,t.startsWith(f)&&(yield C(t),yield I({messageList:a.messageList,conversationID:t})),a})}_generateNextReqMessageID({conversationID:e,targetIndex:t}){var s=this._core.message.messageDataHandler.getLocalMessageList(e);return e.startsWith("C2C")?s[t].ID:String(s[t].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}reset(){this._clearedConversations.clear(),this._fetchedCompleteConversations.clear(),this._c2cMessageHistory.reset()}dispose(){this.reset()}},H=new class{constructor(){this._core=null}init(e){e=(this._core=e).helper;e.registerApi({apiName:"translateText",context:this})}translateText(n){return h(this,void 0,void 0,function*(){try{var{sourceLanguage:e,sourceTextList:t,targetLanguage:s}=n,r=yield function(a,i){return h(this,void 0,void 0,function*(){var e,{sourceTextList:t,sourceLanguage:s,targetLanguage:r}=a,{store:n,common:o}=i,s={SourceText:t,Source:s,Target:r,FromAccount:null==(e=n.get("login"))?void 0:e.tinyID,SDKAppID:null==(t=n.get("instance"))?void 0:t.sdkAppId},r=yield o.buildAndSendPacket({servcmd:"im_open_translate.ws_batch_trans_text",data:s});if(r){let{CmdErrorCode:e,TargetText:t}=r;return{cmdErrorCode:e,translatedTextList:t}}})}({sourceLanguage:e,sourceTextList:t,targetLanguage:s},this._core);if(r){let{cmdErrorCode:{ErrorCode:e,ErrorInfo:t},translatedTextList:s}=r;if(0===e)return{code:0,data:{translatedTextList:s}};throw{errorCode:e,errorInfo:t,message:t}}}catch(e){let{errorCode:t,errorInfo:s}=e||{};throw new this._core.helper.ChatError({functionName:"translateText",code:t,message:s})}})}},K=new class{init(e){(this._core=e).helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(o){return h(this,void 0,void 0,function*(){var s,{message:e,language:t=a.ZH_PY}=o;let r=(e.payload||{})["url"];var n=null==(s=this._core.store.get("login"))?void 0:s.userID,e=(e.from===n&&"out"===e.flow&&(r=e.payload.remoteAudioUrl),this._validateVoiceFormat(r),(null==(n=u.exec(r))?void 0:n[1])||"mp3"),n=c[t]||i;try{let s=yield function(e){var{store:t,common:s}=M.core,{url:e,format:r,serverLanguageType:n}=e,n={BytesUrl:e,BytesEngServiceType:n,BytesVoiceFormat:r,Uint32Sdkappid:null==(e=t.get("instance"))?void 0:e.sdkAppId,Uint64SourceType:0};return s.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:n})}({url:r,format:e,serverLanguageType:n});if(s){let{CmdErrorCode:e,BytesResult:t}=s;if(0===e.ErrorCode)return{code:0,data:{result:t}};throw{code:e.ErrorCode,message:e.ErrorInfo}}}catch(s){let{code:e,message:t}=s||{};throw new this._core.common.ChatError({functionName:"convertVoiceToText",code:e,message:t})}})}_validateVoiceFormat(e){if(!u.test(e))throw new this._core.common.ChatError({code:2119})}};class w{constructor(e){var{constants:t,common:s,utils:r}=M.core,{CONV_C2C:t,CONV_GROUP:n}=t.OuterConstant,{ID:e,tinyID:o,from:a,to:i,clientTime:s=s.timeManager.getServerTimeSeconds()||0,random:c,sequence:u,cloudCustomData:l="",nick:d="",avatar:g="",clientSequence:m,conversationType:h,groupID:p,_elements:v,time:_}=e,o=(this.ID=e||o+`-${s}-`+c,this.messageRandom=c,this.from=a,this.messageSender=a,this.time=_,this.messageSequence=u,this.clientSequence=m||u,this.clientTime=s,this.cloudCustomData=l,this.messageReceiver=i,this.avatar=g,this.nick=d,r.deepCopyWithMethods(v));o.forEach(e=>{e.payload=e.content,delete e.content}),this.messageBody=o,e?h.startsWith(t)?this.receiverUserID=i:h.startsWith(n)&&(this.receiverGroupID=i):p?(this.receiverGroupID=p,this.messageReceiver=p):i&&(this.receiverUserID=i,this.messageReceiver=i)}transformElementsToServerFormat(){return this.messageBody?Array.isArray(this.messageBody)?this.messageBody.map(e=>e.transformToServerFormat({isMergerMessage:!0})):this.messageBody.transformToServerFormat({isMergerMessage:!0}):null}}class 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=>m(e));return new N({messageList:e,title:r,abstractList:s,compatibleText:t,pbDownloadKey:n,downloadKey:o})}constructor(e){this.type=M.core.constants.OuterConstant.MSG_MERGER;let{messageList:t,title:s,abstractList:r,compatibleText:n,pbDownloadKey:o="",downloadKey:a="",version:i=0,layersOverLimit:c=!1}=e,u=[];t.forEach(e=>{e&&(e=new w(e),u.push(e))}),this.content={messageList:u,title:s,abstractList:r,compatibleText:n,version:i,downloadKey:a,pbDownloadKey:o,layersOverLimit:c}}validateBeforeSend(){var e=M.core.helper["isEmpty"];return e(this.content.messageList)?{isValid:!1,error:{message:"content is invalid"}}:{isValid:!0}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{abstractList:e,compatibleText:t,downloadKey:s,layersOverLimit:r,pbDownloadKey:n,title:o,version:a,messageList:i}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{AbstractList:e,CompatibleText:t,JsonMsgKey:s,LayersOverLimit:r,PbMsgKey:n,Title:o,Version:a,MsgList:g(i)}}}}var B=new class{init(e){let{message:t,helper:s,constants:{OuterConstant:r}}=this._core=e;t.messageFactory.registerElementClass(r.MSG_MERGER,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";M.core.helper.IN_BROWSER&&document&&(e=document.charset.toLowerCase());let s,r=0,n;if(n=t.length,"utf-8"===e||"utf8"===e)for(let e=0;e<n;e++)(s=t.codePointAt(e))<=127?r+=1:s<=2047?r+=2:s<=65535?r+=3:(r+=4,e++);else if("utf-16"===e||"utf16"===e)for(let e=0;e<n;e++)(s=t.codePointAt(e))<=65535?r+=2:(r+=4,e++);else r=t.replace(/[^\x00-\xff]/g,"aa").length;return r}(JSON.stringify(i));let r=i,n=null;if(11264<o){r=this._core.utils.deepCopyWithMethods(i);try{let{JsonMsgKey:e,PbMsgKey:t}=yield function(t){return h(this,void 0,void 0,function*(){var e=t["payload"]["messageList"],e={MsgList:g(e)};return M.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:e})})}(r),s=r["payload"];n=new 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){let t=e["errorCode"];throw new this._core.helper.ChatError({code:t})}})}downloadMergerMessage(a){return h(this,void 0,void 0,function*(){let r=this._core["ssoLog"],e=a.payload,{downloadKey:n,pbDownload:t,type:s}=e,o=function(e,t){var s={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(s[n[r]]=e[n[r]]);return s}(e,["downloadKey","pbDownload","type","messageList"]);try{let e=yield function(e){return h(this,void 0,void 0,function*(){return M.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:e}})})}(n),t=(e||{})["MsgList"],s=null==t?void 0:t.map(e=>{e=m(e);return new w(e)});return"function"==typeof a.isOnlineMessage?a.setElement({type:a.type,content:Object.assign({messageList:s},o)}):(a.payload.messageList=s,a.payload.downloadKey="",a.payload.pbDownloadKey=""),r.info("downloadMergerMessage"," success downloadKey:"+n),a}catch(e){let t=e["errorCode"];throw new this._core.helper.ChatError({functionName:"downloadMergerMessage",code:t,moreMessage:n})}})}},j=new class{init(e){this._core=e,this._core.helper.registerExperimentalAPI("sendComboMessage",this)}sendComboMessage(i){return h(this,void 0,void 0,function*(){let{appStore:t,message:e,common:{getCurrentUserID:s},utils:{isArray:r}}=this._core,{GroupId:n,To_Account:o}=i,a=(i.From_Account=i.From_Account||s(),null);if(n){a=this._generateGroupMessage(Object.assign(Object.assign({},i),{ToGroupId:n}));let e=t.userStore.getUserProfile(s());a.level=(null==e?void 0:e.level)||0,r(o)&&0<o.length&&(a._receiverList=o)}else o&&(a=this._generateC2CMessage(i));return e.messageSender.sendMessage(a,i)})}_generateC2CMessage(e){var{message:t,OuterConstant:{CONV_C2C:s}}=this._core,e=t.messageHelper.parseServerPushMessage(e),t=t.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:s,flow:n.OUT})),s=e["elements"];return t.setElement(s),t}_generateGroupMessage(e){var{message:t,OuterConstant:{CONV_GROUP:s}}=this._core,e=t.messageHelper.parseServerGroupMessage(e),t=t.messageFactory.createMessage(Object.assign(Object.assign({},e),{conversationType:s,flow:n.OUT})),s=e["elements"];return t.setElement(s),t}},W=new class{init(e){var{helper:e,notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{GROUP_MESSAGE_PINNED:r}}=this._core=e;t.subscribeInnerEvent(s,r,this._handleGroupMessagePinned,this),e.registerApi({apiName:"pinGroupMessage",context:this}),e.registerApi({apiName:"getPinnedGroupMessageList",context:this})}pinGroupMessage(n){return h(this,void 0,void 0,function*(){var{common:{},OuterConstant:{},helper:{ChatError:r}}=this._core,{groupID:e,message:t,isPinned:s}=n,t=t["sequence"];try{return yield function(a){return h(this,void 0,void 0,function*(){var{buildAndSendPacket:e,getCurrentUserID:t}=M.core["common"],{groupID:s,sequence:r,isPinned:n}=a,t=t(),o=n?"group_open_http_svc.pin_message":"group_open_http_svc.unpin_message",s={GroupId:s,MsgSeq:r};return n?s.Pinner_Account=t:s.UnPinner_Account=t,e({servcmd:o,data:s})})}({groupID:e,sequence:t,isPinned:s}),{code:0,data:{}}}catch(e){let{errorCode:t,errorInfo:s}=e||{};throw new r({code:t,message:s})}})}getPinnedGroupMessageList(r){return h(this,void 0,void 0,function*(){let t=[];try{var s=yield function(s){return h(this,void 0,void 0,function*(){var e=s["groupID"],{buildAndSendPacket:t}=M.core["common"];return t({servcmd:"group_open_http_svc.get_pinned_messages",data:{GroupId:e}})})}({groupID:r});if(s){let{PinnedMsgList:e=[]}=s;t=yield this._updatePinnedMessageInfo({serverPinnedMessageList:e,groupID:r})}return{code:0,data:{messageList:t}}}catch(e){throw e}})}_handleGroupMessagePinned(e){let{message:{messageHelper:u,messageFactory:l},notificationCenter:d,OuterEvent:g,OuterConstant:m}=this._core;e.GroupTips.forEach(e=>{var{ToGroupId:e,MsgBody:{PinnedMsg:t,OpType:s,MsgOperatorMemberExtraInfo:r,SdkGroupMessageId:o}}=e,{UserId:r,NickName:n="",ImageUrl:a=""}=r;let i=null,c=!1;if(16===s){c=!0;let e=u.parseServerGroupMessage(t);(i=l.createMessage(Object.assign(Object.assign({},e),{conversationType:m.CONV_GROUP,flow:"in"}))).setElement(e.elements),i.pinnerInfo={userID:r,nick:n,avatar:a}}else if(17===s){let{ClientTime:e,Random:t,SenderTinyId:s,ServerTime:r,MsgSeq:n}=o;i={ID:`${s}-${e}-`+t,sequence:n,random:t,time:r,clientTime:e}}i&&d.emitOuterEvent(g.PINNED_GROUP_MESSAGE_UPDATED,{name:g.PINNED_GROUP_MESSAGE_UPDATED,data:{groupID:e,message:i,isPinned:c,operatorInfo:{userID:r,nick:n,avatar:a}}})})}_findMessageBySequence(e,t){var{messageDataHandler:s}=this._core["message"];return[...s.getLocalMessageList(e),...s.getSparseMessageList(e)].find(e=>e.sequence===t)}_updatePinnedMessageInfo(e){return h(this,arguments,void 0,function*({serverPinnedMessageList:o,groupID:e}){let{OuterConstant:{CONV_GROUP:t},utils:{isEmpty:s}}=this._core,a=[],i=[],c=[],u=new Map,l=""+t+e;for(let n=0;n<o.length;n++){let e=o[n],{Pinner_Account:t,MsgSeq:s}=e,r=this._findMessageBySequence(l,s);i.push(t),u.set(s,t),r?a.push(r):c.push(s)}let r=yield this._fetchPinnedMessageInfo({conversationID:l,messageSequenceList:c,pinnerIDList:i});if(r){let{pinnerInfoMap:s,messageList:e}=r;return a.push(...e),a.forEach(e=>{var t=e["sequence"],t=u.get(t),t=s[t]||{userID:t,nick:"",avatar:""};e.pinnerInfo=t}),a.sort((e,t)=>e.sequence-t.sequence),a}return[]})}_fetchPinnedMessageInfo(o){return h(this,void 0,void 0,function*(){var{message:{},user:{userProfile:e},utils:{isArray:t}}=this._core,{conversationID:s,messageSequenceList:n,pinnerIDList:r}=o,s=yield Promise.all([this._fetchMessageBySequence({conversationID:s,messageSequenceList:n}),null==e?void 0:e.getUserProfile({userIDList:r})]);if(t(s)){let r={};return((null==(n=s[1])?void 0:n.data)||[]).forEach(e=>{var{userID:e,nick:t="",avatar:s=""}=e;r[e]={userID:e,nick:t,avatar:s}}),{messageList:(null==(e=s[0])?void 0:e.messageList)||[],pinnerInfoMap:r}}})}_fetchMessageBySequence(n){return h(this,void 0,void 0,function*(){var{utils:{isEmpty:e},message:{messageHistory:t}}=this._core,{conversationID:s,messageSequenceList:r}=n;return e(r)?[]:t.getGroupRoamingMessagesByAnchor({conversationID:s,messageSequenceList:r,getType:3})})}};return new class{constructor(){this.name="MessageEnhancer"}install(e){this._core=e,M.init(e),P.init(e),G.init(e),q.init(e),b.init(e),t.init(e),H.init(e),K.init(e),s.init(e),B.init(e),o.init(e),j.init(e),W.init(e),e.helper.registerValidateConfig({auth:D,params:R}),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.LOGOUT,this._reset,this),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.DESTROY,this.dispose,this)}dispose(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this.dispose,this),q.dispose(),b.dispose(),s.dispose(),o.dispose()}_reset(){b.reset()}}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t){var r={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(r[o[i]]=e[o[i]]);return r}function t(e,a,n,l){return new(n=n||Promise)(function(r,t){function i(e){try{s(l.next(e))}catch(e){t(e)}}function o(e){try{s(l.throw(e))}catch(e){t(e)}}function s(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(i,o)}s((l=l.apply(e,a||[])).next())})}var o=new class{constructor(){this._name="WebRequest"}init(e){this._core=e}request(m,g){return t(this,void 0,void 0,function*(){let e,t=(null==(e=this._core)?void 0:e.utils).isEmpty,{downloadUrl:r="",method:i="PUT",url:o,qs:s,headers:a={},resources:n,dataType:l="text",uploadByIP:h,uploadIP:d}=m,u=o;if(s){let e=this._queryString(s);e&&(u+=(u.includes("?")?"&":"?")+e)}let p=new XMLHttpRequest;p.open(i.toUpperCase(),u,!0),p.responseType=l;var c=Object.assign({},a);if(h&&d&&(c.host=d),!t(c))for(let e in c)c.hasOwnProperty(e)&&!["content-length","user-agent","origin","host"].includes(e.toLowerCase())&&p.setRequestHeader(e,c[e]);return p.onload=()=>{var e=this._getResponseBody(p,r,h&&d),e=this._buildResponse(p,e);if(200===p.status)g(null,e);else{if(d&&!u.includes(d))return m.url=this._domainName2IP(u,d),m.uploadByIP=!0,this.request(m,g);g({code:p.status,message:JSON.stringify(p.responseText)},e)}},p.onerror=()=>{var e=this._getResponseBody(p,r,h&&d),e=this._buildResponse(p,e),t={code:p.status,message:0===p.status?"CORS blocked or network error":JSON.stringify(p.responseText)};g(t,e)},m.onProgress&&p.upload&&(p.upload.onprogress=e=>{var{total:e,loaded:t}=e,r=Math.min(Math.floor(100*t/e),100);m.onProgress({total:e,loaded:t,percent:r/100})}),p.send(n),p})}_buildResponse(e,t){let r={};return e.getAllResponseHeaders().trim().split("\n").forEach(e=>{var t;e&&([e,t]=e.split(":").map(e=>e.trim()),r[e.toLowerCase()]=t)}),{statusCode:e.status,statusMessage:e.statusText,headers:r,data:t}}_getResponseBody(e,t,r){return 200===e.status&&t?{location:t,uploadIP:r}:{response:e.responseText,uploadIP:r}}_queryString(r,i="&",o="="){var{isEmpty:e,isPlainObject:t}=null==(e=this._core)?void 0:e.utils;return e(r)?"":t(r)?Object.keys(r).map(e=>{let t=encodeURIComponent(e)+o;return Array.isArray(r[e])?r[e].map(e=>t+encodeURIComponent(e)).join(i):t+encodeURIComponent(r[e])}).filter(Boolean).join(i):void 0}_domainName2IP(e,t){return e.replace(/^http(s)?:\/\/(.*?)\//,`https://${t}/`)}};let i=["unknown","image","video","audio","log"];var w,s=new class{init(e){this._core=e}request(o,t){let r,{MINI_APP_NAMESPACE:s,IN_ALIPAY_MINI_APP:a,IN_UNI_IOS_APP:n}=null==(r=this._core)?void 0:r.utils,{resources:l="",headers:h={},url:d,downloadUrl:u=""}=o,p=d,c=null;var m=u?u.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(m){var m=decodeURIComponent(m[3]),m=m.includes("?")?m.split("?")[0]:m||"",m={key:o.fileKey||m,success_action_status:200,"Content-Type":""},g={};if(n){let[e,t]=d.split("?sign=");t&&(p=e+"?sign="+encodeURIComponent(t),g.sign=decodeURIComponent(t),g.signature=decodeURIComponent(t))}let r={url:p,header:h,name:"file",filePath:l,formData:Object.assign(Object.assign({},m),g),timeout:o.timeout||3e5};if(a){let t=e(r,["name"]);r=Object.assign(Object.assign({},t),{fileName:"file",fileType:o.fileType?i[o.fileType]:"image"})}return(c=s.uploadFile(Object.assign(Object.assign({},r),{success:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})},fail:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})}}))).onProgressUpdate&&c.onProgressUpdate(e=>{o.onProgress&&o.onProgress({total:e.totalBytesExpectedToSend||0,loaded:e.totalBytesSent||0,percent:e.progress?Math.floor(e.progress)/100:0})}),c}console.warn("message Invalid download URL format")}_handleResponse(e){var{downloadUrl:e,response:t,callback:r}=e,i={};if(t.header)for(let e in t.header)t.header.hasOwnProperty(e)&&(i[e.toLowerCase()]=t.header[e]);var o=+t.statusCode;200==o?r(null,{statusCode:o,headers:i,data:Object.assign(Object.assign({},t.data),{location:e})}):r({code:o,message:JSON.stringify(t.data)},{statusCode:o,headers:i,data:void 0})}};function r(e){return"file"===Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()}function n(e){e=e||99999999;return Math.round(Math.random()*e)}function a(e,t=!0,r=!0){var i=Date.now();return t?r?i-e+" ms":Math.round((i-e)/1e3)+" s":r?i-e:Math.round((i-e)/1e3)}function l(e){return Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")+"-"+e}function d(e,t){return Math.round(Number(e)*10**t)/10**t}function h(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}function u(e){return e<=1048576?d(e/1024,1)+"KB/s":d(e/1048576,1)+"MB/s"}let c="TIMImageElem",p="TIMSoundElem",m="TIMFileElem",g="TIMVideoFileElem",f="RichMediaMessagePlugin",_=["rich.my-imcloud.com","imrich.qcloud.com"],v=1,I=2,y=3,U=255,P=(!function(e){e.UNSENT="unSend",e.SUCCESS="success",e.FAIL="fail"}(w=w||{}),{wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/});var S=new class{init(e){this._core=e}addAuthToUrl(e=""){return this._isMiniProgramTempFile(e)?e:(e=(e=e)?!e.startsWith("https://")&&e.startsWith("http://")?e.replace("http://","https://"):e:"",this.processResourceUrl(e))}removeAuthToUrl(r){{var[r,i]=r.split("?");if(!i)return r;let t=i.split("&").reduce((e,t)=>{var[t,r]=t.split("=");return t&&"authKey"!==t&&(e[t]=r||""),e},{}),e=Object.keys(t).map(e=>""+e+(t[e]?"="+t[e]:"")).join("&");return e?r+"?"+e:r}}_isMiniProgramTempFile(t){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(P).some(e=>e.test(t))}extractFileFromInput(e){var{isArray:t}=this._core["utils"];return r(e)?e:function(t){if("object"==typeof t&&null!==t){t=Object.getPrototypeOf(t);if(null===t)return 1;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return t===e}}(e)&&"undefined"!=typeof uni?t(e.tempFiles)&&0<e.tempFiles.length?e.tempFiles[0]:t(e.files)?e.files[0]:e.tempFile||null:e instanceof HTMLInputElement&&e.files&&0<e.files.length?e.files[0]:null}probeImageWidthHeight(r){return t(this,void 0,void 0,function*(){var{IN_MINI_APP:e,IN_BROWSER:t}=(null==(e=this._core)?void 0:e.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:t?this._probeImageDimensionsWeb(r):e?this._probeImageDimensionsMiniApp(r):void 0})}isSimpleCos(){var e=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["simple_cos"];return"0"!==e}getFileDNList(){let e,t=_;var r=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["file_dn_list"];if(void 0!==r)try{JSON.parse(r).forEach(e=>{t.includes(e)||t.push(e)})}catch(e){console.warn(e),t=_}return t}getPlatform(){var e;return null==(e=this._core)?void 0:e.utils.platform}generateUUID(e,t){let r,i=`${this.getSDKAppID()}-${this.getCurrentUserID()}-`+(null==(r=this._core)?void 0:r.utils.randomString());return t?i+"."+t:(e=(t=e.name||e.value||e.url||e.tempFilePath)&&t.slice(t.lastIndexOf(".")+1),i=e?i+"."+e:i)}processResourceUrl(e){if(!e)return"";let t=e;var r=this.getFileDownloadProxy(),i=this.getAuthKey(),o=this.getFileDNList(),e=(r&&(e.startsWith("http://")?t=e.replace(/^http:\/\/[^/]+/,r):e.startsWith("https://")&&(t=e.replace(/^https:\/\/[^/]+/,r))),i&&-1===t.indexOf("authKey=")&&function(e,t){let r=!1;if(e){var e=e.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),i=e&&e[2]||"";if(i.includes("rich-dev"))return!0;for(let e=0;e<t.length;e++)if(i.endsWith(t[e])){r=!0;break}}return r}(t,o));return t=e?-1<t.indexOf("?")?t+"&authKey="+i:t+"?authKey="+i:t}getCurrentUserID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.userId}getSDKAppID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.sdkAppId}getFileDownloadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileDownloadProxy)||""}getFileUploadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileUploadProxy)||""}getAuthKey(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.authKey)||""}isPrivateNetWork(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.proxyServer}getPlatformFlags(){var{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}=null==(e=this._core)?void 0:e.utils;return{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}}isEmpty(e){var t=(null==(t=this._core)?void 0:t.utils)["isEmpty"];return t(e)}_probeImageDimensionsMiniApp(e){let t,r=((null==(t=this._core)?void 0:t.utils)||{}).MINI_APP_NAMESPACE;return new Promise(t=>{r.getImageInfo({src:e,success:e=>t({width:e.width,height:e.height}),fail:()=>t({width:0,height:0})})})}_shouldSkipProbing(){var{IN_RN_APP:e,IS_IE:t,IE_VERSION:r}=(null==(e=this._core)?void 0:e.utils)||{};return e||t&&9===r}_probeImageDimensionsWeb(i){return new Promise(e=>{let t=new Image,r=()=>{t.onload=null,t.onerror=null,t.src=""};t.onload=()=>{e({width:t.width,height:t.height}),r()},t.onerror=()=>{e({width:0,height:0}),r()},t.src=i})}},F=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(e){var t=(this._core=e).utils["IN_MINI_APP"];this.httpRequest=t?s:o,null!=(t=this.httpRequest)&&t.init(e)}uploadToCOS(d){return t(this,void 0,void 0,function*(){let i=f+" uploadToCOS",{ssoLog:o,utils:{safeStringify:e}}=this._core,s=d["file"];this.uploadFileType=d.uploadFileType,o.debug("uploadToCOS",i+" options:"+e(d));try{let e=Date.now(),t=yield this._createCosOptions(d),r=yield this._uploadFile(t);this._handleUploadError(r,d);var a=this._createUploadResult(s,r),n=Date.now()-e,l=`size:${h(s.size)} time:${n}ms speed:`+u(1e3*s.size/n);return o.debug("uploadToCOS",i+` ok. name:${s.name} `+l),{uploadOptions:t,response:a}}catch(e){throw console.warn(i+" failed, error:",e),e}})}_handleUploadError(e,t){var r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(403===e.statusCode)throw a(Date.now(),!1),t.url,null!=(t=null==e?void 0:e.data)&&t.uploadIP&&e.data.uploadIP,new r({message:"Upload failed with status 403"})}_createUploadResult(e,t){return{fileName:e.name,fileSize:e.size,fileType:e.type.slice(e.type.indexOf("/")+1).toLowerCase(),location:t.data.location||"",uploadTime:a(Date.now(),!1),uploadSpeed:u(1e3*e.size/a(Date.now(),!1))}}_createCosOptions(p){return t(this,void 0,void 0,function*(){var{fileName:e,resources:t,uploadMethod:r}=this._prepareUploadParams(p),i=this._isC2CConversation(p.message.conversationID)?1:2;try{var o=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:e,uploadMethod:r,duration:this.duration,userID:p.message.from,conversationType:i}),{uploadUrl:s,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:h,fileKey:d}=o,u=!S.isPrivateNetWork()&&o.uploadIP;return{url:this._getRawOrUploadProxyUrl(s),fileType:this.uploadFileType,fileName:e,resources:t,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:h,fileKey:d,uploadIP:u||"",onProgress:e=>this._handleUploadProgress(e,p)}}catch(e){throw console.error("Failed to create COS pre-signed URL options:",e),e}})}_prepareUploadParams(e){var{ssoLog:t,utils:{safeStringify:r}}=this._core,t=(t.debug("_prepareUploadParams"," prepareUploadParams:"+r(e)),e)["file"],{IN_MINI_APP:r,IN_RN_APP:i}=S.getPlatformFlags(),r=r||i,i=r&&e.message.type!==m,e=t["name"],e=e.slice(e.lastIndexOf(".")),e=""+n(999999)+e;return{fileName:l(i?t.name:e),resources:r?t.url:t,uploadMethod:r?1:0}}_handleUploadProgress(e,t){if("function"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){throw console.warn("Upload progress callback error:",e),e}}_fetchCosSignatureUrl(l){return t(this,void 0,void 0,function*(){var{ssoLog:r,utils:{safeStringify:i}}=this._core,o=S.isSimpleCos(),s=this._prepareCosRequestData(l),a=o?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{let e=yield function(o,s,a){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=a,r=e.generateCosSpecifiedData({servcmd:o,data:s}),i=r.head.seq+o;return yield t.sendPacket(r,{requestId:i})}catch(e){throw console.warn("getCosSig error:",e),e}})}(a,s,this._core);this.fetchCosTryCount=0;var n=this._processResponse(e);return r.debug("_fetchCosSignatureUrl",` ok. isSimpleCos:${o} data:`+i(n)),n||{}}catch(e){if(this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(l);throw this.fetchCosTryCount=0,e}})}_processResponse(e){var t;let r=S.isSimpleCos(),l=r?null==(t=null==e?void 0:e.rpt_pre_sig)?void 0:t[0]:e;if(!l)return{};if(r){let{str_final_ip:e,rpt_pre_sig:t,uint32_file_id:r,uint32_exist_flag:i,str_download_url:o,str_upload_url:s,str_snapshot_url:a,str_file_key:n}=l;return{uploadIP:e,preSig:t,fileID:r,existFlag:i,downloadUrl:o,uploadUrl:s,requestSnapshotUrl:a,fileKey:n}}let{upload_url:i,download_url:o,snapshot_url:s,thumb_url:a,large_url:n,file_key:h}=l;return{uploadUrl:i,downloadUrl:o,requestSnapshotUrl:s,thumbUrl:a,largeUrl:n,fileKey:h}}_prepareCosRequestData(e){return S.isSimpleCos()?{uint32_upload_method:e.uploadMethod,uint32_platform:S.getPlatform(),uint32_sdkappid:S.getSDKAppID(),str_user_id:e.userID,uint32_scene:e.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:e.fileType,str_file_name:e.fileName}]}:{file_type:e.fileType,file_name:e.fileName,upload_method:e.uploadMethod,Duration:e.duration}}_uploadFile(o){return t(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.httpRequest.request(o,(e,t)=>{e&&this.uploadFileTryCount<this.maxRetries&&this.shouldRetry(e)?(this.uploadFileTryCount++,this._uploadFile(o).then(r).catch(i)):(this.uploadFileTryCount=0,e?i(e):r(t))})})})}shouldRetry(e){return!(!e||5!==Math.floor(e.statusCode/100)&&(!this.isTimeRelatedError(e)||!this._isClockOutOfSync(e)||(this._syncSystemClock(e),0)))}isTimeRelatedError(e){var t,r;try{var i=null==(t=e.error)?void 0:t.Code,o=null==(r=e.error)?void 0:r.Message;return"RequestTimeTooSkewed"===i||"AccessDenied"===i&&"Request has expired"===o}catch(e){return!1}}_isClockOutOfSync(e){var t,e=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);return!!e&&(t=Date.now(),e=Date.parse(e),3e4<=Math.abs(t+this.systemClockOffset-e))}_syncSystemClock(e){var t,r=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);if(r){let e=Date.now(),t=Date.parse(r);this.systemClockOffset=t-e}}_getRawOrUploadProxyUrl(e){var t=S.getFileUploadProxy();let r=e;return r=t?e.replace(/^https:\/\/[^/]+/,t):r}_isC2CConversation(e){return"C2C"===e.slice(0,3)}};let b=2108,M=2251,A=2252,O=["jpg","jpeg","gif","png","bmp","image","webp"],T=20971520,C={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255};class N{constructor(e,t){this.instanceID=n(9999999),this.sizeType=e.type||0,this.type=0,this.size=e.size||0,this.width=e.width||0,this.height=e.height||0,this.imageUrl=S.addAuthToUrl(e.imageUrl||e.url||""),this.url=S.addAuthToUrl(e.url||t)}setSizeType(e){this.sizeType=e}setType(e){this.type=e}setImageUrl(e){e&&(this.imageUrl=S.addAuthToUrl(e))}getImageUrl(){return this.imageUrl}}function E(t){var{originUrl:t,originWidth:r,originHeight:i,min:o=198}=t,r=parseInt(r)||0,i=parseInt(i)||0,s={url:void 0,width:0,height:0};if((r<=i?r:i)<=o)s.url=t,s.width=r,s.height=i;else{i<=r?(s.width=Math.ceil(r*o/i),s.height=o):(s.width=o,s.height=Math.ceil(i*o/r));let e=t&&-1<t.indexOf("?")?t+"&":t+"?";s.url=198===o?e+"imageView2/3/w/198/h/198":e+"imageView2/3/w/720/h/720"}return void 0===t?e(s,["url"]):s}class D{constructor(e){this._imageMemoryURL="",this._percent=0,this.type=c;var{uuid:e,file:t,imageFormat:r,imageInfoArray:i=[]}=e;this._imageMemoryURL=this.createImageDataAsURL(t),this.content={imageFormat:r,uuid:e,imageInfoArray:[]},this.initImageInfoArray(i),this.autoFixUrl()}static parseServerPushElement(e){let t=e["MsgContent"],{ImageFormat:r,ImageInfoArray:i,UUID:o}=t,s=i.map(e=>({size:e.Size,type:e.Type,width:e.Width,height:e.Height,url:e.URL}));return new D({imageFormat:r,imageInfoArray:s,uuid:o})}createImageDataAsURL(e){let t="";var{IN_MINI_APP:r,IN_RN_APP:i,IN_BROWSER:o}=S.getPlatformFlags();return t=e&&((r||i)&&(t=e.url),o)?window.URL.createObjectURL(e):t}initImageInfoArray(t=[]){var r={type:0,size:0,width:0,height:0,url:""};for(let e=0;e<3;e++){var i=t[e]||Object.assign({},r),i=new N(i,this._imageMemoryURL);i.setSizeType(e+1),i.setType(e),this.addImageInfo(i)}this.updateAccessSideImageInfoArray()}autoFixUrl(){let i=["http","https"];this.content.imageInfoArray.forEach(e=>{var t,r;e.url&&""!==e.imageUrl&&([t,...r]=e.imageUrl.split("://"),r=r.join("://"),i.includes(t)||e.setImageUrl("https://"+r))})}updatePercent(e){this._percent=Math.min(e,1)}updateImageFormat(e){this.content.imageFormat=C[e.toUpperCase()]||C.UNKNOWN}addImageInfo(e){3<=this.content.imageInfoArray.length||this.content.imageInfoArray.push(e)}updateImageInfoArray(t){var r,i=this.content.imageInfoArray.length;for(let e=0;e<i;e++)r=this.content.imageInfoArray[e],t[e].size&&(r.size=t[e].size),t[e].url&&r.setImageUrl(t[e].url),t[e].width&&(r.width=t[e].width),t[e].height&&(r.height=t[e].height)}updateAccessSideImageInfoArray(){var[e]=this.content.imageInfoArray;if(e&&0!==e.width&&0!==e.height){var t=this.content.imageInfoArray,r=t[2];t[2]=t[1],t[1]=r;for(let e=0;e<t.length;e++)t[e].setType(e);Object.assign(this.content.imageInfoArray[2],E({originWidth:e.width,originHeight:e.height,min:720}))}}validateBeforeSend(){var[e]=this.content.imageInfoArray,e=!!e&&""!==e.imageUrl&&0!==e.size;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,imageFormat:t,imageInfoArray:r}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{ImageFormat:t,ImageInfoArray:this.parseImageInfoArray(r),UUID:e}}}parseImageInfoArray(e){return e.map(e=>({InstanceId:e.instanceID,Type:e.sizeType,MsgType:e.type,Size:e.size,Width:e.width,Height:e.height,URL:S.removeAuthToUrl(e.imageUrl)}))}}var R=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createImageMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(c,D),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createImageMessage(e){var t,r,i;try{var o=null==(t=this._core.store.get("login"))?void 0:t.userId,s=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:o})),a=this._processImage(e),n=(e.payload.file=a,{imageFormat:C.UNKNOWN,uuid:S.generateUUID(a),file:a,imageInfoArray:[]}),l=new D(n);return s.setElement(l),this._messageOptionsMap.set(s.clientSequence,e),s}catch(e){throw e}}upload(i){return t(this,void 0,void 0,function*(){var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadImage(t),yield this._performImageUpload(e,i,t)),r=this._generateImageInfo(t);return e.updateImageFormat(null==t?void 0:t.fileType),e.updateImageInfoArray(r),i})}_performImageUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:v,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{uploadOptions:e,response:t}=yield F.uploadToCOS(e);return this._parseResponse(e,t)})}_generateImageInfo(e){var{location:e,fileSize:t,width:r,height:i,smallImageUrl:o,smallImageWidth:s,smallImageHeight:a,largeImageUrl:n,largeImageWidth:l,largeImageHeight:h,imageInfoArray:d}=e,e=S.addAuthToUrl(e),u={size:t,url:e,width:r,height:i};return 0<(null==d?void 0:d.length)?this._processImageInfoArray(d,t):o&&n?[Object.assign({},u),{largeImageUrl:n,largeImageWidth:l,largeImageHeight:h},{smallImageUrl:o,smallImageWidth:s,smallImageHeight:a}]:[Object.assign({},u),this._generateThumbInfo(e,r,i,720),this._generateThumbInfo(e,r,i,198)]}_generateThumbInfo(e,t,r,i){return E({originUrl:e,originWidth:t,originHeight:r,min:i})}_processImageInfoArray(e,t){let r,i,o;for(var s of e)1===s.type?(i=s,i.size=t):2===s.type?(o=s,o.size=t):(r=s,r.size=t);return[Object.assign({},r),Object.assign({},o),Object.assign({},i)]}_parseResponse(i,o){return t(this,void 0,void 0,function*(){try{var{thumbUrl:e,largeUrl:t,downloadUrl:r}=i;if(e&&t&&(yield this._getImageInfoByUrl(e,o,"thumb"),yield this._getImageInfoByUrl(t,o,"large")),S.isSimpleCos()&&!S.isPrivateNetWork()&&(yield this._getImageInfoArray(r,o),null!=o)&&o.uploadIP){let e=this._extractDomainFromUrl(r);e&&(yield this._getDownloadIP(e,o))}return o}catch(e){throw e}})}_extractDomainFromUrl(t){var e;try{let e=t.match(/:\/\/([^\/]+)/);return e?e[1]:null}catch(t){return null!=(e=this._core)&&e.ssoLog.warn("_extractDomainFromUrl","Failed to extract domain from URL:"+t.message),null}}_getImageInfoByUrl(i,o,s){return t(this,void 0,void 0,function*(){var t;try{let e=S.addAuthToUrl(i),{width:t=0,height:r=0}=yield S.probeImageWidthHeight(e);o.width=t,o.height=r,"thumb"===s?(o.smallImageUrl=i,o.smallImageWidth=t,o.smallImageHeight=r):(o.largeImageUrl=i,o.largeImageWidth=t,o.largeImageHeight=r)}catch(e){null!=(t=this._core)&&t.ssoLog.warn("_getImageInfoByUrl",`Failed to get ${s} image info:`+e.message)}})}_validateBeforeUploadImage(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:M});this._checkImageType(e),this._checkImageSize(e)}_processImage(e){var t;try{var r=(null==(t=this._core)?void 0:t.utils)["IN_MINI_APP"],i=e.payload["file"];return r?this._processMiniAppImageFile(i):this._processWebImageFile(i)}catch(e){throw e}}_processMiniAppImageFile(e){r(e)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");var t=e.tempFiles[0].path||e.tempFiles[0].tempFilePath;return{url:t,name:t.slice(t.lastIndexOf("/")+1),size:e.tempFiles&&e.tempFiles[0].size||1,type:t.slice(t.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"],e=S.extractFileFromInput(e);if(e)return e;throw new t({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}_getDownloadIP(o,s){return t(this,void 0,void 0,function*(){var e=f+" getDownloadIP domainName: "+o;try{var r,i=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_final_ip",i={str_domain:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getFinalIP error:",e),e}})}(o,this._core);i&&i.str_final_ip&&(console.log(e+" ok. downloadIP:"+i),(r=s.location.split("/"))[0]=i.str_final_ip,s.location=r.join("/"))}catch(e){console.warn(e)}})}_getImageInfoArray(r,i){return t(this,void 0,void 0,function*(){try{var e=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_imageinfo",i={str_image_url:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getImageInfo error:",e),e}})}(r,this._core);return i.imageInfoArray=this._processImageInfoResponse(e),i}catch(e){throw i.imageInfoArray=void 0,e}})}_processImageInfoResponse(e){return e?(e=e["rpt_msg_image_info"],e.map(e=>({type:e.uint32_image_type,url:e.str_url,width:e.uint32_width,height:e.uint32_height,imageFormat:e.str_image_format}))):[]}_checkImageType(e){var{utils:t,helper:r}=this._core;let i="";if(t.IN_MINI_APP&&(i=e.url.slice(e.url.lastIndexOf(".")+1)),t.IN_BROWSER&&(i=e.name.slice(e.name.lastIndexOf(".")+1)),O.indexOf(i.toLowerCase())<0)throw new r.ChatError({code:A})}_checkImageSize(e){var{utils:t,helper:r}=this._core,i=0;if(t.IN_MINI_APP,0===(i=e.size))throw new r.ChatError({code:b});if(i>=T)throw new r.ChatError({message:"File size exceeds limit: "+h(T)})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let z=2108,$=2401,x="2.5.0",W="1.18.0",j=104857600;function q(e,t){let i=e.split("."),o=t.split("."),s=Math.max(i.length,o.length);for(;i.length<s;)i.push("0");for(;o.length<s;)o.push("0");for(let r=0;r<s;r++){let e=parseInt(i[r]),t=parseInt(o[r]);if(e>t)return 1;if(e<t)return-1}return 0}let V=new class{init(e){this.core=e}};class B{constructor(e){this.type=m,this.uploadProgress=0;var t=this._getFileInfo(e);this.content={downloadFlag:2,fileUrl:S.addAuthToUrl(e.url||e.fileUrl)||"",uuid:e.uuid,fileName:t.name||"",fileSize:t.size||0}}static parseServerPushElement(e){var e=e["MsgContent"],{Download_Flag:e,Url:t,FileName:r,FileSize:i,UUID:o}=e;return new B({downloadFlag:e,url:t,fileName:r,fileSize:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateFileUrl(e){this.content.fileUrl=e}validateBeforeSend(){var e=""!==this.content.fileUrl&&""!==this.content.fileName&&0<this.content.fileSize;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,fileUrl:r,fileName:i,fileSize:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Download_Flag:t,Url:S.removeAuthToUrl(r),FileName:i,FileSize:o,UUID:e}}}_getFileInfo(e){var t=V.core["utils"]["IN_UNI_NATIVE_APP"];return e.fileName&&e.fileSize?{size:e.fileSize,name:e.fileName}:(e=e["file"],e?(t&&this._processNativeAppFile(e),{size:e.size,name:e.name}):{size:0,name:""})}_processNativeAppFile(e){var t;e.path&&e.path.includes(".")&&(t=e.path.slice(e.path.lastIndexOf(".")+1).toLowerCase(),e.type=t,e.name||(e.name=n(999999)+"."+t)),e.name||(e.type="",e.name=e.path.slice(e.path.lastIndexOf("/")+1).toLowerCase()),e.suffix&&(e.type=e.suffix),e.url||(e.url=e.path)}}var L=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createFileMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(m,B),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createFileMessage(e){var t,r,i;try{this._checkVersion();var o=this._processFile(e.payload.file),s=(e.payload.file=o,null==(t=this._core.store.get("login"))?void 0:t.userId),a=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:s})),n={uuid:S.generateUUID(o),file:o},l=new B(n);return a.setElement(l),this._messageOptionsMap.set(a.clientSequence,e),a}catch(e){throw e}}upload(r){return t(this,void 0,void 0,function*(){var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadFile(e),r.getElements()[0]),e=yield this._performFileUpload(t,r,e),e=S.addAuthToUrl(null==e?void 0:e.location);return t.updateFileUrl(e),r})}_validateBeforeUploadFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:$});if(e.size>j)throw new t({message:"File size exceeds limit: "+h(j)});if(0===e.size)throw new t({code:z})}_performFileUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:U,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield F.uploadToCOS(e))["response"];return e})}_processFile(t){var{IN_BROWSER:e,IN_RN_APP:r,IN_WX_MINI_APP:i,IN_QQ_MINI_APP:o,IN_UNI_NATIVE_APP:s}=null==(e=this._core)?void 0:e.utils,a=(null==(a=this._core)?void 0:a.helper)["ChatError"];if(e||s){let e=S.extractFileFromInput(t);if(e)return e;throw new a({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}if(i||o){let e=t["tempFiles"];return Object.assign(Object.assign({},e[0]),{url:e[0].path})}return r?Object.assign(Object.assign({},t),{url:t.uri}):t}_checkVersion(){var{MINI_APP_NAMESPACE:t,IN_MINI_APP:e,IN_WX_MINI_APP:r,IN_QQ_MINI_APP:i,IN_UNI_NATIVE_APP:o}=null==(e=this._core)?void 0:e.utils,s=(null==(s=this._core)?void 0:s.helper)["ChatError"];if(e){if(!(r||i||o))throw new s({message:"Unsupported mini app environment"});let e=t.getSystemInfoSync().SDKVersion;if(r&&q(e,x)<0)throw new s({message:`WXChooseMessageFile requires SDK version ${x} or higher`});if(i&&q(e,W)<0)throw new s({message:`QQChooseMessageFile requires SDK version ${W} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let k=2108,H=2352,K=["mp4","quicktime","mov"],Y=104857600;class G{constructor(e){this.type=g,this.uploadProgress=0;var t="number"==typeof(null==e?void 0:e.videoSecond)?null==e?void 0:e.videoSecond:0;this.content={remoteVideoUrl:S.addAuthToUrl(e.remoteVideoUrl||e.videoUrl||""),videoFormat:e.videoFormat,videoSecond:parseInt(null==t?void 0:t.toString(),10),videoSize:e.videoSize,videoUrl:S.addAuthToUrl(e.videoUrl),videoDownloadFlag:2,videoUUID:e.videoUUID,thumbUUID:e.thumbUUID,thumbFormat:e.thumbFormat,thumbWidth:e.thumbWidth,snapshotWidth:e.thumbWidth,thumbHeight:e.thumbHeight,snapshotHeight:e.thumbHeight,thumbSize:e.thumbSize,snapshotSize:e.thumbSize,thumbDownloadFlag:2,thumbUrl:S.addAuthToUrl(e.thumbUrl),snapshotUrl:S.addAuthToUrl(e.thumbUrl)}}static parseServerPushElement(e){var e=e["MsgContent"],{VideoUrl:e,VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:h,ThumbHeight:d,SnapshotHeight:u,ThumbSize:p,SnapshotSize:c,ThumbDownloadFlag:m,ThumbUrl:g,SnapshotUrl:_}=e;return new G({videoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:h,thumbHeight:d,snapshotHeight:u,thumbSize:p,snapshotSize:c,thumbDownloadFlag:m,thumbUrl:g,snapshotUrl:_})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateVideoUrl(e){e&&(this.content.remoteVideoUrl=e)}updateSnapshotInfo(e){var{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r}=e;S.isEmpty(e)||(this.content.thumbUrl=this.content.snapshotUrl=e),S.isEmpty(t)||(this.content.thumbWidth=this.content.snapshotWidth=Number(t)),S.isEmpty(r)||(this.content.thumbHeight=this.content.snapshotHeight=Number(r))}validateBeforeSend(){var e=""!==this.content.remoteVideoUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{remoteVideoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:h,thumbHeight:d,snapshotHeight:u,thumbSize:p,snapshotSize:c,thumbDownloadFlag:m,thumbUrl:g,snapshotUrl:_}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{VideoUrl:S.removeAuthToUrl(e),VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:h,ThumbHeight:d,SnapshotHeight:u,ThumbSize:p,SnapshotSize:c,ThumbDownloadFlag:m,ThumbUrl:S.removeAuthToUrl(g),SnapshotUrl:S.removeAuthToUrl(_)}}}}var J=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createVideoMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(g,G),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createVideoMessage(e){var t,r,i;try{var o=this._processVideo(e),s=(e.payload.file=o,null==(t=this._core.store.get("login"))?void 0:t.userId),a=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:s})),n={videoFormat:o.videoFile.type,videoSecond:d(o.videoFile.second,0),videoSize:o.videoFile.size,remoteVideoUrl:"",videoUrl:o.videoFile.url,videoUUID:S.generateUUID(o.videoFile),thumbUUID:S.generateUUID(o.videoFile,"jpg"),thumbWidth:o.width||200,thumbHeight:o.height||200,thumbUrl:o.thumbUrl,thumbSize:o.thumbSize,thumbFormat:"jpg"},l=new G(n);return a.setElement(l),this._messageOptionsMap.set(a.clientSequence,e),a}catch(e){throw e}}upload(i){return t(this,void 0,void 0,function*(){var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadVideo(t),yield this._performVideoUpload(e,i,t)),{location:t,snapshotInfo:r}=t,t=S.addAuthToUrl(t);return e.updateVideoUrl(t),S.isEmpty(r)||e.updateSnapshotInfo(r),i})}_validateBeforeUploadVideo(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(e.videoFile.size>Y)throw new t({message:"File size exceeds limit: "+h(Y)});if(0===e.videoFile.size)throw new t({code:k});if(-1===K.indexOf(e.videoFile.type))throw new t({code:H})}_performVideoUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:I,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{response:e,uploadOptions:t}=yield F.uploadToCOS(e);return{snapshotInfo:yield this._getSnapshotInfoByUrl(t.requestSnapshotUrl),location:e.location}})}_processVideo(e){var i,o;try{var s=(null==(i=this._core)?void 0:i.helper)["ChatError"],{IN_MINI_APP:a,IN_BROWSER:n}=null==(o=this._core)?void 0:o.utils;let t=e.payload["file"],r={};if(a&&(r=this._processMiniVideoFile(t),t.name=r.name,t.url=r.url,t.type=r.type),n){let e=S.extractFileFromInput(t);if(!e)throw new s({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});t=e,r=this._processWebVideoFile(t)}return t.videoFile=r,t.thumbUrl="",t.thumbSize=0,t}catch(e){throw console.warn(f+" _processFile error:",e),e}}_processMiniVideoFile(e){var{IN_ALIPAY_MINI_APP:t,IN_UNI_NATIVE_APP:i}=null==(t=this._core)?void 0:t.utils,o=(null==(o=this._core)?void 0:o.helper)["ChatError"];if(t)throw new o({message:"VideoUnsupportedInAlipay"});if(r(e))throw new o({message:"FileUnsupportedInMiniApp"});let s=(e=Array.isArray(e.tempFiles)?e.tempFiles[0]:e).tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase();return i&&(s=e.fileType||s),{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.size||1,second:e.duration||0,type:s}}_processWebVideoFile(e){var{name:t,size:r=1,duration:i=0,type:o}=e,o=o.split("/")[1];return{url:window.URL.createObjectURL(e),name:t,size:r,second:i,type:o}}_getSnapshotInfoByUrl(a){return t(this,void 0,void 0,function*(){var e=this._core["ssoLog"];try{e.debug("_getSnapshotInfoByUrl",f+" _getSnapshotInfoByUrl url:"+a);var r,i,o,s=((yield function(s,a){return t(this,void 0,void 0,function*(){try{var e="im_cos_msg.video_cover",{helper:t,channel:r}=a,i=t.generateCosSpecifiedData({servcmd:e,data:s}),o=i.head.seq+e;return yield r.sendPacket(i,{requestId:o})}catch(e){throw console.warn("getSnapshotInfo error:",e),e}})}({version:1,platform:S.getPlatform(),cover_name:l(n(99999)),snapshot_url:a},this._core))||{})["download_url"];return(e.debug("_getSnapshotInfoByUrl",f+" _getSnapshotInfoByUrl OK snapshotUrl:"+s),S.isEmpty(s))?{}:(r=S.addAuthToUrl(s),{width:i=0,height:o=0}=yield S.probeImageWidthHeight(r),{snapshotUrl:r,snapshotWidth:i,snapshotHeight:o})}catch(e){throw e}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};class Q{constructor(e){this.uploadProgress=0,this.type=p,this.content={downloadFlag:2,second:e.second,size:e.size,url:S.addAuthToUrl(e.url),remoteAudioUrl:S.addAuthToUrl(e.url||""),uuid:e.uuid}}static parseServerPushElement(e){var e=e["MsgContent"],{Url:e,Download_Flag:t,Second:r,Size:i,UUID:o}=e;return new Q({url:e,downloadFlag:t,second:r,size:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateAudioUrl(e){this.content.remoteAudioUrl=e}validateBeforeSend(){var e=""!==this.content.remoteAudioUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,remoteAudioUrl:r,size:i,second:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Url:S.removeAuthToUrl(r),Download_Flag:t,Second:o,Size:i,UUID:e}}}}let X=2108,Z=2300,ee=20971520;var te=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createAudioMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(p,Q),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createAudioMessage(e){var t,r,i;try{var o=e.payload["file"],o=this._processAudioFile(e.payload.file),s=(e.payload.file=o,null==(t=this._core.store.get("login"))?void 0:t.userId),a=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:s})),n={second:Math.floor((o.duration||o.second)/1e3),size:o.fileSize||o.size||1,url:o.tempFilePath||o.uri||o.url,uuid:S.generateUUID(o)},l=new Q(n);return a.setElement(l),this._messageOptionsMap.set(a.clientSequence,e),a}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}}upload(r){return t(this,void 0,void 0,function*(){var{ssoLog:e,utils:{safeStringify:t}}=this._core,e=(e.debug("upload",f+" uploadAudio message:"+t(r)),this._messageOptionsMap.get(r.clientSequence).payload)["file"],t=(this._validateBeforeUploadAudio(e),r.getElements()[0]),e=yield this._performAudioUpload(t,r,e),e=S.addAuthToUrl(null==e?void 0:e.location);return t.updateAudioUrl(e),r})}_validateBeforeUploadAudio(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:Z});if(e.size>ee)throw new t({message:"File size exceeds limit: "+h(ee)});if(0===e.size)throw new t({code:X})}_performAudioUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:y,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield F.uploadToCOS(e))["response"];return e})}_processAudioFile(e){var{IN_MINI_APP:t,IN_BROWSER:r}=null==(t=this._core)?void 0:t.utils;return t?this._processMiniFile(e):r?this._processWebFile(e):void 0}_processMiniFile(e){return{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.fileSize,second:e.duration,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(e){var t;return e.tempFilePath||e.uri||(t=URL.createObjectURL(e),e.tempFilePath=t),e}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let oe={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},ie={createImageMessage:oe,createAudioMessage:oe,createVideoMessage:oe,createFileMessage:oe},se={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},re={[c]:R,[m]:L,[g]:J,[p]:te};var ne=new class{constructor(){this.name="RichMediaMessage"}install(e){let{OuterConstant:{MSG_AUDIO:t,MSG_FILE:r,MSG_IMAGE:i,MSG_VIDEO:o}}=(this._core=e)["constants"];V.init(e),R.init(e),L.init(e),J.init(e),te.init(e),F.init(e),S.init(e),e.helper.registerApi({apiName:"sendMessage",context:this,matcher:e=>[t,r,i,o].includes(e[0].type)}),e.helper.registerValidateConfig({auth:se,params:ie})}sendMessage(i,o){return t(this,void 0,void 0,function*(){var e,t,r;try{return yield this._upload(i),yield null==(r=null==(t=null==(e=this._core)?void 0:e.message)?void 0:t.messageSender)?void 0:r.sendMessage(i,o)}catch(e){let t=e["errorCode"];throw new this._core.helper.ChatError({functionName:"sendMessage",code:t})}})}_upload(r){return t(this,void 0,void 0,function*(){let{ssoLog:t,utils:{safeStringify:e}}=this._core;if(t.debug("_upload"," uploadFile message:"+e(r)),!0!==r._relayFlag)try{let e=re[r.type];e&&(yield e.upload(r),t.info("_upload"," type:"+r.type))}catch(t){throw r.status=w.FAIL,t instanceof Error&&(t.data={message:r}),this._core.message.messageDataHandler.storeConversationMessage(r),t}})}};export{ne as default};
|
|
1
|
+
function e(e,t){var r={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(r[o[i]]=e[o[i]]);return r}function t(e,a,n,l){return new(n=n||Promise)(function(r,t){function i(e){try{s(l.next(e))}catch(e){t(e)}}function o(e){try{s(l.throw(e))}catch(e){t(e)}}function s(e){var t;e.done?r(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(i,o)}s((l=l.apply(e,a||[])).next())})}var o=new class{constructor(){this._name="WebRequest"}init(e){this._core=e}request(m,g){return t(this,void 0,void 0,function*(){let e,t=(null==(e=this._core)?void 0:e.utils).isEmpty,{downloadUrl:r="",method:i="PUT",url:o,qs:s,headers:a={},resources:n,dataType:l="text",uploadByIP:h,uploadIP:d}=m,u=o;if(s){let e=this._queryString(s);e&&(u+=(u.includes("?")?"&":"?")+e)}let p=new XMLHttpRequest;p.open(i.toUpperCase(),u,!0),p.responseType=l;var c=Object.assign({},a);if(h&&d&&(c.host=d),!t(c))for(let e in c)c.hasOwnProperty(e)&&!["content-length","user-agent","origin","host"].includes(e.toLowerCase())&&p.setRequestHeader(e,c[e]);return p.onload=()=>{var e=this._getResponseBody(p,r,h&&d),e=this._buildResponse(p,e);if(200===p.status)g(null,e);else{if(d&&!u.includes(d))return m.url=this._domainName2IP(u,d),m.uploadByIP=!0,this.request(m,g);g({code:p.status,message:JSON.stringify(p.responseText)},e)}},p.onerror=()=>{var e=this._getResponseBody(p,r,h&&d),e=this._buildResponse(p,e),t={code:p.status,message:0===p.status?"CORS blocked or network error":JSON.stringify(p.responseText)};g(t,e)},m.onProgress&&p.upload&&(p.upload.onprogress=e=>{var{total:e,loaded:t}=e,r=Math.min(Math.floor(100*t/e),100);m.onProgress({total:e,loaded:t,percent:r/100})}),p.send(n),p})}_buildResponse(e,t){let r={};return e.getAllResponseHeaders().trim().split("\n").forEach(e=>{var t;e&&([e,t]=e.split(":").map(e=>e.trim()),r[e.toLowerCase()]=t)}),{statusCode:e.status,statusMessage:e.statusText,headers:r,data:t}}_getResponseBody(e,t,r){return 200===e.status&&t?{location:t,uploadIP:r}:{response:e.responseText,uploadIP:r}}_queryString(r,i="&",o="="){var{isEmpty:e,isPlainObject:t}=null==(e=this._core)?void 0:e.utils;return e(r)?"":t(r)?Object.keys(r).map(e=>{let t=encodeURIComponent(e)+o;return Array.isArray(r[e])?r[e].map(e=>t+encodeURIComponent(e)).join(i):t+encodeURIComponent(r[e])}).filter(Boolean).join(i):void 0}_domainName2IP(e,t){return e.replace(/^http(s)?:\/\/(.*?)\//,`https://${t}/`)}};let i=["unknown","image","video","audio","log"];var w,s=new class{init(e){this._core=e}request(o,t){let r,{MINI_APP_NAMESPACE:s,IN_ALIPAY_MINI_APP:a,IN_UNI_IOS_APP:n}=null==(r=this._core)?void 0:r.utils,{resources:l="",headers:h={},url:d,downloadUrl:u=""}=o,p=d,c=null;var m=u?u.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(m){var m=decodeURIComponent(m[3]),m=m.includes("?")?m.split("?")[0]:m||"",m={key:o.fileKey||m,success_action_status:200,"Content-Type":""},g={};if(n){let[e,t]=d.split("?sign=");t&&(p=e+"?sign="+encodeURIComponent(t),g.sign=decodeURIComponent(t),g.signature=decodeURIComponent(t))}let r={url:p,header:h,name:"file",filePath:l,formData:Object.assign(Object.assign({},m),g),timeout:o.timeout||3e5};if(a){let t=e(r,["name"]);r=Object.assign(Object.assign({},t),{fileName:"file",fileType:o.fileType?i[o.fileType]:"image"})}return(c=s.uploadFile(Object.assign(Object.assign({},r),{success:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})},fail:e=>{this._handleResponse({response:e,downloadUrl:u,callback:t})}}))).onProgressUpdate&&c.onProgressUpdate(e=>{o.onProgress&&o.onProgress({total:e.totalBytesExpectedToSend||0,loaded:e.totalBytesSent||0,percent:e.progress?Math.floor(e.progress)/100:0})}),c}console.warn("message Invalid download URL format")}_handleResponse(e){var{downloadUrl:e,response:t,callback:r}=e,i={};if(t.header)for(let e in t.header)t.header.hasOwnProperty(e)&&(i[e.toLowerCase()]=t.header[e]);var o=+t.statusCode;200==o?r(null,{statusCode:o,headers:i,data:Object.assign(Object.assign({},t.data),{location:e})}):r({code:o,message:JSON.stringify(t.data)},{statusCode:o,headers:i,data:void 0})}};function r(e){return"file"===Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()}function n(e){e=e||99999999;return Math.round(Math.random()*e)}function a(e,t=!0,r=!0){var i=Date.now();return t?r?i-e+" ms":Math.round((i-e)/1e3)+" s":r?i-e:Math.round((i-e)/1e3)}function l(e){return Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")+"-"+e}function d(e,t){return Math.round(Number(e)*10**t)/10**t}function u(e){return e<1024?e+"B":e<1048576?Math.floor(e/1024)+"KB":Math.floor(e/1048576)+"MB"}function h(e){return e<=1048576?d(e/1024,1)+"KB/s":d(e/1048576,1)+"MB/s"}let c="TIMImageElem",p="TIMSoundElem",m="TIMFileElem",g="TIMVideoFileElem",f="RichMediaMessagePlugin",_=["rich.my-imcloud.com","imrich.qcloud.com"],v=1,I=2,y=3,U=255,P=(!function(e){e.UNSENT="unSend",e.SUCCESS="success",e.FAIL="fail"}(w=w||{}),{wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/});var S=new class{init(e){this._core=e}addAuthToUrl(e=""){return this._isMiniProgramTempFile(e)?e:(e=(e=e)?!e.startsWith("https://")&&e.startsWith("http://")?e.replace("http://","https://"):e:"",this.processResourceUrl(e))}removeAuthToUrl(r){{var[r,i]=r.split("?");if(!i)return r;let t=i.split("&").reduce((e,t)=>{var[t,r]=t.split("=");return t&&"authKey"!==t&&(e[t]=r||""),e},{}),e=Object.keys(t).map(e=>""+e+(t[e]?"="+t[e]:"")).join("&");return e?r+"?"+e:r}}_isMiniProgramTempFile(t){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(P).some(e=>e.test(t))}extractFileFromInput(e){var{isArray:t}=this._core["utils"];return r(e)?e:function(t){if("object"==typeof t&&null!==t){t=Object.getPrototypeOf(t);if(null===t)return 1;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return t===e}}(e)&&"undefined"!=typeof uni?t(e.tempFiles)&&0<e.tempFiles.length?e.tempFiles[0]:t(e.files)?e.files[0]:e.tempFile||null:e instanceof HTMLInputElement&&e.files&&0<e.files.length?e.files[0]:null}probeImageWidthHeight(r){return t(this,void 0,void 0,function*(){var{IN_MINI_APP:e,IN_BROWSER:t}=(null==(e=this._core)?void 0:e.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:t?this._probeImageDimensionsWeb(r):e?this._probeImageDimensionsMiniApp(r):void 0})}isSimpleCos(){var e=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["simple_cos"];return"0"!==e}getFileDNList(){let e,t=_;var r=((null==(e=this._core)?void 0:e.store.get("cloudConfig"))||{})["file_dn_list"];if(void 0!==r)try{JSON.parse(r).forEach(e=>{t.includes(e)||t.push(e)})}catch(e){console.warn(e),t=_}return t}getPlatform(){var e;return null==(e=this._core)?void 0:e.utils.platform}generateUUID(e,t){let r,i=`${this.getSDKAppID()}-${this.getCurrentUserID()}-`+(null==(r=this._core)?void 0:r.utils.randomString());return t?i+"."+t:(e=(t=e.name||e.value||e.url||e.tempFilePath)&&t.slice(t.lastIndexOf(".")+1),i=e?i+"."+e:i)}processResourceUrl(e){if(!e)return"";let t=e;var r=this.getFileDownloadProxy(),i=this.getAuthKey(),o=this.getFileDNList(),e=(r&&(e.startsWith("http://")?t=e.replace(/^http:\/\/[^/]+/,r):e.startsWith("https://")&&(t=e.replace(/^https:\/\/[^/]+/,r))),i&&-1===t.indexOf("authKey=")&&function(e,t){let r=!1;if(e){var e=e.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),i=e&&e[2]||"";if(i.includes("rich-dev"))return!0;for(let e=0;e<t.length;e++)if(i.endsWith(t[e])){r=!0;break}}return r}(t,o));return t=e?-1<t.indexOf("?")?t+"&authKey="+i:t+"?authKey="+i:t}getCurrentUserID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.userId}getSDKAppID(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.sdkAppId}getFileDownloadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileDownloadProxy)||""}getFileUploadProxy(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.fileUploadProxy)||""}getAuthKey(){var e;return(null==(e=null==(e=this._core)?void 0:e.store.get("login"))?void 0:e.authKey)||""}isPrivateNetWork(){var e;return null==(e=null==(e=this._core)?void 0:e.store.get("instance"))?void 0:e.proxyServer}getPlatformFlags(){var{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}=null==(e=this._core)?void 0:e.utils;return{IN_BROWSER:e,IN_MINI_APP:t,IN_RN_APP:r,IN_UNI_NATIVE_APP:i}}isEmpty(e){var t=(null==(t=this._core)?void 0:t.utils)["isEmpty"];return t(e)}_probeImageDimensionsMiniApp(e){let t,r=((null==(t=this._core)?void 0:t.utils)||{}).MINI_APP_NAMESPACE;return new Promise(t=>{r.getImageInfo({src:e,success:e=>t({width:e.width,height:e.height}),fail:()=>t({width:0,height:0})})})}_shouldSkipProbing(){var{IN_RN_APP:e,IS_IE:t,IE_VERSION:r}=(null==(e=this._core)?void 0:e.utils)||{};return e||t&&9===r}_probeImageDimensionsWeb(i){return new Promise(e=>{let t=new Image,r=()=>{t.onload=null,t.onerror=null,t.src=""};t.onload=()=>{e({width:t.width,height:t.height}),r()},t.onerror=()=>{e({width:0,height:0}),r()},t.src=i})}},F=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(e){var t=(this._core=e).utils["IN_MINI_APP"];this.httpRequest=t?s:o,null!=(t=this.httpRequest)&&t.init(e)}uploadToCOS(d){return t(this,void 0,void 0,function*(){let i=f+" uploadToCOS",{ssoLog:o,utils:{safeStringify:e}}=this._core,s=d["file"];this.uploadFileType=d.uploadFileType,o.debug("uploadToCOS",i+" options:"+e(d));try{let e=Date.now(),t=yield this._createCosOptions(d),r=yield this._uploadFile(t);this._handleUploadError(r,d);var a=this._createUploadResult(s,r),n=Date.now()-e,l=`size:${u(s.size)} time:${n}ms speed:`+h(1e3*s.size/n);return o.debug("uploadToCOS",i+` ok. name:${s.name} `+l),{uploadOptions:t,response:a}}catch(e){throw console.warn(i+" failed, error:",e),e}})}_handleUploadError(e,t){var r=(null==(r=this._core)?void 0:r.helper)["ChatError"];if(403===e.statusCode)throw a(Date.now(),!1),t.url,null!=(t=null==e?void 0:e.data)&&t.uploadIP&&e.data.uploadIP,new r({message:"Upload failed with status 403"})}_createUploadResult(e,t){return{fileName:e.name,fileSize:e.size,fileType:e.type.slice(e.type.indexOf("/")+1).toLowerCase(),location:t.data.location||"",uploadTime:a(Date.now(),!1),uploadSpeed:h(1e3*e.size/a(Date.now(),!1))}}_createCosOptions(p){return t(this,void 0,void 0,function*(){var{fileName:e,resources:t,uploadMethod:r}=this._prepareUploadParams(p),i=this._isC2CConversation(p.message.conversationID)?1:2;try{var o=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:e,uploadMethod:r,duration:this.duration,userID:p.message.from,conversationType:i}),{uploadUrl:s,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:h,fileKey:d}=o,u=!S.isPrivateNetWork()&&o.uploadIP;return{url:this._getRawOrUploadProxyUrl(s),fileType:this.uploadFileType,fileName:e,resources:t,downloadUrl:a,requestSnapshotUrl:n,thumbUrl:l,largeUrl:h,fileKey:d,uploadIP:u||"",onProgress:e=>this._handleUploadProgress(e,p)}}catch(e){throw console.error("Failed to create COS pre-signed URL options:",e),e}})}_prepareUploadParams(e){var{ssoLog:t,utils:{safeStringify:r}}=this._core,t=(t.debug("_prepareUploadParams"," prepareUploadParams:"+r(e)),e)["file"],{IN_MINI_APP:r,IN_RN_APP:i}=S.getPlatformFlags(),r=r||i,i=r&&e.message.type!==m,e=t["name"],e=e.slice(e.lastIndexOf(".")),e=""+n(999999)+e;return{fileName:l(i?t.name:e),resources:r?t.url:t,uploadMethod:r?1:0}}_handleUploadProgress(e,t){if("function"==typeof t.onProgress)try{t.onProgress(e.percent)}catch(e){throw console.warn("Upload progress callback error:",e),e}}_fetchCosSignatureUrl(l){return t(this,void 0,void 0,function*(){var{ssoLog:r,utils:{safeStringify:i}}=this._core,o=S.isSimpleCos(),s=this._prepareCosRequestData(l),a=o?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{let e=yield function(o,s,a){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=a,r=e.generateCosSpecifiedData({servcmd:o,data:s}),i=r.head.seq+o;return yield t.sendPacket(r,{requestId:i})}catch(e){throw console.warn("getCosSig error:",e),e}})}(a,s,this._core);this.fetchCosTryCount=0;var n=this._processResponse(e);return r.debug("_fetchCosSignatureUrl",` ok. isSimpleCos:${o} data:`+i(n)),n||{}}catch(e){if(this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(l);throw this.fetchCosTryCount=0,e}})}_processResponse(e){var t;let r=S.isSimpleCos(),l=r?null==(t=null==e?void 0:e.rpt_pre_sig)?void 0:t[0]:e;if(!l)return{};if(r){let{str_final_ip:e,rpt_pre_sig:t,uint32_file_id:r,uint32_exist_flag:i,str_download_url:o,str_upload_url:s,str_snapshot_url:a,str_file_key:n}=l;return{uploadIP:e,preSig:t,fileID:r,existFlag:i,downloadUrl:o,uploadUrl:s,requestSnapshotUrl:a,fileKey:n}}let{upload_url:i,download_url:o,snapshot_url:s,thumb_url:a,large_url:n,file_key:h}=l;return{uploadUrl:i,downloadUrl:o,requestSnapshotUrl:s,thumbUrl:a,largeUrl:n,fileKey:h}}_prepareCosRequestData(e){return S.isSimpleCos()?{uint32_upload_method:e.uploadMethod,uint32_platform:S.getPlatform(),uint32_sdkappid:S.getSDKAppID(),str_user_id:e.userID,uint32_scene:e.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:e.fileType,str_file_name:e.fileName}]}:{file_type:e.fileType,file_name:e.fileName,upload_method:e.uploadMethod,Duration:e.duration}}_uploadFile(o){return t(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.httpRequest.request(o,(e,t)=>{e&&this.uploadFileTryCount<this.maxRetries&&this.shouldRetry(e)?(this.uploadFileTryCount++,this._uploadFile(o).then(r).catch(i)):(this.uploadFileTryCount=0,e?i(e):r(t))})})})}shouldRetry(e){return!(!e||5!==Math.floor(e.statusCode/100)&&(!this.isTimeRelatedError(e)||!this._isClockOutOfSync(e)||(this._syncSystemClock(e),0)))}isTimeRelatedError(e){var t,r;try{var i=null==(t=e.error)?void 0:t.Code,o=null==(r=e.error)?void 0:r.Message;return"RequestTimeTooSkewed"===i||"AccessDenied"===i&&"Request has expired"===o}catch(e){return!1}}_isClockOutOfSync(e){var t,e=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);return!!e&&(t=Date.now(),e=Date.parse(e),3e4<=Math.abs(t+this.systemClockOffset-e))}_syncSystemClock(e){var t,r=(null==(t=e.headers)?void 0:t.date)||(null==(t=e.headers)?void 0:t.Date)||(null==(t=e.error)?void 0:t.ServerTime);if(r){let e=Date.now(),t=Date.parse(r);this.systemClockOffset=t-e}}_getRawOrUploadProxyUrl(e){var t=S.getFileUploadProxy();let r=e;return r=t?e.replace(/^https:\/\/[^/]+/,t):r}_isC2CConversation(e){return"C2C"===e.slice(0,3)}};let b=2108,M=2251,A=2252,O=["jpg","jpeg","gif","png","bmp","image","webp"],T=20971520,N={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255};class C{constructor(e,t){this.instanceID=n(9999999),this.sizeType=e.type||0,this.type=0,this.size=e.size||0,this.width=e.width||0,this.height=e.height||0,this.imageUrl=S.addAuthToUrl(e.imageUrl||e.url||""),this.url=S.addAuthToUrl(e.url||t)}setSizeType(e){this.sizeType=e}setType(e){this.type=e}setImageUrl(e){e&&(this.imageUrl=S.addAuthToUrl(e))}getImageUrl(){return this.imageUrl}}function E(t){var{originUrl:t,originWidth:r,originHeight:i,min:o=198}=t,r=parseInt(r)||0,i=parseInt(i)||0,s={url:void 0,width:0,height:0};if((r<=i?r:i)<=o)s.url=t,s.width=r,s.height=i;else{i<=r?(s.width=Math.ceil(r*o/i),s.height=o):(s.width=o,s.height=Math.ceil(i*o/r));let e=t&&-1<t.indexOf("?")?t+"&":t+"?";s.url=198===o?e+"imageView2/3/w/198/h/198":e+"imageView2/3/w/720/h/720"}return void 0===t?e(s,["url"]):s}class D{constructor(e){this._imageMemoryURL="",this._percent=0,this.type=c;var{uuid:e,file:t,imageFormat:r,imageInfoArray:i=[]}=e;this._imageMemoryURL=this.createImageDataAsURL(t),this.content={imageFormat:r,uuid:e,imageInfoArray:[]},this.initImageInfoArray(i),this.autoFixUrl()}static parseServerPushElement(e){let t=e["MsgContent"],{ImageFormat:r,ImageInfoArray:i,UUID:o}=t,s=i.map(e=>({size:e.Size,type:e.Type,width:e.Width,height:e.Height,url:e.URL}));return new D({imageFormat:r,imageInfoArray:s,uuid:o})}createImageDataAsURL(e){let t="";var{IN_MINI_APP:r,IN_RN_APP:i,IN_BROWSER:o}=S.getPlatformFlags();return t=e&&((r||i)&&(t=e.url),o)?window.URL.createObjectURL(e):t}initImageInfoArray(t=[]){var r={type:0,size:0,width:0,height:0,url:""};for(let e=0;e<3;e++){var i=t[e]||Object.assign({},r),i=new C(i,this._imageMemoryURL);i.setSizeType(e+1),i.setType(e),this.addImageInfo(i)}this.updateAccessSideImageInfoArray()}autoFixUrl(){let i=["http","https"];this.content.imageInfoArray.forEach(e=>{var t,r;e.url&&""!==e.imageUrl&&([t,...r]=e.imageUrl.split("://"),r=r.join("://"),i.includes(t)||e.setImageUrl("https://"+r))})}updatePercent(e){this._percent=Math.min(e,1)}updateImageFormat(e){this.content.imageFormat=N[e.toUpperCase()]||N.UNKNOWN}addImageInfo(e){3<=this.content.imageInfoArray.length||this.content.imageInfoArray.push(e)}updateImageInfoArray(t){var r,i=this.content.imageInfoArray.length;for(let e=0;e<i;e++)r=this.content.imageInfoArray[e],t[e].size&&(r.size=t[e].size),t[e].url&&r.setImageUrl(t[e].url),t[e].width&&(r.width=t[e].width),t[e].height&&(r.height=t[e].height)}updateAccessSideImageInfoArray(){var[e]=this.content.imageInfoArray;if(e&&0!==e.width&&0!==e.height){var t=this.content.imageInfoArray,r=t[2];t[2]=t[1],t[1]=r;for(let e=0;e<t.length;e++)t[e].setType(e);Object.assign(this.content.imageInfoArray[2],E({originWidth:e.width,originHeight:e.height,min:720}))}}validateBeforeSend(){var[e]=this.content.imageInfoArray,e=!!e&&""!==e.imageUrl&&0!==e.size;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,imageFormat:t,imageInfoArray:r}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{ImageFormat:t,ImageInfoArray:this.parseImageInfoArray(r),UUID:e}}}parseImageInfoArray(e){return e.map(e=>({InstanceId:e.instanceID,Type:e.sizeType,MsgType:e.type,Size:e.size,Width:e.width,Height:e.height,URL:S.removeAuthToUrl(e.imageUrl)}))}}var R=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createImageMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(c,D),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createImageMessage(e){var t,r,i;try{var o=null==(t=this._core.store.get("login"))?void 0:t.userId,s=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:o})),a=this._processImage(e),n=(e.payload.file=a,{imageFormat:N.UNKNOWN,uuid:S.generateUUID(a),file:a,imageInfoArray:[]}),l=new D(n);return s.setElement(l),this._messageOptionsMap.set(s.clientSequence,e),s}catch(e){throw e}}upload(i){return t(this,void 0,void 0,function*(){var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadImage(t),yield this._performImageUpload(e,i,t)),r=this._generateImageInfo(t);return e.updateImageFormat(null==t?void 0:t.fileType),e.updateImageInfoArray(r),i})}_performImageUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:v,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{uploadOptions:e,response:t}=yield F.uploadToCOS(e);return this._parseResponse(e,t)})}_generateImageInfo(e){var{location:e,fileSize:t,width:r,height:i,smallImageUrl:o,smallImageWidth:s,smallImageHeight:a,largeImageUrl:n,largeImageWidth:l,largeImageHeight:h,imageInfoArray:d}=e,e=S.addAuthToUrl(e),u={size:t,url:e,width:r,height:i};return 0<(null==d?void 0:d.length)?this._processImageInfoArray(d,t):o&&n?[Object.assign({},u),{largeImageUrl:n,largeImageWidth:l,largeImageHeight:h},{smallImageUrl:o,smallImageWidth:s,smallImageHeight:a}]:[Object.assign({},u),this._generateThumbInfo(e,r,i,720),this._generateThumbInfo(e,r,i,198)]}_generateThumbInfo(e,t,r,i){return E({originUrl:e,originWidth:t,originHeight:r,min:i})}_processImageInfoArray(e,t){let r,i,o;for(var s of e)1===s.type?(i=s,i.size=t):2===s.type?(o=s,o.size=t):(r=s,r.size=t);return[Object.assign({},r),Object.assign({},o),Object.assign({},i)]}_parseResponse(i,o){return t(this,void 0,void 0,function*(){try{var{thumbUrl:e,largeUrl:t,downloadUrl:r}=i;if(e&&t&&(yield this._getImageInfoByUrl(e,o,"thumb"),yield this._getImageInfoByUrl(t,o,"large")),S.isSimpleCos()&&!S.isPrivateNetWork()&&(yield this._getImageInfoArray(r,o),null!=o)&&o.uploadIP){let e=this._extractDomainFromUrl(r);e&&(yield this._getDownloadIP(e,o))}return o}catch(e){throw e}})}_extractDomainFromUrl(t){var e;try{let e=t.match(/:\/\/([^\/]+)/);return e?e[1]:null}catch(t){return null!=(e=this._core)&&e.ssoLog.warn("_extractDomainFromUrl","Failed to extract domain from URL:"+t.message),null}}_getImageInfoByUrl(i,o,s){return t(this,void 0,void 0,function*(){var t;try{let e=S.addAuthToUrl(i),{width:t=0,height:r=0}=yield S.probeImageWidthHeight(e);o.width=t,o.height=r,"thumb"===s?(o.smallImageUrl=i,o.smallImageWidth=t,o.smallImageHeight=r):(o.largeImageUrl=i,o.largeImageWidth=t,o.largeImageHeight=r)}catch(e){null!=(t=this._core)&&t.ssoLog.warn("_getImageInfoByUrl",`Failed to get ${s} image info:`+e.message)}})}_validateBeforeUploadImage(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:M});this._checkImageType(e),this._checkImageSize(e)}_processImage(e){var t;try{var r=(null==(t=this._core)?void 0:t.utils)["IN_MINI_APP"],i=e.payload["file"];return r?this._processMiniAppImageFile(i):this._processWebImageFile(i)}catch(e){throw e}}_processMiniAppImageFile(e){r(e)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");var t=e.tempFiles[0].path||e.tempFiles[0].tempFilePath;return{url:t,name:t.slice(t.lastIndexOf("/")+1),size:e.tempFiles&&e.tempFiles[0].size||1,type:t.slice(t.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"],e=S.extractFileFromInput(e);if(e)return e;throw new t({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}_getDownloadIP(o,s){return t(this,void 0,void 0,function*(){var e=f+" getDownloadIP domainName: "+o;try{var r,i=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_final_ip",i={str_domain:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getFinalIP error:",e),e}})}(o,this._core);i&&i.str_final_ip&&(console.log(e+" ok. downloadIP:"+i),(r=s.location.split("/"))[0]=i.str_final_ip,s.location=r.join("/"))}catch(e){console.warn(e)}})}_getImageInfoArray(r,i){return t(this,void 0,void 0,function*(){try{var e=yield function(a,n){return t(this,void 0,void 0,function*(){try{var{helper:e,channel:t}=n,r="im_cos_msg.get_imageinfo",i={str_image_url:a},o=e.generateProtocolData({servcmd:r,data:i}),s=o.head.seq+r;return yield t.sendPacket(o,{requestId:s})}catch(e){throw console.warn("getImageInfo error:",e),e}})}(r,this._core);return i.imageInfoArray=this._processImageInfoResponse(e),i}catch(e){throw i.imageInfoArray=void 0,e}})}_processImageInfoResponse(e){return e?(e=e["rpt_msg_image_info"],e.map(e=>({type:e.uint32_image_type,url:e.str_url,width:e.uint32_width,height:e.uint32_height,imageFormat:e.str_image_format}))):[]}_checkImageType(e){var{utils:t,helper:r}=this._core;let i="";if(t.IN_MINI_APP&&(i=e.url.slice(e.url.lastIndexOf(".")+1)),t.IN_BROWSER&&(i=e.name.slice(e.name.lastIndexOf(".")+1)),O.indexOf(i.toLowerCase())<0)throw new r.ChatError({code:A})}_checkImageSize(e){var{utils:t,helper:r}=this._core,i=0;if(t.IN_MINI_APP,0===(i=e.size))throw new r.ChatError({code:b});if(i>=T)throw new r.ChatError({message:"File size exceeds limit: "+u(T)})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let z=2108,$=2401,x="2.5.0",W="1.18.0",j=104857600;function q(e,t){let i=e.split("."),o=t.split("."),s=Math.max(i.length,o.length);for(;i.length<s;)i.push("0");for(;o.length<s;)o.push("0");for(let r=0;r<s;r++){let e=parseInt(i[r]),t=parseInt(o[r]);if(e>t)return 1;if(e<t)return-1}return 0}let V=new class{init(e){this.core=e}};class B{constructor(e){this.type=m,this.uploadProgress=0;var t=this._getFileInfo(e);this.content={downloadFlag:2,fileUrl:S.addAuthToUrl(e.url||e.fileUrl)||"",uuid:e.uuid,fileName:t.name||"",fileSize:t.size||0}}static parseServerPushElement(e){var e=e["MsgContent"],{Download_Flag:e,Url:t,FileName:r,FileSize:i,UUID:o}=e;return new B({downloadFlag:e,url:t,fileName:r,fileSize:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateFileUrl(e){this.content.fileUrl=e}validateBeforeSend(){var e=""!==this.content.fileUrl&&""!==this.content.fileName&&0<this.content.fileSize;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,fileUrl:r,fileName:i,fileSize:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Download_Flag:t,Url:S.removeAuthToUrl(r),FileName:i,FileSize:o,UUID:e}}}_getFileInfo(e){var t=V.core["utils"]["IN_UNI_NATIVE_APP"];return e.fileName&&e.fileSize?{size:e.fileSize,name:e.fileName}:(e=e["file"],e?(t&&this._processNativeAppFile(e),{size:e.size,name:e.name}):{size:0,name:""})}_processNativeAppFile(e){var t;e.path&&e.path.includes(".")&&(t=e.path.slice(e.path.lastIndexOf(".")+1).toLowerCase(),e.type=t,e.name||(e.name=n(999999)+"."+t)),e.name||(e.type="",e.name=e.path.slice(e.path.lastIndexOf("/")+1).toLowerCase()),e.suffix&&(e.type=e.suffix),e.url||(e.url=e.path)}}var L=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createFileMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(m,B),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createFileMessage(e){var t,r,i;try{this._checkVersion();var o=this._processFile(e.payload.file),s=(e.payload.file=o,null==(t=this._core.store.get("login"))?void 0:t.userId),a=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:s})),n={uuid:S.generateUUID(o),file:o},l=new B(n);return a.setElement(l),this._messageOptionsMap.set(a.clientSequence,e),a}catch(e){throw e}}upload(r){return t(this,void 0,void 0,function*(){var e=this._messageOptionsMap.get(r.clientSequence).payload["file"],t=(this._validateBeforeUploadFile(e),r.getElements()[0]),e=yield this._performFileUpload(t,r,e),e=S.addAuthToUrl(null==e?void 0:e.location);return t.updateFileUrl(e),r})}_validateBeforeUploadFile(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:$});if(e.size>j)throw new t({message:"File size exceeds limit: "+u(j)});if(0===e.size)throw new t({code:z})}_performFileUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:U,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield F.uploadToCOS(e))["response"];return e})}_processFile(t){var{IN_BROWSER:e,IN_RN_APP:r,IN_WX_MINI_APP:i,IN_QQ_MINI_APP:o,IN_UNI_NATIVE_APP:s}=null==(e=this._core)?void 0:e.utils,a=(null==(a=this._core)?void 0:a.helper)["ChatError"];if(e||s){let e=S.extractFileFromInput(t);if(e)return e;throw new a({message:"Invalid file. Pass either `e.target` (from file input) or a File object"})}if(i||o){let e=t["tempFiles"];return Object.assign(Object.assign({},e[0]),{url:e[0].path})}return r?Object.assign(Object.assign({},t),{url:t.uri}):t}_checkVersion(){var{MINI_APP_NAMESPACE:t,IN_MINI_APP:e,IN_WX_MINI_APP:r,IN_QQ_MINI_APP:i,IN_UNI_NATIVE_APP:o}=null==(e=this._core)?void 0:e.utils,s=(null==(s=this._core)?void 0:s.helper)["ChatError"];if(e){if(!(r||i||o))throw new s({message:"Unsupported mini app environment"});let e=t.getSystemInfoSync().SDKVersion;if(r&&q(e,x)<0)throw new s({message:`WXChooseMessageFile requires SDK version ${x} or higher`});if(i&&q(e,W)<0)throw new s({message:`QQChooseMessageFile requires SDK version ${W} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let k=2108,H=2352,K=["mp4","quicktime","mov"],Y=104857600;class G{constructor(e){this.type=g,this.uploadProgress=0;var t="number"==typeof(null==e?void 0:e.videoSecond)?null==e?void 0:e.videoSecond:0;this.content={remoteVideoUrl:S.addAuthToUrl(e.remoteVideoUrl||e.videoUrl||""),videoFormat:e.videoFormat,videoSecond:parseInt(null==t?void 0:t.toString(),10),videoSize:e.videoSize,videoUrl:S.addAuthToUrl(e.videoUrl),videoDownloadFlag:2,videoUUID:e.videoUUID,thumbUUID:e.thumbUUID,thumbFormat:e.thumbFormat,thumbWidth:e.thumbWidth,snapshotWidth:e.thumbWidth,thumbHeight:e.thumbHeight,snapshotHeight:e.thumbHeight,thumbSize:e.thumbSize,snapshotSize:e.thumbSize,thumbDownloadFlag:2,thumbUrl:S.addAuthToUrl(e.thumbUrl),snapshotUrl:S.addAuthToUrl(e.thumbUrl)}}static parseServerPushElement(e){var e=e["MsgContent"],{VideoUrl:e,VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:h,ThumbHeight:d,SnapshotHeight:u,ThumbSize:p,SnapshotSize:c,ThumbDownloadFlag:m,ThumbUrl:g,SnapshotUrl:_}=e;return new G({videoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:h,thumbHeight:d,snapshotHeight:u,thumbSize:p,snapshotSize:c,thumbDownloadFlag:m,thumbUrl:g,snapshotUrl:_})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateVideoUrl(e){e&&(this.content.remoteVideoUrl=e)}updateSnapshotInfo(e){var{snapshotUrl:e,snapshotWidth:t,snapshotHeight:r}=e;S.isEmpty(e)||(this.content.thumbUrl=this.content.snapshotUrl=e),S.isEmpty(t)||(this.content.thumbWidth=this.content.snapshotWidth=Number(t)),S.isEmpty(r)||(this.content.thumbHeight=this.content.snapshotHeight=Number(r))}validateBeforeSend(){var e=""!==this.content.remoteVideoUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{remoteVideoUrl:e,videoFormat:t,videoSecond:r,videoSize:i,videoDownloadFlag:o,videoUUID:s,thumbUUID:a,thumbFormat:n,thumbWidth:l,snapshotWidth:h,thumbHeight:d,snapshotHeight:u,thumbSize:p,snapshotSize:c,thumbDownloadFlag:m,thumbUrl:g,snapshotUrl:_}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{VideoUrl:S.removeAuthToUrl(e),VideoFormat:t,VideoSecond:r,VideoSize:i,VideoDownloadFlag:o,VideoUUID:s,ThumbUUID:a,ThumbFormat:n,ThumbWidth:l,SnapshotWidth:h,ThumbHeight:d,SnapshotHeight:u,ThumbSize:p,SnapshotSize:c,ThumbDownloadFlag:m,ThumbUrl:S.removeAuthToUrl(g),SnapshotUrl:S.removeAuthToUrl(_)}}}}var J=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createVideoMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(g,G),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createVideoMessage(e){var t,r,i;try{var o=this._processVideo(e),s=(e.payload.file=o,null==(t=this._core.store.get("login"))?void 0:t.userId),a=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:s})),n={videoFormat:o.videoFile.type,videoSecond:d(o.videoFile.second,0),videoSize:o.videoFile.size,remoteVideoUrl:"",videoUrl:o.videoFile.url,videoUUID:S.generateUUID(o.videoFile),thumbUUID:S.generateUUID(o.videoFile,"jpg"),thumbWidth:o.width||200,thumbHeight:o.height||200,thumbUrl:o.thumbUrl,thumbSize:o.thumbSize,thumbFormat:"jpg"},l=new G(n);return a.setElement(l),this._messageOptionsMap.set(a.clientSequence,e),a}catch(e){throw e}}upload(i){return t(this,void 0,void 0,function*(){var e=i.getElements()[0],t=this._messageOptionsMap.get(i.clientSequence).payload["file"],t=(this._validateBeforeUploadVideo(t),yield this._performVideoUpload(e,i,t)),{location:t,snapshotInfo:r}=t,t=S.addAuthToUrl(t);return e.updateVideoUrl(t),S.isEmpty(r)||e.updateSnapshotInfo(r),i})}_validateBeforeUploadVideo(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(e.videoFile.size>Y)throw new t({message:"File size exceeds limit: "+u(Y)});if(0===e.videoFile.size)throw new t({code:k});if(-1===K.indexOf(e.videoFile.type))throw new t({code:H})}_performVideoUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:I,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},{response:e,uploadOptions:t}=yield F.uploadToCOS(e);return{snapshotInfo:yield this._getSnapshotInfoByUrl(t.requestSnapshotUrl),location:e.location}})}_processVideo(e){var i,o;try{var s=(null==(i=this._core)?void 0:i.helper)["ChatError"],{IN_MINI_APP:a,IN_BROWSER:n}=null==(o=this._core)?void 0:o.utils;let t=e.payload["file"],r={};if(a&&(r=this._processMiniVideoFile(t),t.name=r.name,t.url=r.url,t.type=r.type),n){let e=S.extractFileFromInput(t);if(!e)throw new s({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});t=e,r=this._processWebVideoFile(t)}return t.videoFile=r,t.thumbUrl="",t.thumbSize=0,t}catch(e){throw console.warn(f+" _processFile error:",e),e}}_processMiniVideoFile(e){var{IN_ALIPAY_MINI_APP:t,IN_UNI_NATIVE_APP:i}=null==(t=this._core)?void 0:t.utils,o=(null==(o=this._core)?void 0:o.helper)["ChatError"];if(t)throw new o({message:"VideoUnsupportedInAlipay"});if(r(e))throw new o({message:"FileUnsupportedInMiniApp"});let s=(e=Array.isArray(e.tempFiles)?e.tempFiles[0]:e).tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase();return i&&(s=e.fileType||s),{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.size||1,second:e.duration||0,type:s}}_processWebVideoFile(e){var{name:t,size:r=1,duration:i=0,type:o}=e,o=o.split("/")[1];return{url:window.URL.createObjectURL(e),name:t,size:r,second:i,type:o}}_getSnapshotInfoByUrl(a){return t(this,void 0,void 0,function*(){var e=this._core["ssoLog"];try{e.debug("_getSnapshotInfoByUrl",f+" _getSnapshotInfoByUrl url:"+a);var r,i,o,s=((yield function(s,a){return t(this,void 0,void 0,function*(){try{var e="im_cos_msg.video_cover",{helper:t,channel:r}=a,i=t.generateCosSpecifiedData({servcmd:e,data:s}),o=i.head.seq+e;return yield r.sendPacket(i,{requestId:o})}catch(e){throw console.warn("getSnapshotInfo error:",e),e}})}({version:1,platform:S.getPlatform(),cover_name:l(n(99999)),snapshot_url:a},this._core))||{})["download_url"];return(e.debug("_getSnapshotInfoByUrl",f+" _getSnapshotInfoByUrl OK snapshotUrl:"+s),S.isEmpty(s))?{}:(r=S.addAuthToUrl(s),{width:i=0,height:o=0}=yield S.probeImageWidthHeight(r),{snapshotUrl:r,snapshotWidth:i,snapshotHeight:o})}catch(e){throw e}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};class Q{constructor(e){this.uploadProgress=0,this.type=p,this.content={downloadFlag:2,second:e.second,size:e.size,url:S.addAuthToUrl(e.url),remoteAudioUrl:S.addAuthToUrl(e.url||""),uuid:e.uuid}}static parseServerPushElement(e){var e=e["MsgContent"],{Url:e,Download_Flag:t,Second:r,Size:i,UUID:o}=e;return new Q({url:e,downloadFlag:t,second:r,size:i,uuid:o})}updatePercent(e){this.uploadProgress=Math.min(e,1)}updateAudioUrl(e){this.content.remoteAudioUrl=e}validateBeforeSend(){var e=""!==this.content.remoteAudioUrl;return{isValid:e,error:e?null:{message:"content can not be empty"}}}transformToServerFormat(e){var{isMergerMessage:e=!1}=e||{},{uuid:e,downloadFlag:t,remoteAudioUrl:r,size:i,second:o}=e?this.payload:this.content;return{MsgType:this.type,MsgContent:{Url:S.removeAuthToUrl(r),Download_Flag:t,Second:o,Size:i,UUID:e}}}}let X=2108,Z=2300,ee=20971520;var te=new class{constructor(){this._messageOptionsMap=new Map}init(e){var{notificationCenter:e,helper:t,InnerEvent:r,message:i}=this._core=e;t.registerApi({apiName:"createAudioMessage",context:this}),null!=(t=null==i?void 0:i.messageFactory)&&t.registerElementClass(p,Q),e.subscribeInnerEvent(r.DESTROY,this._dispose,this)}createAudioMessage(e){var t,r,i;try{var o=e.payload["file"],o=this._processAudioFile(e.payload.file),s=(e.payload.file=o,null==(t=this._core.store.get("login"))?void 0:t.userId),a=null==(i=null==(r=this._core)?void 0:r.message.messageFactory)?void 0:i.createMessage(Object.assign(Object.assign({},e),{from:s})),n={second:Math.floor((o.duration||o.second)/1e3),size:o.fileSize||o.size||1,url:o.tempFilePath||o.uri||o.url,uuid:S.generateUUID(o)},l=new Q(n);return a.setElement(l),this._messageOptionsMap.set(a.clientSequence,e),a}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}}upload(r){return t(this,void 0,void 0,function*(){var{ssoLog:e,utils:{safeStringify:t}}=this._core,e=(e.debug("upload",f+" uploadAudio message:"+t(r)),this._messageOptionsMap.get(r.clientSequence).payload)["file"],t=(this._validateBeforeUploadAudio(e),r.getElements()[0]),e=yield this._performAudioUpload(t,r,e),e=S.addAuthToUrl(null==e?void 0:e.location);return t.updateAudioUrl(e),r})}_validateBeforeUploadAudio(e){var t=(null==(t=this._core)?void 0:t.helper)["ChatError"];if(!e)throw new t({code:Z});if(e.size>ee)throw new t({message:"File size exceeds limit: "+u(ee)});if(0===e.size)throw new t({code:X})}_performAudioUpload(i,o,r){return t(this,void 0,void 0,function*(){var e=o["to"],e={uploadFileType:y,file:r,to:e,message:o,onProgress:e=>{var t,r;i.updatePercent(e),null!=(r=null==(t=this._messageOptionsMap.get(o.clientSequence))?void 0:t.onProgress)&&r.call(t,e)}},e=(yield F.uploadToCOS(e))["response"];return e})}_processAudioFile(e){var{IN_MINI_APP:t,IN_BROWSER:r}=null==(t=this._core)?void 0:t.utils;return t?this._processMiniFile(e):r?this._processWebFile(e):void 0}_processMiniFile(e){return{url:e.tempFilePath,name:e.tempFilePath.slice(e.tempFilePath.lastIndexOf("/")+1),size:e.fileSize,second:e.duration,type:e.tempFilePath.slice(e.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(e){var t;return e.tempFilePath||e.uri||(t=URL.createObjectURL(e),e.tempFilePath=t),e}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};let oe={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},ie={createImageMessage:oe,createAudioMessage:oe,createVideoMessage:oe,createFileMessage:oe},se={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},re={[c]:R,[m]:L,[g]:J,[p]:te};var ne=new class{constructor(){this.name="RichMediaMessage"}install(e){let{OuterConstant:{MSG_AUDIO:t,MSG_FILE:r,MSG_IMAGE:i,MSG_VIDEO:o}}=(this._core=e)["constants"];V.init(e),R.init(e),L.init(e),J.init(e),te.init(e),F.init(e),S.init(e),e.helper.registerApi({apiName:"sendMessage",context:this,matcher:e=>[t,r,i,o].includes(e[0].type)}),e.helper.registerValidateConfig({auth:se,params:ie})}sendMessage(i,o){return t(this,void 0,void 0,function*(){var e,t,r;try{return yield this._upload(i),yield null==(r=null==(t=null==(e=this._core)?void 0:e.message)?void 0:t.messageSender)?void 0:r.sendMessage(i,o)}catch(e){throw e}})}_upload(r){return t(this,void 0,void 0,function*(){let{ssoLog:t,utils:{safeStringify:e}}=this._core;if(t.debug("_upload"," uploadFile message:"+e(r)),!0!==r._relayFlag)try{let e=re[r.type];e&&(yield e.upload(r),t.info("_upload"," type:"+r.type))}catch(t){throw r.status=w.FAIL,t instanceof Error&&(t.data={message:r}),this._core.message.messageDataHandler.storeConversationMessage(r),t}})}};export{ne as default};
|