@tencentcloud/lite-chat
Version:
Tencent Cloud Chat SDK for Web/Mini Program/uni-app/React Native/Donut
1 lines • 69.9 kB
JavaScript
function e(e,t,s,n){return new(s||(s=Promise))(function(o,r){function i(e){try{c(n.next(e))}catch(e){r(e)}}function a(e){try{c(n.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof s?t:new s(function(e){e(t)})).then(i,a)}c((n=n.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const t=new class{init(e){this.core=e}};var s,n;!function(e){e.MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem"}(s||(s={})),function(e){e[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD"}(n||(n={}));const o="MSG_REACTION",r="MSG_EXT",i=0,a=1,c={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},u="16k_zh",d="16k_en",l="16k_yue",g="16k_ja",m="16k_zh-PY",h={[c.ZH_CN]:u,[c.EN_US]:d,[c.YUE_HK]:l,[c.JA_JP]:g,[c.ZH_PY]:m},p=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,_={READ:0,UNREAD:1},v=1,M=2,E=3,f=1,y=2;var I;!function(e){e.IN="in",e.OUT="out"}(I||(I={}));const C=16,S=17;const R=2116,D=2500,A="C2C",L="GROUP",O=20;function T(s){return e(this,void 0,void 0,function*(){var n,o;const{appStore:r,utils:{isEmpty:i},common:{getCurrentUserID:a},notificationCenter:c,OuterEvent:u}=t.core,{messageList:d,conversationID:l}=s,g=r.conversationStore.getConversationMap();let m=null===(n=g.get(l))||void 0===n?void 0:n.peerReadTime;if(!m){const s=l.replace(A,""),n=yield function(s){return e(this,void 0,void 0,function*(){const e={To_Account:s};return t.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:e})})}([s]);if(n){const{ReadTime:e}=n;m=null==e?void 0:e[0],g.has(l)&&(g.get(l).peerReadTime=m)}}if(g.has(l)){const e=null===(o=g.get(l))||void 0===o?void 0:o.lastMessage;i(e)||e.fromAccount===a()&&e.lastTime<=m&&!e.isPeerRead&&(e.isPeerRead=!0,r.conversationStore.updateConversation(l,{lastMessage:e}))}const h=[];d.forEach(e=>{e.time<=m&&!e.isPeerRead&&"out"===e.flow&&(e.isPeerRead=!0,h.push(e))}),c.emitOuterEvent(u.MESSAGE_READ_BY_PEER,{name:u.MESSAGE_READ_BY_PEER,data:h})})}function x(s){return e(this,void 0,void 0,function*(){var e;const{message:n,user:o,appStore:r,constants:{OuterConstant:i}}=t.core,a=r.conversationStore.getConversationMap();if(a.has(s)){const n=null===(e=a.get(s))||void 0===e?void 0:e.userProfile;if(n&&s.startsWith(i.CONV_C2C)){const{avatar:e,nick:o}=n;t.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:e,latestNick:o,isSentByMe:!1})}}const{data:c}=(yield o.userProfile.getMyProfile())||{};if(c){const{avatar:e,nick:t}=c;n.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:e,latestNick:t,isSentByMe:!0})}})}function q(e){let s;const{message:n}=t.core,{conversationID:o,messageID:r}=e;if(s=n.messageDataHandler.getLocalMessageList(o).find(e=>e.ID===r),!s){s=n.messageDataHandler.getSparseMessageList(o).find(e=>e.ID===r)}return s}function w(e){return e.map(e=>{const{from:t,to:s,cloudCustomData:n,avatar:o,nick:r,ID:i,clientSequence:a,clientTime:c,messageRandom:u,messageSequence:d,time:l}=e;return{ClientSeq:a,CloudCustomData:n,From_Account:t,From_AccountHeadurl:o,From_AccountNick:r,Id:i,MsgBody:JSON.parse(JSON.stringify(e.transformElementsToServerFormat())),MsgClientTime:c,MsgRandom:u,Random:u,MsgSeq:d,MsgTimeStamp:l,ReceiverId:s,SenderId:t,To_Account:s}})}function b(e){var s;const{From_Account:n,From_AccountHeadurl:o,From_AccountNick:r,GroupId:i,MsgClientTime:a,ClientSeq:c,To_Account:u,MsgTimeStamp:d,TinyId:l,MsgRandom:g,MsgSeq:m}=e;return{from:n,avatar:o,nick:r,clientTime:a,time:d,tinyID:l,random:g,sequence:m,to:u,groupID:i,clientSequence:c,_elements:null===(s=e.MsgBody)||void 0===s?void 0:s.map(e=>{const{MsgType:s}=e;return t.core.message.messageFactory.getElementClass(s).parseServerPushElement(e)})}}var P=new class{constructor(){this._reactionsMap=new Map}init(e){this._core=e;const{helper:t,notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{MESSAGE_REACTION_UPDATED:o,MESSAGE_REACTION_UPDATED_SYNC:r}}=e;t.registerApi({apiName:"addMessageReaction",context:this}),t.registerApi({apiName:"removeMessageReaction",context:this}),t.registerApi({apiName:"getMessageReactions",context:this}),t.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),s.subscribeInnerEvent(n,o,this._handleReactionUpdated,this),s.subscribeInnerEvent(n,r,this._handleReactionSync,this)}addMessageReaction(s,n){return e(this,void 0,void 0,function*(){const{OuterConstant:o,ssoLog:r,helper:i}=this._core;this._validateMessageReactionBusinessCapability();const{conversationID:a,ID:c,conversationType:u,from:d,to:l,clientSequence:g,random:m,time:h,sequence:p}=s,_=`conversationID:${a} messageID:${c} reactionID:${n}`;try{return this._recordMessageReactedByMe(c,n),u===o.CONV_C2C?yield function(s,n){return e(this,void 0,void 0,function*(){var e;const{from:o,to:r,clientSequence:i,random:a,time:c,reactionID:u}=s,d={From_Account:o,To_Account:r,MsgKey:`${i}_${a}_${c}`,Reaction:u,Add_Account:[null===(e=n.store.get("login"))||void 0===e?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:d})})}({from:d,to:l,clientSequence:g,random:m,time:h,reactionID:n},this._core):u===o.CONV_GROUP&&(yield function(s,n){return e(this,void 0,void 0,function*(){var e;const{to:o,reactionID:r,sequence:i}=s,a={GroupId:o,MsgSeq:i,Reaction:r,Add_Account:[null===(e=n.store.get("login"))||void 0===e?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:a})})}({to:l,reactionID:n,sequence:p},this._core)),{code:0,successLog:{message:_}}}catch(e){this._removeMyReactionRecord(c,n);const{errorCode:t}=e||{};throw new i.ChatError({functionName:"addMessageReaction",code:t,moreMessage:_})}})}removeMessageReaction(s,n){return e(this,void 0,void 0,function*(){const{OuterConstant:o,helper:r}=this._core;this._validateMessageReactionBusinessCapability();const{conversationID:i,ID:a,conversationType:c,from:u,to:d,clientSequence:l,random:g,time:m,sequence:h}=s,p=`conversationID:${i} messageID:${a} reactionID:${n}`;try{return this._removeMyReactionRecord(a,n),c===o.CONV_C2C?yield function(s,n){return e(this,void 0,void 0,function*(){var e;const{from:o,to:r,clientSequence:i,random:a,time:c,reactionID:u}=s,d={From_Account:o,To_Account:r,MsgKey:`${i}_${a}_${c}`,Reaction:u,Del_Account:[null===(e=n.store.get("login"))||void 0===e?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:d})})}({from:u,to:d,clientSequence:l,random:g,time:m,reactionID:n},this._core):c===o.CONV_GROUP&&(yield function(s,n){return e(this,void 0,void 0,function*(){var e;const{to:o,reactionID:r,sequence:i}=s,a={GroupId:o,MsgSeq:i,Reaction:r,Del_Account:[null===(e=n.store.get("login"))||void 0===e?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:a},n)})}({to:d,reactionID:n,sequence:h},this._core)),{code:0,successLog:{message:p}}}catch(e){const{errorCode:t}=e||{};throw new r.ChatError({functionName:"removeMessageReaction",code:t,moreMessage:p})}})}getAllUserListOfMessageReaction(s){return e(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();const{message:n,reactionID:o,nextSeq:r=0}=s,i=s.count>100?100:s.count,{conversationID:a}=n,{ssoLog:c,helper:u,constants:d}=this._core;try{let s=null;if(s=a.startsWith(d.OuterConstant.CONV_C2C)?yield function(s){return e(this,void 0,void 0,function*(){const{message:e,nextSeq:n,reactionID:o,count:r}=s,{from:i,to:a,clientSequence:c,random:u,time:d}=e,l={Reaction:o,NextSeq:n,Count:r,From_Account:i,To_Account:a,MsgKey:`${c}_${u}_${d}`};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:l})})}({message:n,reactionID:o,nextSeq:r,count:i}):yield function(s){return e(this,void 0,void 0,function*(){const{message:e,nextSeq:n,reactionID:o,count:r}=s,{sequence:i,to:a}=e,c={Reaction:o,NextSeq:n,GroupId:a,Count:r,MsgSeq:i};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:c})})}({message:n,reactionID:o,nextSeq:r,count:i}),s){const{Reaction_Account:e,NextSeq:t}=s,n=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===r,userList:n}}}}catch(e){const{errorCode:t}=e||{};throw new u.ChatError({functionName:"getAllUserListOfMessageReaction",code:t})}})}getMessageReactions(s){return e(this,void 0,void 0,function*(){const{constants:n}=this._core;this._validateMessageReactionBusinessCapability();const{messageList:o,maxUserCountPerReaction:r=10}=s,i=o[0];let a=null;const c=new Map,{from:u,to:d,conversationType:l}=i,g=this._generateMessageKeyList(o,c);l===n.OuterConstant.CONV_C2C?a=yield function(s){return e(this,void 0,void 0,function*(){const{from:e,to:n,messageKeyList:o,maxUserCountPerReaction:r}=s,i={From_Account:e,To_Account:n,MsgKeyList:o,Count:r};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:i})})}({from:u,to:d,messageKeyList:g,maxUserCountPerReaction:r}):l===n.OuterConstant.CONV_GROUP&&(a=yield function(s){return e(this,void 0,void 0,function*(){const{groupId:e,messageSequenceList:n,maxUserCountPerReaction:o}=s,r={GroupId:e,MsgSeqList:n,Count:o};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:r})})}({groupId:d,messageSequenceList:g,maxUserCountPerReaction:r}));const{Results:m=[]}=a||{},h=this._extractUserIDsFromReactionResults(m),p=yield this._getUserProfileMap(h);return{code:0,data:{resultList:m.map(e=>{const{ReactionList:t,MsgSeq:s,MsgKey:n}=e;return{messageID:this._generateMessageID({messageSequence:s,messageKey:n,messageIDMap:c}),reactionList:t.map(e=>{const{Reaction:t,Count:s,Reaction_Account:n,ReactedByMe:o}=e;return{reactionID:t,totalUserCount:s,partialUserList:this._generatePartialUserInfo({userIDList:n,userProfileMap:p}),reactedByMyself:1===o}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(e){const t=[];return null==e||e.forEach(e=>{const{ReactionList:s=[]}=e;s.forEach(e=>{e.Reaction_Account&&t.push(...e.Reaction_Account)})}),t}_getUserProfileList(t){return e(this,void 0,void 0,function*(){var e;try{const s=yield null===(e=this._core.user.userProfile)||void 0===e?void 0:e.getUserProfile({userIDList:t});return s?s.data:[]}catch(e){return[]}})}_getUserProfileMap(t){return e(this,void 0,void 0,function*(){const e=new Map;return(yield this._getUserProfileList(t)).forEach(t=>{const{nick:s,avatar:n,userID:o}=t;e.set(o,{nick:s,avatar:n,userID:o})}),e})}_recordMessageReactedByMe(e,t){const s=`${e}-${t}`;this._reactionsMap.has(s)?this._reactionsMap.get(s).reactedByMe=!0:this._reactionsMap.set(s,{reactedByMe:!0})}_removeMyReactionRecord(e,t){const s=`${e}-${t}`;this._reactionsMap.has(s)&&(this._reactionsMap.get(s).reactedByMe=!1)}_recordMessageReactionInfo(e){const{messageID:t,reactionID:s,reactionInfo:n}=e,o=`${t}-${s}`,r=this._reactionsMap.get(o)||{};this._reactionsMap.set(o,Object.assign(Object.assign({},r),n))}_validateMessageReactionBusinessCapability(){const{helper:e,constants:t}=this._core;if(!e.checkBusinessCapabilityBits(o))throw new e.ChatError({functionName:"addMessageReaction",code:t.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(t){const{MsgReactionNotifyList:s}=t,{notificationCenter:n,constants:o}=this._core;s.forEach(t=>e(this,void 0,void 0,function*(){const{C2CMsgInfo:e,GroupMsgInfo:s,MsgReactionSummary:r}=t,{TinyId:i,MsgClientTime:a,MsgRandom:c}=Object.assign(Object.assign({},e),s),u=`${i}-${a}-${c}`,d=this._extractUserIDsFromReactionResults([{ReactionList:r}]),l=yield this._getUserProfileMap(d),g=r.map(e=>{var t;const{Reaction:s,Reaction_Account:n}=e,o=this._generatePartialUserInfo({userIDList:n,userProfileMap:l}),r=n?e.Count:0,i=(null===(t=this._reactionsMap.get(`${u}-${s}`))||void 0===t?void 0:t.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:u,reactionID:s,reactionInfo:{reactionID:s,totalUserCount:r,partialUserList:o}}),{reactionID:s,totalUserCount:r,partialUserList:o,reactedByMyself:i}});n.emitOuterEvent(o.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:o.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:u,reactionList:g}})}))}_handleReactionSync(e){var t;const{notificationCenter:s,constants:n}=this._core,{C2CMsgInfo:o={},GroupMsgInfo:r={},Reaction:i,OperateType:a}=e.MsgReactionNotify,{TinyId:c="",MsgClientTime:u=0,MsgRandom:d=0}=Object.assign(Object.assign({},o),r),l=`${c}-${u}-${d}`,g=`${l}-${i}`;if(1===a?this._recordMessageReactedByMe(l,i):this._removeMyReactionRecord(l,i),null===(t=this._reactionsMap.get(g))||void 0===t?void 0:t.reactionID){const e=this._reactionsMap.get(g);e.reactedByMyself=1===a,s.emitOuterEvent(n.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:n.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:l,reactionList:[e]}})}}_generatePartialUserInfo({userIDList:e,userProfileMap:t}){const s=[];return null==e||e.forEach(e=>{t.has(e)&&s.push(t.get(e))}),s}_generateMessageID(e){const{messageSequence:t,messageKey:s,messageIDMap:n}=e;return s?n.get(s):n.get(t)}_generateMessageKeyList(e,t){const{constants:s}=this._core,n=e[0],{conversationType:o}=n;let r=[];return o===s.OuterConstant.CONV_C2C?r=e.map(e=>{const{clientSequence:s,random:n,time:o,ID:r}=e,i=`${s}_${n}_${o}`;return t.set(i,r),i}):o===s.OuterConstant.CONV_GROUP&&(r=e.map(e=>{const{ID:s,sequence:n}=e;return t.set(n,s),n})),r}};var N=new class{init(e){this._core=e;const{helper:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:n,GROUP_MESSAGE_READ_RECEIPT:o},notificationCenter:r}=e;t.registerApi({apiName:"sendMessageReadReceipt",context:this}),t.registerApi({apiName:"getMessageReadReceiptList",context:this}),t.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),r.subscribeInnerEvent(s,n,this._handleC2CMessageReadReceipt,this),r.subscribeInnerEvent(s,o,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(s){return e(this,void 0,void 0,function*(){const{common:n,constants:o}=this._core,r=this._filterValidMessageSendByOther(s);if(0===r.length)throw new n.ChatError({code:o.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{const{conversationType:s}=r[0];return s===o.OuterConstant.CONV_C2C?yield function(s){return e(this,void 0,void 0,function*(){const{common:e,constants:n}=t.core,o={Peer_Account:s[0].conversationID.replace(n.OuterConstant.CONV_C2C,""),C2CMsgInfo:s.map(e=>{const{from:t,to:s,sequence:n,random:o,time:r,clientTime:i}=e;return{From_Account:t,To_Account:s,MsgSeq:n,MsgRandom:o,MsgTime:r,MsgClientTime:i}})};return e.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:o})})}(r):yield function(s){return e(this,void 0,void 0,function*(){const{common:e,constants:n}=t.core,o={GroupId:s[0].conversationID.replace(n.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:o})})}(r),{code:0,data:{}}}catch(e){const{errorCode:t,errorInfo:s}=e;throw new n.ChatError({code:t,message:s})}})}getMessageReadReceiptList(s){return e(this,void 0,void 0,function*(){const{common:n,constants:o}=this._core;try{const{conversationType:n}=s[0];if(n===o.OuterConstant.CONV_GROUP){const n=this._filterValidMessageSendByMe(s);if((null==n?void 0:n.length)>0){const o=yield function(s){return e(this,void 0,void 0,function*(){const{common:e,constants:n}=t.core,o={GroupId:s[0].conversationID.replace(n.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map(e=>({MsgSeq:e.sequence}))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:o})})}(n),{GroupMsgReceiptList:r}=o||{};this._updateGroupMessagesReadReceiptInfo({messageList:s,readReceiptList:r})}}return{code:0,data:{messageList:s}}}catch(e){const{errorCode:t,errorInfo:s}=e;throw new n.ChatError({code:t,message:s})}})}getGroupMessageReadMemberList(s){return e(this,void 0,void 0,function*(){const{constants:n,common:o}=this._core,{message:r,filter:i=_.READ,cursor:a=""}=s,{conversationID:c,sequence:u,ID:d}=r,l=c.replace(n.OuterConstant.CONV_GROUP,""),g=s.count>=100?100:s.count;try{const s=yield function(s){return e(this,void 0,void 0,function*(){const{sequence:e,groupID:n,filter:o,cursor:r,count:i}=s,a={MsgSeq:e,GroupId:n,Filter:o,Cursor:r,Num:i};return t.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:a})})}({groupID:l,sequence:u,filter:i,cursor:a,count:g});if(s){const{Cursor:e,IsFinish:t,UnreadList:n,ReadList:o}=s,r={cursor:e,isCompleted:1===t,messageID:d,unreadUserIDList:[],readUserIDList:[]};return i===_.READ?r.readUserIDList=o.map(e=>e.Read_Account):i===_.UNREAD&&(r.unreadUserIDList=n.map(e=>e.Unread_Account)),{code:0,data:r}}}catch(e){const{errorCode:t,errorInfo:s}=e;throw new o.ChatError({code:t,message:s})}})}_handleC2CMessageReadReceipt(e){const t=[],{constants:s,helper:n}=this._core,{C2cMsgInfo:o,PeerReadTime:r,Peer_Account:i}=e;if(n.isEmpty(o))return;const a=`${s.OuterConstant.CONV_C2C}${i}`;null==o||o.forEach(e=>{const{TinyId:s,MsgClientTime:n,MsgRandom:o}=e,c=`${s}-${n}-${o}`,u=q({conversationID:a,messageID:c});u&&!u.readReceiptInfo.isPeerRead&&(u.readReceiptInfo.isPeerRead=!0,u.readReceiptInfo.timestamp=r,t.push({userID:i,messageID:c,isPeerRead:!0,timestamp:r}))}),this._emitReadReceiptEventIfNeed(t)}_updateGroupMessagesReadReceiptInfo(e){const{messageList:t,readReceiptList:s}=e,n=new Map;t.forEach(e=>{n.set(e.sequence,e)}),null==s||s.forEach(e=>{if(0===e.Code){const{MsgSeq:t,ReadNum:s,UnreadNum:o}=e,r=n.get(t);r&&(r.readReceiptInfo.readCount=s,r.readReceiptInfo.unreadCount=o)}})}_handleGroupMessageReadReceipt(e){const t=[],{constants:s}=this._core,{GroupTips:n}=e;n.forEach(e=>{const{MsgBody:{GroupMsgReceiptList:n},GroupInfo:{GroupId:o}}=e,r=`${s.OuterConstant.CONV_GROUP}${o}`;null==n||n.forEach(e=>{const{TinyId:s,MsgClientTime:n,MsgRandom:i,ReadNum:a,UnreadNum:c}=e,u=`${s}-${n}-${i}`,d=q({conversationID:r,messageID:u}),l={groupID:o,messageID:u,readCount:0,unreadCount:0};d&&("number"==typeof a&&(d.readReceiptInfo.readCount=a,l.readCount=a),"number"==typeof c&&(d.readReceiptInfo.unreadCount=c,l.unreadCount=c),t.push(l))})}),this._emitReadReceiptEventIfNeed(t)}_emitReadReceiptEventIfNeed(e){const{notificationCenter:t,OuterEvent:s}=this._core;e.length>0&&t.emitOuterEvent(s.MESSAGE_READ_RECEIPT_RECEIVED,{name:s.MESSAGE_READ_RECEIPT_RECEIVED,data:e})}_filterValidMessageSendByOther(e){return this._filterNeedReadReceiptMessages(e).filter(e=>{const{from:t}=e;return t!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(e){const{OuterConstant:t}=this._core.constants;return this._filterNeedReadReceiptMessages(e).filter(e=>{const{from:s,status:n}=e;return s===this._core.common.getCurrentUserID()&&n===t.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(e){return e.filter(e=>!0===e.needReadReceipt)}dispose(){const{InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:t,GROUP_MESSAGE_READ_RECEIPT:s},notificationCenter:n}=this._core;n.unSubscribeInnerEvent(e,t,this._handleC2CMessageReadReceipt,this),n.unSubscribeInnerEvent(e,s,this._handleGroupMessageReadReceipt,this)}};function G(s,n,o){return e(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:e}}=t.core,{from:r,to:i,clientSequence:a,random:c,time:u}=s;return e({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:r,To_Account:i,MsgKey:`${a}_${c}_${u}`,OperateType:o,ExtensionList:n}})})}function k(s,n,o){return e(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:e}}=t.core,{to:r,sequence:i}=s;return e({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:r,MsgSeq:i,OperateType:o,ExtensionList:n}})})}var U=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(e){this._core=e;const{notificationCenter:t,helper:{registerApi:s},InnerEvent:{MESSAGE_PUSH:n,LOGOUT:o},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:r}}=e;s({apiName:"setMessageExtensions",context:this}),s({apiName:"getMessageExtensions",context:this}),s({apiName:"deleteMessageExtensions",context:this}),t.subscribeInnerEvent(n,r,this._handleMessageExtensionsNotify,this),t.subscribeInnerEvent(o,this.reset,this)}setMessageExtensions(t,s){return e(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");const{constants:{OuterConstant:e},ssoLog:n}=this._core,{ID:o,conversationID:r,sequence:i,time:a,conversationType:c}=t;let u=s;s.length>20&&(u=s.slice(0,20),n.warn("setMessageExtensions","the length of extensions cannot exceed 20"));const d=this._generateServerExtensions(t,u),l=`convID:${r} messageID:${o} sequence:${i} time:${a} count:${u.length}`;try{let s;if(c===e.CONV_C2C?s=yield G(t,d,v):c===e.CONV_GROUP&&(s=yield k(t,d,v)),s){const{resultList:e,successCount:n,failureCount:o}=this._handleModifyMessageExtensions(t,s);return{code:0,data:{extensions:e},successLog:{message:`${l} successCount:${n} failCount:${o}`}}}return{code:0,data:{extensions:[]}}}catch(e){const{errorCode:t}=e;throw new this._core.helper.ChatError({functionName:"setMessageExtensions",code:t,moreMessage:l})}})}getMessageExtensions(t){return e(this,void 0,void 0,function*(){const{utils:{isUndefined:e}}=this._core;this._validateMessageExtensionBusinessCapability("getMessageExtensions");const{conversationID:s,ID:n,sequence:o,time:r}=t,i=`convID:${s} messageID:${n} sequence:${o} time:${r}`;try{let s;this._completedFetchExtensions.has(n)&&(s=this._extensionsLatestSequenceMap.get(n));const o=yield this._fetchMessageExtensions(t,s);return e(s)&&o.length>1&&this._completedFetchExtensions.add(n),{code:0,data:{extensions:o},successLog:{message:i}}}catch(e){const{errorCode:t,errorInfo:s=""}=e||{};throw new this._core.common.ChatError({code:t,message:s,moreMessage:i})}})}deleteMessageExtensions(t,s){return e(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");const{utils:{isEmpty:e},constants:{OuterConstant:n}}=this._core,{conversationType:o,conversationID:r,sequence:i,ID:a,time:c}=t;let u=E;const d=[];e(s)||(u=M,null==s||s.forEach(e=>{d.push({key:e,value:"",seq:0})}));const l=`convID:${r} messageID:${a} sequence:${i} time:${c} operateType:${u}`,g=this._generateServerExtensions(t,d);try{let e;if(o===n.CONV_C2C?e=yield G(t,g,u):o===n.CONV_GROUP&&(e=yield k(t,g,u)),e){const{resultList:s,successCount:n,failureCount:o}=this._handleModifyMessageExtensions(t,e);return{code:0,data:{extensions:s},successLog:{message:`${l}successCount:${n} failCount:${o}`}}}return{code:0,data:{extensions:[]}}}catch(e){const{errorCode:t}=e;throw new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:t,moreMessage:l})}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();const{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t,LOGOUT:s},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:n}}=this._core;e.unSubscribeInnerEvent(t,n,this._handleMessageExtensionsNotify,this),e.subscribeInnerEvent(s,this.reset,this)}_handleModifyMessageExtensions(e,t){const{ID:s}=e,{Seq:n}=t,o=t.ExtensionList||[],r=[];let i=0,a=0,c=[];return o.forEach(e=>{const{ErrorCode:t,Extension:s}=e,{Key:n,Value:o,Seq:u}=s;r.push({code:t,key:n,value:o}),0===t?i++:a++,c.push({key:n,value:o,seq:u})}),this._extensionsLatestSequenceMap.set(s,n),c.length>0&&this._updateLocalExtensions(e.ID,c),{resultList:r,successCount:i,failureCount:a}}_updateLocalExtensions(e,t){this._messageExtensionsMap.has(e)||this._messageExtensionsMap.set(e,new Map);const s=this._messageExtensionsMap.get(e);null==t||t.forEach(e=>{const{key:t,seq:n,value:o=""}=e;null==s||s.set(t,{value:o,seq:n})})}_fetchMessageExtensions(s,n){return e(this,void 0,void 0,function*(){const{constants:{OuterConstant:e},utils:{isEmpty:o}}=this._core;try{let r;const{conversationType:i,ID:a}=s;if(i===e.CONV_C2C?r=yield function(e,s){const{common:{buildAndSendPacket:n}}=t.core,{from:o,to:r,clientSequence:i,random:a,time:c}=e;return n({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:o,To_Account:r,MsgKey:`${i}_${a}_${c}`,StartSeq:s}})}(s,n):i===e.CONV_GROUP&&(r=yield function(e,s){const{common:{buildAndSendPacket:n}}=t.core,{to:o,sequence:r}=e;return n({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:o,MsgSeq:r,StartSeq:s}})}(s,n)),r){const{LatestSeq:e,ClearSeq:t,CompleteFlag:n}=r,i=(r.ExtensionList||[]).map(e=>({key:e.Key,value:e.Value,seq:e.Seq}));if(this._updateLocalExtensions(a,i),this._clearLocationExtensions(a,t),this._extensionsLatestSequenceMap.set(a,e),1!==n){const e=i[i.length-1].seq+1;return this._fetchMessageExtensions(s,e)}const c=[];if(this._messageExtensionsMap.has(a)){const e=this._messageExtensionsMap.get(a);null==e||e.forEach((e,t)=>{const{value:s}=e;o(s)||c.push({key:t,value:s})})}return c}}catch(e){throw e}})}_clearLocationExtensions(e,t){if(!(t<=0)&&this._messageExtensionsMap.has(e)){const s=this._messageExtensionsMap.get(e);null==s||s.forEach((e,n)=>{e.seq<=t&&s.delete(n)})}}_generateServerExtensions(e,t){const{ID:s}=e;if(this._messageExtensionsMap.has(s)){const e=this._messageExtensionsMap.get(s);return t.map(t=>{var s;const{key:n,value:o}=t;let r=0;return(null==e?void 0:e.has(n))&&(r=null===(s=e.get(n))||void 0===s?void 0:s.seq),{Key:n,Value:o,Seq:r}})}return t.map(e=>({Key:e.key,Value:e.value,Seq:0}))}_validateMessageExtensionBusinessCapability(e){const{helper:t,constants:s}=this._core;if(!t.checkBusinessCapabilityBits(r))throw new t.ChatError({functionName:e,code:s.ERROR_CODE.NO_USE,replacement1:e})}_handleMessageExtensionsNotify(e){const{SetKVInfo:t,DeleteKVInfo:s,ClearKVInfo:n,MsgOptType:o,TinyId:r,MsgLastSeq:i,ExtensionC2cMsgInfo:a,ExtensionGroupMsgInfo:c}=(null==e?void 0:e.MsgExtensionNotify)||{},u=a||c||{},{MsgClientTime:d,MsgRandom:l}=u,g=`${r}-${d}-${l}`;this._extensionsLatestSequenceMap.set(g,i),o===v?this._handleMessageExtensionsUpdated({messageID:g,updateMessageExtensionsInfo:t}):o===M?this._handleMessageExtensionsDeleted({messageID:g,deleteMessageExtensionsInfo:s}):o===E&&this._handleMessageExtensionsCleared({messageID:g,clearMessageExtensionsInfo:n})}_handleMessageExtensionsUpdated(e){const{notificationCenter:t,OuterEvent:s}=this._core,{messageID:n,updateMessageExtensionsInfo:o=[]}=e,r=[];o.forEach(e=>{const{MsgKeyValue:t=[]}=e,s=t.map(e=>(r.push({key:e.Key,value:e.Value}),{key:e.Key,value:e.Value,seq:e.Seq}));this._updateLocalExtensions(n,s)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_UPDATED,{name:s.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:n,extensions:r}})}_handleMessageExtensionsDeleted(e){const{notificationCenter:t,OuterEvent:s}=this._core,{messageID:n,deleteMessageExtensionsInfo:o=[]}=e,r=[];o.forEach(e=>{const{MsgKeyValue:t=[]}=e,s=t.map(e=>(r.push(e.Key),{key:e.Key,seq:e.Seq}));this._updateLocalExtensions(n,s)}),t.emitOuterEvent(s.MESSAGE_EXTENSIONS_DELETED,{name:s.MESSAGE_EXTENSIONS_DELETED,data:{messageID:n,keyList:r}})}_handleMessageExtensionsCleared(e){const{notificationCenter:t,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:s},utils:{isEmpty:n}}=this._core,{messageID:o,clearMessageExtensionsInfo:r=[]}=e,i=[];r.forEach(e=>{const{ClearMsgSeq:t}=e;if(this._messageExtensionsMap.has(o)){(this._messageExtensionsMap.get(o)||[]).forEach((e,s)=>{e.seq<=t&&!n(e.value)&&i.push(s)})}this._clearLocationExtensions(o,t)}),t.emitOuterEvent(s,{name:s,data:{messageID:o,keyList:i}})}};const F={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{const{constants:{OuterConstant:s}}=t.core;return e.status!==s.MessageStatus.SUCCESS?"message is not success":!0===e.isSupportExtension||"message is not support extension"}},$={setMessageExtensions:[F,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[F],deleteMessageExtensions:[F]},V=Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>"GROUP"===e||"conversationType should be GROUP."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{const t=function(e){var t;if("string"!=typeof(null==e?void 0:e.text)||"string"==typeof e.text&&0===(null===(t=null==e?void 0:e.text)||void 0===t?void 0:t.length))return"payload.text is invalid.";return!0}(e);return!0!==t?t:!((null==e?void 0:e.atUserList)&&!Array.isArray(e.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:e=>!(!e.startsWith("C2C")&&!e.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>{const{utils:{isString:s,isNumber:n}}=t.core;return s(null==e?void 0:e.description)?n(null==e?void 0:e.longitude)?!!n(null==e?void 0:e.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"!=typeof e?"maxUserCountPerReaction is invalid.":!(e<0||e>10)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:e=>"success"===e.status||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),$),{pinGroupMessage:{groupID:{required:!0,rules:["string"],allowEmpty:!1},message:{required:!0,rules:["object"],allowEmpty:!1},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},getPinnedGroupMessageList:[{key:"groupID",required:!0,rules:["string"],allowEmpty:!1}]}),H=Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0}),{pinGroupMessage:!0,getPinnedGroupMessageList:!0});class K{constructor(e){this._core=e}deleteMessage(t){return e(this,void 0,void 0,function*(){const{to:e,messageIdentifiers:s}=t,n={From_Account:this._core.common.getCurrentUserID(),To_Account:e,MsgKeyList:s};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:n})})}revokeMessage(t){return e(this,void 0,void 0,function*(){const{to:e,from:s,sequence:n,time:o,random:r}=t,i={MsgInfo:{From_Account:s,To_Account:e,MsgSeq:n,MsgRandom:r,MsgTimeStamp:o}};return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:i})})}}class B{constructor(e){this._core=e}deleteMessage(t){return e(this,void 0,void 0,function*(){const{to:e,messageIdentifiers:s}=t,n={GroupId:e,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:s};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:n})})}revokeMessage(t){return e(this,void 0,void 0,function*(){const{to:e,sequence:s}=t,n={GroupId:e,MsgSeqList:[{MsgSeq:s}]};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:n})})}}class j{constructor(e){this._core=e}generateRevokeMessage(e){const{conversationID:t,sequence:s,random:n,tinyID:o,clientTime:r,revokeReason:i,revoker:a}=e;let c={};const{messageDataHandler:u}=this._core.message;return c=u.revokeMessage({conversationID:t,sequence:s,random:n,revoker:a}),c||(c={conversationID:t,sequence:s},o&&r&&n&&(c.ID=`${o}-${r}-${n}`)),c.revoker=a,c.revokeReason=i,c.revokerInfo={userID:a,nick:"",avatar:""},c}updateRevokerInfo(t){return e(this,void 0,void 0,function*(){const e=t.map(e=>e.revoker);try{const s=yield this._fetchUserInfos(e);s&&t.forEach(e=>{const{revoker:t}=e;s[t]&&(e.revokerInfo.nick=s[t].nick||"",e.revokerInfo.avatar=s[t].avatar||"",e.revokerInfo.userID=t)})}catch(e){console.debug(e)}})}_fetchUserInfos(t){return e(this,void 0,void 0,function*(){var e,s;const n=yield null===(e=this._core.user.userProfile)||void 0===e?void 0:e.getUserProfile({userIDList:t});return(null==n?void 0:n.data)?null===(s=n.data)||void 0===s?void 0:s.reduce((e,{userID:t,nick:s,avatar:n})=>(e[t]={nick:s||"",avatar:n||""},e),{}):null})}}var W=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new B(e),this._c2cMessageAction=new K(e),this._messageHelper=new j(e);const{helper:t}=e;t.registerApi({apiName:"deleteMessage",context:this}),t.registerApi({apiName:"revokeMessage",context:this}),t.registerApi({apiName:"resendMessage",context:this}),t.registerApi({apiName:"findMessage",context:this})}deleteMessage(t){return e(this,void 0,void 0,function*(){let e=[],s=[];const{conversationID:n,conversationType:o}=t[0],r=n.replace(o,"");if("@TIM#SYSTEM"===o)throw new this._core.helper.ChatError({code:R});if(t.forEach(t=>{const{conversationID:r,conversationType:i,status:a,_onlineOnlyFlag:c,sequence:u,random:d,time:l}=t||{};if("success"===a&&r===n&&i===o){if(!c){const t="C2C"===i?`${u}_${d}_${l}`:String(u);e.push(t)}s.push(t)}}),0===e.length)return this._handleDeleteMessageSuccess(s),{code:0,data:{messageList:s}};e.length>30&&(e=e.slice(0,30),s=s.slice(0,30));try{return"C2C"===o?yield this._c2cMessageAction.deleteMessage({to:r,messageIdentifiers:e}):yield this._groupMessageAction.deleteMessage({to:r,messageIdentifiers:e}),this._handleDeleteMessageSuccess(s),{code:0,data:{messageList:s}}}catch(e){const{errorCode:t}=e;throw new this._core.helper.ChatError({functionName:"deleteMessage",code:t})}})}revokeMessage(t){return e(this,void 0,void 0,function*(){var e;const{conversationType:s,isRevoked:n,ID:o,type:r,from:i,to:a}=t;let c=null;const u=`type:${r} from:${i} to:${a} ID:${o}`;if("@TIM#SYSTEM"===s)throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(n)throw new this._core.helper.ChatError({message:"message has been revoked",moreMessage:u});try{if(c="C2C"===s?yield this._c2cMessageAction.revokeMessage(t):yield this._groupMessageAction.revokeMessage(t),c){const{RecallRetList:s}=c,n=(null===(e=null==s?void 0:s[0])||void 0===e?void 0:e.RetCode)||0;if(0!==n)throw new this._core.helper.ChatError({code:n,moreMessage:u});return t.isRevoked=!0,yield this._handleRevokeMessageSuccess(t),{code:0,data:{message:t},successLog:{message:u}}}}catch(e){const{errorCode:t}=e;throw new this._core.helper.ChatError({functionName:"revokeMessage",code:t,moreMessage:u})}})}resendMessage(t,s){return e(this,void 0,void 0,function*(){var e,n;return t.isResend=!0,t.status="unSend",null===(n=null===(e=this._core)||void 0===e?void 0:e.apiMap)||void 0===n?void 0:n.sendMessage(t,s)})}findMessage(e){return this._core.message.messageDataHandler.findMessage(e)}_handleDeleteMessageSuccess(e){if(0===e.length)return;const{message:{messageDataHandler:t},common:{isTopic:s},notificationCenter:n,InnerEvent:o}=this._core;e.forEach(e=>{e.isDeleted=!0;const s=t.getLocalMessageList(e.conversationID);null==s||s.forEach(t=>{t.ID===e.ID&&(t.isDeleted=!0)})});const{conversationID:r=""}=e[0];s(r)?n.emitInnerEvent(o.TOPIC_MESSAGE_DELETED,r):n.emitInnerEvent(o.MESSAGE_DELETED,r)}_handleRevokeMessageSuccess(t){return e(this,void 0,void 0,function*(){var e;const s=null===(e=this._core.store.get("login"))||void 0===e?void 0:e.userId,{conversationID:n,sequence:o,random:r}=t;this._core.message.messageDataHandler.revokeMessage({conversationID:n,sequence:o,random:r,revoker:s}),yield this._messageHelper.updateRevokerInfo([t])})}};class Y{static parseServerPushElement(e){const{MsgContent:t={}}=e,{Index:s,Data:n}=t;return new Y({index:s,data:n})}constructor(e){this.type=s.MSG_FACE;const{index:t,data:n}=e;this.content={index:t,data:n}}validateBeforeSend(){var e,t;return"number"==typeof(null===(e=this.content)||void 0===e?void 0:e.index)&&"string"==typeof(null===(t=this.content)||void 0===t?void 0:t.data)?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(e){const{isMergerMessage:t=!1}=e||{},s=t?this.payload:this.content,{index:n,data:o}=s;return{MsgType:this.type,MsgContent:{Index:n,Data:o}}}}class J{static parseServerPushElement(e){const{MsgContent:t={}}=e,{Desc:s,Longitude:n,Latitude:o}=t;return new J({description:s,longitude:n,latitude:o})}constructor(e){this.type=s.MSG_LOCATION;const{description:t,longitude:n,latitude:o}=e;this.content={description:t,longitude:n,latitude:o}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(e){const{isMergerMessage:t=!1}=e||{},s=t?this.payload:this.content,{description:n,longitude:o,latitude:r}=s;return{MsgType:this.type,MsgContent:{Desc:n,Longitude:o,Latitude:r}}}}var X=new class{init(e){this._core=e,e.message.messageFactory.registerElementClass(s.MSG_FACE,Y),e.message.messageFactory.registerElementClass(s.MSG_LOCATION,J),e.helper.registerApi({apiName:"createFaceMessage",context:this}),e.helper.registerApi({apiName:"createTextAtMessage",context:this}),e.helper.registerApi({apiName:"createForwardMessage",context:this}),e.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(e){if(!e)return null;const{index:t,data:s}=(null==e?void 0:e.payload)||{},n=new Y({index:t,data:s}),o=this._core.common.getCurrentUserID(),r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:o}));return r.setElement(n),r}createTextAtMessage(e){const{atUserList:t}=(null==e?void 0:e.payload)||{},s=this._core.apiMap.createTextMessage(e),{OuterConstant:n}=this._core;if(!s)return null;if(Array.isArray(t)){const e=[],o=[];t.forEach(t=>{t!==n.MSG_AT_ALL?(e.push({GroupAtAllFlag:i,GroupAt_Account:t}),o.push(t)):(e.push({GroupAtAllFlag:a}),o.push(n.MSG_AT_ALL))}),s._groupAtInfoList=e,s.atUserList=o}return s}createForwardMessage(e){const{helper:t,OuterConstant:s}=this._core,{to:n,conversationType:o,priority:r,payload:i,needReadReceipt:a,receiverList:c,cloudCustomData:u="",isSupportExtension:d=!1}=e;if(!Array.isArray(i._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(i.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});const l=this._core.common.getCurrentUserID(),g=this._core.message.messageFactory.createMessage({to:n,from:l,conversationType:o,isPlaceMessage:0,priority:r,payload:i,needReadReceipt:a,isSupportExtension:d,cloudCustomData:u,receiverList:c});return g.setRelayFlag(!0),g.setElement(i._elements[0]),g}createLocationMessage(e){if(!e)return null;const{description:t,longitude:s,latitude:n}=(null==e?void 0:e.payload)||{},o=new J({description:t,longitude:s,latitude:n}),r=this._core.common.getCurrentUserID(),i=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:r}));return i.setElement(o),i}};class Z{init(e){this._messageHelper=new j(e),this._core=e;const{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{C2C_REVOKED_MESSAGE:n},helper:{registerWorkflowStep:o},constants:{WORKFLOW_NAME:r,WORKFLOW_STEP:i}}=e;t.subscribeInnerEvent(s,n,this._handleC2CNotifyMessage,this),o(r.SYNC_SERVER_INFO_AFTER_RE_ONLINE,i.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(e){const{C2cNotifyMsgArray:t}=e;null==t||t.forEach(e=>{Object.keys(e).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(e)})}_handleC2CRevokeMessage(t){return e(this,void 0,void 0,function*(){try{const{WithdrawC2cMsgNotify:{C2cWithdrawInfoArray:e}}=t;yield this._parseAndEmitC2CRevokedMessages(e)}catch(e){console.debug(e)}})}_parseAndEmitC2CRevokedMessages(t){return e(this,void 0,void 0,function*(){const e=[],{notificationCenter:s,OuterEvent:n,common:{getCurrentUserID:o}}=this._core;t.forEach(t=>{var s;const{MsgRand:n,MsgSeq:r,To_Account:i,From_Account:a,RevokerInfo:{Revoker_Account:c,Revoke_Reason:u}}=t,d=o()===a?`C2C${i}`:`C2C${a}`,l=(null===(s=null==t?void 0:t.RevokerInfo)||void 0===s?void 0:s.Reason)||u,g=this._messageHelper.generateRevokeMessage({conversationID:d,sequence:r,random:n,revoker:c,revokeReason:l});e.push(g)}),e.length>0&&(yield this._messageHelper.updateRevokerInfo(e),s.emitOuterEvent(n.MESSAGE_REVOKED,{name:n.MESSAGE_REVOKED,data:e}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return e(this,void 0,void 0,function*(){const{revokedMessageList:e}=t.result;yield this._parseAndEmitC2CRevokedMessages(e)})}dispose(){const{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this)}}class z{init(e){this._messageHelper=new j(e),this._core=e;const{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{GROUP_MESSAGE_REVOKED:n}}=e;t.subscribeInnerEvent(s,n,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(e){const{GroupTips:t}=e;null==t||t.forEach(e=>{var t;Array.isArray(null===(t=null==e?void 0:e.MsgBody)||void 0===t?void 0:t.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(e)})}_handleGroupRevokeMessage(t){return e(this,void 0,void 0,function*(){try{const{RevokerInfo:e,MsgBody:{GroupWithdrawInfoArray:s},GroupInfo:n}=t,o=[],r=[],{notificationCenter:i,OuterEvent:a,utils:{isEmpty:c},common:{isCommunity:u}}=this._core;let d=!1;n&&(d=u({groupID:n.GroupId})||!c(n.TopicId)),s.forEach(t=>{const{Random:s,MsgSeq:i,GroupId:a,MsgClientTime:c,TinyId:u,TopicId:l,RevokerInfo:{Revoker_Account:g=(null==e?void 0:e.Revoker_Account)||"",Reason:m=(null==e?void 0:e.Reason)||""}}=t,h=l?`GROUP${l}`:`GROUP${a}`,p=this._messageHelper.generateRevokeMessage({conversationID:h,sequence:i,random:s,tinyID:u,clientTime:c,revoker:g,revokeReason:m});d?(p.revokerInfo.nick=n.From_AccountNick,p.revokerInfo.avatar=n.From_AccountHeadurl,o.push(p)):r.push(p)}),r.length>0&&(yield this._messageHelper.updateRevokerInfo(r),o.push(...r)),0!==o.length&&i.emitOuterEvent(a.MESSAGE_REVOKED,{name:a.MESSAGE_REVOKED,data:o})}catch(e){console.debug(e)}})}dispose(){const{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{GROUP_MESSAGE_REVOKED:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleGroupNotifyMessage,this)}}var Q=new class{constructor(){this._c2cMessageReceiver=new Z,this._groupMessageReceiver=new z}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class ee{constructor(e){this._core=e;const{constants:t}=e;this._messageHelper=new j(e),e.helper.registerWorkflowStep(t.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,t.WORKFLOW_STEP.GROUP_REVOKED_NOTICE_RECOVER,this._recoverGroupRevokeNotice,this)}getRoamingMessagesByAnchor(e){return this._core.message.messageHistory.getGroupRoamingMessagesByAnchor(e)}_recoverGroupRevokeNotice(e){const{recoverRevokeNoticeGroupIDList:t=[]}=e.result,s=this._filterValidGroupIDList(t);if(0===s.length)return;const n=Math.min(Math.ceil(s.length/10),5);Promise.all(Array.from({length:n},(e,t)=>{const n=10*t,o=Math.min(n+10,s.length);return this._fetchGroupRevokeNotice(s.slice(n,o))})).catch(e=>console.error(e))}_fetchGroupRevokeNotice(s){return e(this,void 0,void 0,function*(){var n;try{const o=yield function(s){return e(this,void 0,void 0,function*(){const{appStore:e,constants:{OuterConstant:n},common:o}=t.core,r=e.groupStore.getGroupMap(),i={NotifyReqList:s.map(e=>{const s=r.get(e);return{NotifyType:1,Limit:20,Type:o.isCommunity({type:s.type,groupID:e})?n.GRP_COMMUNITY:void 0,GroupId:e,BeginTime:(null==s?void 0:s._lastRevokedTime)||0,EndTime:1e3*t.core.common.timeManager.getServerTimeMs()}})||[]};return o.buildAndSendPacket({servcmd:"group_open_http_svc.batch_get_group_notify",data:i})})}(s);if(o){const e=[];null===(n=null==o?void 0:o.NotifyRspList)||void 0===n||n.forEach(t=>{const{GroupId:s,NotifyMsgList:n}=t,o=this._parseServerRevokeMessageList({groupID:s,serverRevokeMessageList:n});e.push(...o)}),0!==e.length&&(yield this._emitMessageRevokedEvent(e))}}catch(e){console.error(e)}})}_parseServerRevokeMessageList(e){const{serverRevokeMessageList:t,groupID:s}=e,n=[];return null==t||t.forEach(e=>{const{ClientTime:t,MsgSeq:o,Random:r,RevokerInfo:{Revoker_Account:i="",Reason:a=""}}=e,c=`GROUP${s}`,u=this._messageHelper.generateRevokeMessage({conversationID:c,sequence:o,random:r,clientTime:t,revoker:i,revokeReason:a});n.push(u)}),n}_filterValidGroupIDList(e){const{constants:{OuterConstant:t}}=this._core,s=this._core.appStore.groupStore.getGroupMap();return(null==e?void 0:e.filter(e=>{if(!s.has(e))return!1;const n=s.get(e);return(null==n?void 0:n.type)!==t.GRP_AVCHATROOM&&!(null==n?void 0:n.isSupportTopic)}))||[]}_emitMessageRevokedEvent(t){return e(this,void 0,void 0,function*(){const{notificationCenter:e,OuterEvent:s}=this._core;yield this._messageHelper.updateRevokerInfo(t),e.emitOuterEvent(s.MESSAGE_REVOKED,{name:s.MESSAGE_REVOKED,data:t})})}}class te{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new j(e)}getRoamingMessagesByAnchor(s){return e(this,void 0,void 0,function*(){var n;try{const{conversationID:o,count:r,messageID:i,time:a,direction:c}=s;let u=a,d="";if(!a){const e=i?this._core.message.messageDataHandler.findMessage(i):null;if(u=(null==e?void 0:e.time)||0,i&&this._historyMessageListFetchAnchors.has(o)){const e=this._historyMessageListFetchAnchors.get(o);u=e.lastMessageTime,d=e.messageKey}}const l=o.replace(A,""),g=yield function(s){return e(this,void 0,void 0,function*(){const{peerAccount:e,count:n,lastMessageTime:o,messageKey:r,direction:i}=s,a={Peer_Account:e,MaxCnt:n,WithRecalledMsg:1,LastMsgTime:o,MsgKey:r,GetDirection:i};return t.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:a})})}({count:r,lastMessageTime:u,messageKey:d,peerAccount:l,direction:c});if(g){const{MsgList:e=[],Complete:t,MsgKey:s,LastMsgTime:r}=g;this._historyMessageListFetchAnchors.set(o,{messageKey:s,lastMessageTime:r});const i=[];for(let t=0;t<e.length;t++){const s=e[t],n=this._parseMessage(s);i.push(n)}const a=this._core.message.messageHelper.filterValidMessages(i);return{messageList:a,nextReqMessageIDFromServer:null===(n=a[0])||void 0===n?void 0:n.ID,lastMessageTime:r,hasNoMoreHistoryMessage:1===t}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}})}clearHistoryMessageListFetchAnchors(e){this._historyMessageListFetchAnchors.delete(e)}reset(){this._historyMessageListFetchAnchors.clear()}_parseMessage(e){const t=A,s=this._core.message.messageHelper.parseServerPushMessage(e),n=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{conversationType:t,flow:"in"}));return n.setElement(s.elements),n}}var se=new class{constructor(){this._clearedConversations=new Set,this._fetchedCompleteConversations=new Set}init(e){this._core=e,this._groupMessageHistory=new ee(e),this._c2cMessageHistory=new te(e),this._messageHelper=new j(e),e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(s){return e(this,void 0,void 0,function*(){try{let{conversationID:e,nextReqMessageID:o}=s;const r=O;if("@TIM#SYSTEM"===e)return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};const i=this._getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:o});if(this._needFetchHistoryMessageList({conversationID:e,availableLocalMessagesCount:i,targetCount:r})){let s=null;if(e.startsWith(L)?s=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:e,sequence:Number(o),count:r,directio