@tencentcloud/lite-chat
Version:
Tencent Cloud Chat SDK for Web/Mini Program/uni-app/React Native/Donut
1 lines • 54.9 kB
JavaScript
function e(e,t,s,o){return new(s||(s=Promise))((function(n,r){function a(e){try{c(o.next(e))}catch(e){r(e)}}function i(e){try{c(o.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,i)}c((o=o.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const t=new class{init(e){this.core=e}};const s=2116,o="C2C",n="GROUP",r=20,a=1,i=300;function c(s){return e(this,void 0,void 0,(function*(){var n;const{appStore:r}=t.core,{messageList:a,conversationID:i}=s,c=r.conversationStore.getConversationMap();let d=null===(n=c.get(i))||void 0===n?void 0:n.peerReadTime;if(!d){const s=i.replace(o,""),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;d=null==e?void 0:e[0],c.has(i)&&(c.get(i).peerReadTime=d)}}a.forEach((e=>{e.time<=d&&!e.isPeerRead&&"out"===e.flow&&(e.isPeerRead=!0)}))}))}function d(s){return e(this,void 0,void 0,(function*(){var e;const{message:o,user:n,appStore:r,constants:{OuterConstant:a}}=t.core,i=r.conversationStore.getConversationMap();if(i.has(s)){const r=null===(e=i.get(s))||void 0===e?void 0:e.userProfile;if(r&&s.startsWith(a.CONV_C2C)){const{avatar:e,nick:o}=r;t.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:e,latestNick:o,isSentByMe:!1})}const{data:c}=(yield n.userProfile.getMyProfile())||{};if(c){const{avatar:e,nick:t}=c;o.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:e,latestNick:t,isSentByMe:!0})}}}))}var u,l,g;!function(e){e.MSG_TEXT="TIMTextElem",e.MSG_CUSTOM="TIMCustomElem",e.MSG_LOCATION="TIMLocationElem",e.MSG_FACE="TIMFaceElem"}(u||(u={})),function(e){e[e.DATA_HAS_EXPIRED=0]="DATA_HAS_EXPIRED",e[e.HAS_MORE_DATA=1]="HAS_MORE_DATA",e[e.NO_MORE_DATA=2]="NO_MORE_DATA"}(l||(l={})),function(e){e[e.FORWARD=0]="FORWARD",e[e.BACKWARD=1]="BACKWARD"}(g||(g={}));const m="MSG_REACTION",h=0,p=1,_={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},v="16k_zh",M="16k_en",f="16k_yue",y="16k_ja",R="16k_zh-PY",E={[_.ZH_CN]:v,[_.EN_US]:M,[_.YUE_HK]:f,[_.JA_JP]:y,[_.ZH_PY]:R},I=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,C="@TGS#_",S="@TOPIC#_",D={READ:0,UNREAD:1};function A(e){return`${e}`.startsWith(C)&&`${e}`.includes(S)}function L(e){let s;const{message:o}=t.core,{conversationID:n,messageID:r}=e;if(s=o.messageDataHandler.getLocalMessageList(n).find((e=>e.ID===r)),!s){s=o.messageDataHandler.getSparseMessageList(n).find((e=>e.ID===r))}return s}function O(e){return e.map((e=>{const{from:t,to:s,cloudCustomData:o,avatar:n,nick:r,ID:a,clientSequence:i,clientTime:c,messageRandom:d,messageSequence:u,time:l}=e;return{ClientSeq:i,CloudCustomData:o,From_Account:t,From_AccountHeadurl:n,From_AccountNick:r,Id:a,MsgBody:JSON.parse(JSON.stringify(e.convertElementsToBackendFormat())),MsgClientTime:c,MsgRandom:d,Random:d,MsgSeq:u,MsgTimeStamp:l,ReceiverId:s,SenderId:t,To_Account:s}}))}function T(e){var s;const{From_Account:o,GroupId:n,MsgClientTime:r,ClientSeq:a,To_Account:i,MsgTimeStamp:c,TinyId:d,MsgRandom:u,MsgSeq:l}=e;return{from:o,clientTime:r,time:c,tinyID:d,random:u,sequence:l,to:i,groupID:n,messageBody:null===(s=e.MsgBody)||void 0===s?void 0:s.map((e=>{const{MsgType:s}=e,o=t.core.message.messageFactory.getElementClass(s).parseServerPushElement(e);return o.payload=o.content,o})),clientSequence:a}}var q=new class{constructor(){this._reactionsMap=new Map}init(e){this._core=e;const{helper:t,notificationCenter:s,InnerEvent:{MESSAGE_PUSH:o},InnerEventSubType:{MESSAGE_REACTION_UPDATED:n,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(o,n,this._handleReactionUpdated,this),s.subscribeInnerEvent(o,r,this._handleReactionSync,this)}addMessageReaction(s,o){return e(this,void 0,void 0,(function*(){const{OuterConstant:n,ssoLog:r,helper:a}=this._core;this._validateMessageReactionBusinessCapability();const i=r.createSSOLogData({method:"addMessageReaction"}),{conversationID:c,ID:d,conversationType:u,from:l,to:g,clientSequence:m,random:h,time:p,sequence:_}=s;try{return this._recordMessageReactedByMe(d,o),u===n.CONV_C2C?yield function(s,o){return e(this,void 0,void 0,(function*(){var e;const{from:n,to:r,clientSequence:a,random:i,time:c,reactionID:d}=s,u={From_Account:n,To_Account:r,MsgKey:`${a}_${i}_${c}`,Reaction:d,Add_Account:[null===(e=o.store.get("login"))||void 0===e?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:u})}))}({from:l,to:g,clientSequence:m,random:h,time:p,reactionID:o},this._core):u===n.CONV_GROUP&&(yield function(s,o){return e(this,void 0,void 0,(function*(){var e;const{to:n,reactionID:r,sequence:a}=s,i={GroupId:n,MsgSeq:a,Reaction:r,Add_Account:[null===(e=o.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:i})}))}({to:g,reactionID:o,sequence:_},this._core)),i.setLogInfo({message:`conversationID:${c} messageID:${d} reactionID:${o}`}).end(),{code:0}}catch(e){this._removeMyReactionRecord(d,o);const{errorCode:t}=e||{},s=new a.ChatError({functionName:"addMessageReaction",code:t});i.setError(s).end(),console.error("addMessageReaction error: ",e)}}))}removeMessageReaction(s,o){return e(this,void 0,void 0,(function*(){const{OuterConstant:n,ssoLog:r,helper:a}=this._core;this._validateMessageReactionBusinessCapability();const i=r.createSSOLogData({method:"removeMessageReaction"});try{const{conversationID:r,ID:a,conversationType:c,from:d,to:u,clientSequence:l,random:g,time:m,sequence:h}=s;return this._removeMyReactionRecord(a,o),c===n.CONV_C2C?yield function(s,o){return e(this,void 0,void 0,(function*(){var e;const{from:n,to:r,clientSequence:a,random:i,time:c,reactionID:d}=s,u={From_Account:n,To_Account:r,MsgKey:`${a}_${i}_${c}`,Reaction:d,Del_Account:[null===(e=o.store.get("login"))||void 0===e?void 0:e.userId]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:u})}))}({from:d,to:u,clientSequence:l,random:g,time:m,reactionID:o},this._core):c===n.CONV_GROUP&&(yield function(s,o){return e(this,void 0,void 0,(function*(){var e;const{to:n,reactionID:r,sequence:a}=s,i=null===(e=o.store.get("login"))||void 0===e?void 0:e.userId;let c,d=n;A(n)&&(c=n,d=c.split(S)[0]);const u={TopicId:c,GroupId:d,MsgSeq:a,Reaction:r,Del_Account:[i]};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:u},o)}))}({to:u,reactionID:o,sequence:h},this._core)),i.setLogInfo({message:`conversationID:${r} messageID:${a} reactionID:${o}`}).end(),{code:0}}catch(e){const{errorCode:t}=e||{},s=new a.ChatError({functionName:"removeMessageReaction",code:t});i.setError(s).end(),console.error("removeMessageReaction error: ",e)}}))}getAllUserListOfMessageReaction(s){return e(this,void 0,void 0,(function*(){this._validateMessageReactionBusinessCapability();const{message:o,reactionID:n,nextSeq:r=0}=s,a=s.count>100?100:s.count,{conversationID:i}=o,{ssoLog:c,helper:d,constants:u}=this._core;try{let s=null;if(s=i.startsWith(u.OuterConstant.CONV_C2C)?yield function(s){return e(this,void 0,void 0,(function*(){const{message:e,nextSeq:o,reactionID:n,count:r}=s,{from:a,to:i,clientSequence:c,random:d,time:u}=e,l={Reaction:n,NextSeq:o,Count:r,From_Account:a,To_Account:i,MsgKey:`${c}_${d}_${u}`};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:l})}))}({message:o,reactionID:n,nextSeq:r,count:a}):yield function(s){return e(this,void 0,void 0,(function*(){const{message:e,nextSeq:o,reactionID:n,count:r}=s,{sequence:a}=e;let i,c=e.to;A(e.to)&&(i=e.to,c=i.split(S)[0]);const d={Reaction:n,NextSeq:o,TopicId:i,GroupId:c,Count:r,MsgSeq:a};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:d})}))}({message:o,reactionID:n,nextSeq:r,count:a}),s){const{Reaction_Account:e,NextSeq:t}=s,o=yield this._getUserProfileList(e);return{code:0,data:{nextSeq:t,isCompleted:0===r,userList:o}}}}catch(e){const{errorCode:t}=e||{},s=new d.ChatError({functionName:"getAllUserListOfMessageReaction",code:t});c.createSSOLogData({method:"removeMessageReaction"}).setError(s).end(),console.error("getAllUserListOfMessageReaction error: ",e)}}))}getMessageReactions(s){return e(this,void 0,void 0,(function*(){const{constants:o}=this._core;this._validateMessageReactionBusinessCapability();const{messageList:n,maxUserCountPerReaction:r=10}=s,a=n[0];let i=null;const c=new Map,{from:d,to:u,conversationType:l}=a,g=this._generateMessageKeyList(n,c);l===o.OuterConstant.CONV_C2C?i=yield function(s){return e(this,void 0,void 0,(function*(){const{from:e,to:o,messageKeyList:n,maxUserCountPerReaction:r}=s,a={From_Account:e,To_Account:o,MsgKeyList:n,Count:r};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:a})}))}({from:d,to:u,messageKeyList:g,maxUserCountPerReaction:r}):l===o.OuterConstant.CONV_GROUP&&(i=yield function(s){return e(this,void 0,void 0,(function*(){let e,{groupId:o,messageSequenceList:n,maxUserCountPerReaction:r}=s;A(o)&&(e=o,o=o.split(S)[0]);const a={GroupId:o,TopicId:e,MsgSeqList:n,Count:r};return t.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:a})}))}({groupId:u,messageSequenceList:g,maxUserCountPerReaction:r}));const{Results:m=[]}=i||{},h=this._extractUserIDsFromReactionResults(m),p=yield this._getUserProfileMap(h);return{code:0,data:{resultList:m.map((e=>{const{ReactionList:t,MsgSeq:s,MsgKey:o}=e;return{messageID:this._generateMessageID({messageSequence:s,messageKey:o,messageIDMap:c}),reactionList:t.map((e=>{const{Reaction:t,Count:s,Reaction_Account:o,ReactedByMe:n}=e;return{reactionID:t,totalUserCount:s,partialUserList:this._generatePartialUserInfo({userIDList:o,userProfileMap:p}),reactedByMyself:1===n}}))}}))}}}))}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:o,userID:n}=t;e.set(n,{nick:s,avatar:o,userID:n})})),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:o}=e,n=`${t}-${s}`,r=this._reactionsMap.get(n)||{};this._reactionsMap.set(n,Object.assign(Object.assign({},r),o))}_validateMessageReactionBusinessCapability(){const{helper:e,constants:t}=this._core;if(!e.checkBusinessCapabilityBits(m))throw new e.ChatError({functionName:"addMessageReaction",code:t.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(t){const{MsgReactionNotifyList:s}=t,{notificationCenter:o,constants:n}=this._core;s.forEach((t=>e(this,void 0,void 0,(function*(){const{C2CMsgInfo:e,GroupMsgInfo:s,MsgReactionSummary:r}=t,{TinyId:a,MsgClientTime:i,MsgRandom:c}=Object.assign(Object.assign({},e),s),d=`${a}-${i}-${c}`,u=this._extractUserIDsFromReactionResults([{ReactionList:r}]),l=yield this._getUserProfileMap(u),g=r.map((e=>{var t;const{Reaction:s,Reaction_Account:o}=e,n=this._generatePartialUserInfo({userIDList:o,userProfileMap:l}),r=o?e.Count:0,a=(null===(t=this._reactionsMap.get(`${d}-${s}`))||void 0===t?void 0:t.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:d,reactionID:s,reactionInfo:{reactionID:s,totalUserCount:r,partialUserList:n}}),{reactionID:s,totalUserCount:r,partialUserList:n,reactedByMyself:a}}));o.emitOuterEvent(n.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:n.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:d,reactionList:g}})}))))}_handleReactionSync(e){var t;const{notificationCenter:s,constants:o}=this._core,{C2CMsgInfo:n={},GroupMsgInfo:r={},Reaction:a,OperateType:i}=e.MsgReactionNotify,{TinyId:c="",MsgClientTime:d=0,MsgRandom:u=0}=Object.assign(Object.assign({},n),r),l=`${c}-${d}-${u}`,g=`${l}-${a}`;if(1===i?this._recordMessageReactedByMe(l,a):this._removeMyReactionRecord(l,a),null===(t=this._reactionsMap.get(g))||void 0===t?void 0:t.reactionID){const e=this._reactionsMap.get(g);e.reactedByMyself=1===i,s.emitOuterEvent(o.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:o.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:o}=e;return s?o.get(s):o.get(t)}_generateMessageKeyList(e,t){const{constants:s}=this._core,o=e[0],{conversationType:n}=o;let r=[];return n===s.OuterConstant.CONV_C2C?r=e.map((e=>{const{clientSequence:s,random:o,time:n,ID:r}=e,a=`${s}_${o}_${n}`;return t.set(a,r),a})):n===s.OuterConstant.CONV_GROUP&&(r=e.map((e=>{const{ID:s,sequence:o}=e;return t.set(o,s),o}))),r}};var b=new class{init(e){this._core=e;const{helper:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:o,GROUP_MESSAGE_READ_RECEIPT:n},notificationCenter:r}=e;t.registerApi({apiName:"sendMessageReadReceipt",context:this}),t.registerApi({apiName:"getMessageReadReceiptList",context:this}),t.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),r.subscribeInnerEvent(s,o,this._handleC2CMessageReadReceipt,this),r.subscribeInnerEvent(s,n,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(s){return e(this,void 0,void 0,(function*(){const{common:o,constants:n}=this._core,r=this._filterValidMessageSendByOther(s);if(0===r.length)throw new o.ChatError({code:n.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{const{conversationType:s}=r[0];return s===n.OuterConstant.CONV_C2C?yield function(s){return e(this,void 0,void 0,(function*(){const{common:e,constants:o}=t.core,n={Peer_Account:s[0].conversationID.replace(o.OuterConstant.CONV_C2C,""),C2CMsgInfo:s.map((e=>{const{from:t,to:s,sequence:o,random:n,time:r,clientTime:a}=e;return{From_Account:t,To_Account:s,MsgSeq:o,MsgRandom:n,MsgTime:r,MsgClientTime:a}}))};return e.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:n})}))}(r):yield function(s){return e(this,void 0,void 0,(function*(){const{common:e,constants:o}=t.core,n={GroupId:s[0].conversationID.replace(o.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map((e=>({MsgSeq:e.sequence})))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:n})}))}(r),{code:0,data:{}}}catch(e){const{errorCode:t,errorInfo:s}=e;throw new o.ChatError({code:t,message:s})}}))}getMessageReadReceiptList(s){return e(this,void 0,void 0,(function*(){const{common:o,constants:n}=this._core;try{const{conversationType:o}=s[0];if(o===n.OuterConstant.CONV_GROUP){const o=this._filterValidMessageSendByMe(s);if((null==o?void 0:o.length)>0){const n=yield function(s){return e(this,void 0,void 0,(function*(){const{common:e,constants:o}=t.core,n={GroupId:s[0].conversationID.replace(o.OuterConstant.CONV_GROUP,""),MsgSeqList:s.map((e=>({MsgSeq:e.sequence})))};return e.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:n})}))}(o),{GroupMsgReceiptList:r}=n||{};this._updateGroupMessagesReadReceiptInfo({messageList:s,readReceiptList:r})}}return{code:0,data:{messageList:s}}}catch(e){const{errorCode:t,errorInfo:s}=e;throw new o.ChatError({code:t,message:s})}}))}getGroupMessageReadMemberList(s){return e(this,void 0,void 0,(function*(){const{constants:o,common:n}=this._core,{message:r,filter:a=D.READ,cursor:i=""}=s,{conversationID:c,sequence:d,ID:u}=r,l=c.replace(o.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:o,filter:n,cursor:r,count:a}=s,i={MsgSeq:e,GroupId:o,Filter:n,Cursor:r,Num:a};return t.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:i})}))}({groupID:l,sequence:d,filter:a,cursor:i,count:g});if(s){const{Cursor:e,IsFinish:t,UnreadList:o,ReadList:n}=s,r={cursor:e,isCompleted:1===t,messageID:u,unreadUserIDList:[],readUserIDList:[]};return a===D.READ?r.readUserIDList=n.map((e=>e.Read_Account)):a===D.UNREAD&&(r.unreadUserIDList=o.map((e=>e.Unread_Account))),{code:0,data:r}}}catch(e){const{errorCode:t,errorInfo:s}=e;throw new n.ChatError({code:t,message:s})}}))}_handleC2CMessageReadReceipt(e){const t=[],{constants:s,helper:o}=this._core,{C2cMsgInfo:n,PeerReadTime:r,Peer_Account:a}=e;if(o.isEmpty(n))return;const i=`${s.OuterConstant.CONV_C2C}${a}`;null==n||n.forEach((e=>{const{TinyId:s,MsgClientTime:o,MsgRandom:n}=e,c=`${s}-${o}-${n}`,d=L({conversationID:i,messageID:c});d&&!d.readReceiptInfo.isPeerRead&&(d.readReceiptInfo.isPeerRead=!0,d.readReceiptInfo.timestamp=r,t.push({userID:a,messageID:c,isPeerRead:!0,timestamp:r}))})),this._emitReadReceiptEventIfNeed(t)}_updateGroupMessagesReadReceiptInfo(e){const{messageList:t,readReceiptList:s}=e,o=new Map;t.forEach((e=>{o.set(e.sequence,e)})),null==s||s.forEach((e=>{if(0===e.Code){const{MsgSeq:t,ReadNum:s,UnreadNum:n}=e,r=o.get(t);r&&(r.readReceiptInfo.readCount=s,r.readReceiptInfo.unreadCount=n)}}))}_handleGroupMessageReadReceipt(e){const t=[],{constants:s}=this._core,{GroupTips:o}=e;o.forEach((e=>{const{MsgBody:{GroupMsgReceiptList:o},GroupInfo:{GroupId:n}}=e,r=`${s.OuterConstant.CONV_GROUP}${n}`;null==o||o.forEach((e=>{const{TinyId:s,MsgClientTime:o,MsgRandom:a,ReadNum:i,UnreadNum:c}=e,d=`${s}-${o}-${a}`,u=L({conversationID:r,messageID:d}),l={groupID:n,messageID:d,readCount:0,unreadCount:0};u&&("number"==typeof i&&(u.readReceiptInfo.readCount=i,l.readCount=i),"number"==typeof c&&(u.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:o}=e;return s===this._core.common.getCurrentUserID()&&o===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:o}=this._core;o.unSubscribeInnerEvent(e,t,this._handleC2CMessageReadReceipt,this),o.unSubscribeInnerEvent(e,s,this._handleGroupMessageReadReceipt,this)}};const w=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}}},{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}}}),P=Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0});class x{constructor(e){this._core=e}deleteMessage(t){return e(this,void 0,void 0,(function*(){const{to:e,messageIdentifiers:s}=t,o="openim.delete_c2c_msg_ramble",n={From_Account:this._getCurrentUserId(),To_Account:e,MsgKeyList:s},r=this._core.helper.generateProtocolData({servcmd:o,data:n}),a=`${r.head.seq}${o}`;return this._core.channel.sendPacket(r,{requestId:a})}))}revokeMessage(t){return e(this,void 0,void 0,(function*(){const{to:e,from:s,sequence:o,time:n,random:r}=t,a="openim.msgwithdraw",i={MsgInfo:{From_Account:s,To_Account:e,MsgSeq:o,MsgRandom:r,MsgTimeStamp:n}},c=this._core.helper.generateProtocolData({servcmd:a,data:i}),d=`${c.head.seq}${a}`;return this._core.channel.sendPacket(c,{requestId:d})}))}_getCurrentUserId(){var e,t;return null===(t=null===(e=this._core)||void 0===e?void 0:e.store.get("login"))||void 0===t?void 0:t.userId}}class N{constructor(e){this._core=e}deleteMessage(t){return e(this,void 0,void 0,(function*(){const{to:e,messageIdentifiers:s}=t,o="group_open_http_svc.delete_group_ramble_msg_by_seq",n={GroupId:e,Deleter_Account:this._getCurrentUserId(),Seqs:s},r=this._core.helper.generateProtocolData({servcmd:o,data:n}),a=`${r.head.seq}${o}`;return this._core.channel.sendPacket(r,{requestId:a})}))}revokeMessage(t){return e(this,void 0,void 0,(function*(){const{to:e,sequence:s}=t,o="group_open_http_svc.group_msg_recall",n={GroupId:e,MsgSeqList:[{MsgSeq:s}]},r=this._core.helper.generateProtocolData({servcmd:o,data:n}),a=`${r.head.seq}${o}`;return this._core.channel.sendPacket(r,{requestId:a})}))}_getCurrentUserId(){var e,t;return null===(t=null===(e=this._core)||void 0===e?void 0:e.store.get("login"))||void 0===t?void 0:t.userId}}class k{constructor(e){this._core=e}generateRevokeMessage(e){const{conversationID:t,sequence:s,random:o,tinyID:n,clientTime:r,revokeReason:a,revoker:i}=e;let c={};const{messageDataHandler:d}=this._core.message;return c=d.revokeMessage({conversationID:t,sequence:s,random:o,revoker:i}),c||(c={conversationID:t,sequence:s},n&&r&&o&&(c.ID=`${n}-${r}-${o}`)),c=Object.assign(Object.assign({},c),{revoker:i,revokeReason:a,revokerInfo:{userID:i,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)}}))}filterValidMessages(e){return e.filter((e=>{const t=!this._core.helper.isEmpty(null==e?void 0:e.getElements()),s=1===(null==e?void 0:e.isPlaceMessage);if(!t){this._core.ssoLog.createSSOLogData({method:"emptyMessageBody"}).setLogInfo({message:`from:${e.from} to:${e.to} sequence:${e.sequence}`}).end()}return t&&!s}))}_fetchUserInfos(t){return e(this,void 0,void 0,(function*(){var e,s;const o=yield null===(e=this._core.user.userProfile)||void 0===e?void 0:e.getUserProfile({userIDList:t});return(null==o?void 0:o.data)?null===(s=o.data)||void 0===s?void 0:s.reduce(((e,{userID:t,nick:s,avatar:o})=>(e[t]={nick:s||"",avatar:o||""},e)),{}):null}))}}var G=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(e){this._core=e,this._groupMessageAction=new N(e),this._c2cMessageAction=new x(e),this._messageHelper=new k(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=[],o=[];const{conversationID:n,conversationType:r}=t[0],a=n.replace(r,"");if("@TIM#SYSTEM"===r)throw new this._core.helper.ChatError({code:s});if(t.forEach((t=>{const{conversationID:s,conversationType:a,status:i,_onlineOnlyFlag:c,sequence:d,random:u,time:l}=t||{};if("success"===i&&s===n&&a===r){if(!c){const t="C2C"===a?`${d}_${u}_${l}`:String(d);e.push(t)}o.push(t)}})),0===e.length)return this._handleDeleteMessageSuccess(o),{code:0,data:{messageList:o}};e.length>30&&(e=e.slice(0,30),o=o.slice(0,30));try{return"C2C"===r?yield this._c2cMessageAction.deleteMessage({to:a,messageIdentifiers:e}):yield this._groupMessageAction.deleteMessage({to:a,messageIdentifiers:e}),this._handleDeleteMessageSuccess(o),{code:0,data:{messageList:o}}}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 s=this._core.ssoLog.createSSOLogData({method:"revokeMessage"}),{conversationType:o,isRevoked:n}=t;let r=null;if("@TIM#SYSTEM"===o)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"});s.setLogInfo({message:`type:${t.type} from:${t.from} to:${t.to}`});try{if(r="C2C"===o?yield this._c2cMessageAction.revokeMessage(t):yield this._groupMessageAction.revokeMessage(t),r){const{RecallRetList:o}=r,n=(null===(e=null==o?void 0:o[0])||void 0===e?void 0:e.RetCode)||0;if(0!==n)throw new this._core.helper.ChatError({code:n});return s.end(),yield this._handleRevokeMessageSuccess(t),{code:0,data:{message:t}}}}catch(e){const{errorCode:t}=e,s=new this._core.helper.ChatError({functionName:"revokeMessage",code:t});throw this._core.ssoLog.getSSOLogData("revokeMessage").setError(s).end(),s}}))}resendMessage(t,s){return e(this,void 0,void 0,(function*(){var e,o;return t.isResend=!0,t.status="unSend",null===(o=null===(e=this._core)||void 0===e?void 0:e.apiMap)||void 0===o?void 0:o.sendMessage(t,s)}))}findMessage(e){return this._core.message.messageDataHandler.findMessage(e)}_handleDeleteMessageSuccess(e){0!==e.length&&(e.forEach((e=>{e.isDeleted=!0;const t=this._core.message.messageDataHandler.getLocalMessageList(e.conversationID);null==t||t.forEach((t=>{t.ID===e.ID&&(t.isDeleted=!0)}))})),this._core.notificationCenter.emitInnerEvent(this._core.InnerEvent.MESSAGE_DELETED,e[0].conversationID))}_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:o,sequence:n,random:r}=t;this._core.message.messageDataHandler.revokeMessage({conversationID:o,sequence:n,random:r,revoker:s}),yield this._messageHelper.updateRevokerInfo([t])}))}};class U{static parseServerPushElement(e){const{MsgContent:t={}}=e,{Index:s,Data:o}=t;return new U({index:s,data:o})}constructor(e){this.type=u.MSG_FACE;const{index:t,data:s}=e;this.content={index:t,data:s}}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"}}}convertToBackendFormat(){const{index:e,data:t}=this.content;return{MsgType:this.type,MsgContent:{Index:e,Data:t}}}}var $=new class{init(e){this._core=e,e.message.messageFactory.registerElementClass(u.MSG_FACE,U),e.helper.registerApi({apiName:"createFaceMessage",context:this}),e.helper.registerApi({apiName:"createTextAtMessage",context:this}),e.helper.registerApi({apiName:"createForwardMessage",context:this})}createFaceMessage(e){if(!e)return null;const{index:t,data:s}=(null==e?void 0:e.payload)||{},o=new U({index:t,data:s}),n=this._getCurrentUserId(),r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},e),{from:n}));return r.setElement(o),r}createTextAtMessage(e){const{atUserList:t}=(null==e?void 0:e.payload)||{},s=this._core.apiMap.createTextMessage(e),{OuterConstant:o}=this._core;if(!s)return null;if(Array.isArray(t)){const e=[],n=[];t.forEach((t=>{t!==o.MSG_AT_ALL?(e.push({GroupAtAllFlag:h,GroupAt_Account:t}),n.push(t)):(e.push({GroupAtAllFlag:p}),n.push(o.MSG_AT_ALL))})),s._groupAtInfoList=e,s.atUserList=n}return s}createForwardMessage(e){const{helper:t,OuterConstant:s}=this._core,{to:o,conversationType:n,priority:r,payload:a,needReadReceipt:i,receiverList:c,cloudCustomData:d="",isSupportExtension:u=!1}=e;if(!Array.isArray(a._elements))throw new t.ChatError({functionName:"createForwardMessage",code:2454});if(a.type===s.MSG_GRP_TIP)throw new t.ChatError({functionName:"createForwardMessage",code:2453});const l=this._getCurrentUserId(),g=this._core.message.messageFactory.createMessage({to:o,from:l,conversationType:n,isPlaceMessage:0,priority:r,payload:a,needReadReceipt:i,isSupportExtension:u,cloudCustomData:d,receiverList:c});return g.setRelayFlag(!0),g.setElement(a._elements[0]),g}_getCurrentUserId(){var e;return null===(e=this._core.store.get("login"))||void 0===e?void 0:e.userId}};class H{init(e){this._messageHelper=new k(e),this._core=e;const{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{C2C_REVOKED_MESSAGE:o},helper:{registerWorkflowStep:n},constants:{WORKFLOW_NAME:r,WORKFLOW_STEP:a}}=e;t.subscribeInnerEvent(s,o,this._handleC2CNotifyMessage,this),n(r.SYNC_SERVER_INFO_AFTER_RE_ONLINE,a.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:o}=this._core;t.forEach((t=>{const{MsgRand:s,MsgSeq:o,To_Account:n,From_Account:r,RevokerInfo:{Revoker_Account:a,Revoke_Reason:i,Reason:c=i}}=t,d=this._getCurrentUserId()===r?`C2C${n}`:`C2C${r}`,u=this._messageHelper.generateRevokeMessage({conversationID:d,sequence:o,random:s,revoker:a,revokeReason:c});e.push(u)})),yield this._messageHelper.updateRevokerInfo(e),s.emitOuterEvent(o.MESSAGE_REVOKED,{name:o.MESSAGE_REVOKED,data:e})}))}_handleC2CRevokeMessagesFromUnreadMessageSync(t){return e(this,void 0,void 0,(function*(){const{revokedMessageList:e}=t.result;yield this._parseAndEmitC2CRevokedMessages(e)}))}_getCurrentUserId(){var e,t;return null===(t=null===(e=this._core)||void 0===e?void 0:e.store.get("login"))||void 0===t?void 0:t.userId}dispose(){const{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{C2C_REVOKED_MESSAGE:s}}=this._core;e.unSubscribeInnerEvent(t,s,this._handleC2CNotifyMessage,this)}}class F{init(e){this._messageHelper=new k(e),this._core=e;const{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{GROUP_MESSAGE_REVOKED:o}}=e;t.subscribeInnerEvent(s,o,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}}=t,o=[],{notificationCenter:n,OuterEvent:r,InnerEvent:a}=this._core;s.forEach((t=>{const{Random:s,MsgSeq:n,GroupId:r,MsgClientTime:a,TinyId:i,TopicId:c,RevokerInfo:{Revoker_Account:d=(null==e?void 0:e.Revoker_Account)||"",Reason:u=(null==e?void 0:e.Reason)||""}}=t,l=c?`GROUP${c}`:`GROUP${r}`,g=this._messageHelper.generateRevokeMessage({conversationID:l,sequence:n,random:s,tinyID:i,clientTime:a,revoker:d,revokeReason:u});o.push(g)})),0!==o.length&&(yield this._messageHelper.updateRevokerInfo(o),n.emitOuterEvent(r.MESSAGE_REVOKED,{name:r.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 V=new class{constructor(){this._c2cMessageReceiver=new H,this._groupMessageReceiver=new F}init(e){this._c2cMessageReceiver.init(e),this._groupMessageReceiver.init(e)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}};class B{constructor(e){this._lastMessageSequenceMapOnDisconnect=new Map,this._core=e,this._messageHelper=new k(e)}getRoamingMessagesByAnchor(t){return e(this,void 0,void 0,(function*(){try{const e=this._core.ssoLog.createSSOLogData({method:"getRoamingMessagesByAnchor"}),{conversationID:s,count:o,direction:r,sequence:a}=t,i=s.replace(n,"");let c=a;if(r===g.BACKWARD){if("number"!=typeof a)return{messageList:[],hasNoMoreHistoryMessage:!1,nextReqMessageIDFromServer:""};c=a+o-1}const d={GroupId:i,ReqMsgNumber:o,WithRecalledMsg:1,Version:1};c&&(d.ReqMsgSeq=c);const u="group_open_http_svc.group_msg_get",m=this._core.helper.generateProtocolData({servcmd:u,data:d}),h=`${m.head.seq}${u}`,p=yield this._core.channel.sendPacket(m,{requestId:h});if(p){const{RspMsgList:t=[],NextReqMsgSeq:s=0,IsFinished:o,InvisibleMsgSeq:n}=p;e.setLogInfo({message:`groupID:${i} sequence:${a} reqSeq:${c} direction:${r}\n complete:${o} nextSequence:${s} remoteMsgCount:${t.length} invisibleSequenceList:${n}`}).end();const d=[];for(let e=0;e<t.length;e++){const s=t[e],o=this._parseMessage(s);d.push(o)}d.reverse();const u=[l.NO_MORE_DATA,l.DATA_HAS_EXPIRED].includes(o);return{messageList:this._messageHelper.filterValidMessages(d),invisibleSequenceList:n,nextReqMessageIDFromServer:s,hasNoMoreHistoryMessage:u}}}catch(e){const t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getRoamingMessagesByAnchor").setError(t).end()}}))}recoverHistoryMessage(t){return e(this,void 0,void 0,(function*(){const{message:{messageReceiver:s,messageDataHandler:o},notificationCenter:n,OuterEvent:r}=this._core;null==t||t.forEach((t=>e(this,void 0,void 0,(function*(){const{conversationID:e,lastMessage:a}=t;let i=this._getLocalLastMessageSequence(e);const c=a.lastSequence;if(this._shouldRecoverHistory({localLastMessageSequence:i,serverLastMessageSequence:c})){const t=c-i;let a=!1;const d=Math.ceil(t/20);for(let t=0;t<d;t++)try{const t=c-i,d=Math.min(20,t),u=yield this.getRoamingMessagesByAnchor({conversationID:e,sequence:i+d,direction:g.FORWARD,count:d}),{nextReqMessageIDFromServer:l,hasNoMoreHistoryMessage:m,messageList:h}=u;a=m&&l<0,i=h[h.length-1].sequence;const p=[];if(Array.isArray(h)&&(h.forEach((e=>{s.groupMessageReceiver.updateMessageProfile(e);o.storeConversationMessage(e)&&p.push(e)})),p.length>0&&n.emitOuterEvent(r.MESSAGE_RECEIVED,{name:r.MESSAGE_RECEIVED,data:p})),a)break}catch(e){console.debug(e);break}}}))))}))}updateLastMessageSequenceMapOnDisconnect(){const e=this._core.message.messageDataHandler.getContinuousMessagesByConversation();for(const[t,s]of e){if(t.startsWith("C2C"))continue;const e=Array.from(s.values());if((null==e?void 0:e.length)>0){const s=e[e.length-1].sequence;this._lastMessageSequenceMapOnDisconnect.set(t,s)}}}_shouldRecoverHistory(e){const{localLastMessageSequence:t,serverLastMessageSequence:s}=e;if("number"!=typeof t||"number"!=typeof s)return!1;const o=s-t;return 0!==s&&t&&(o>=a&&o<i)}_getLocalLastMessageSequence(e){if(this._lastMessageSequenceMapOnDisconnect.has(e))return this._lastMessageSequenceMapOnDisconnect.get(e);const t=this._core.message.messageDataHandler.getLocalMessageList(e),s=t[t.length-1];return null==s?void 0:s.sequence}_parseMessage(e){const{constants:{OuterConstant:t}}=this._core,s=n;4===e.Event&&(e.MsgBody.MsgType=t.MSG_GRP_TIP);const o=this._core.message.messageHelper.parseServerGroupMessage(e),r=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:s,flow:"in"}));return r.setElement(o.elements),r}}class K{constructor(e){this._historyMessageListFetchAnchors=new Map,this._core=e,this._messageHelper=new k(e)}getRoamingMessagesByAnchor(s){return e(this,void 0,void 0,(function*(){var n;try{const{conversationID:r,count:a,messageID:i,time:c,direction:d}=s;let u=c,l="";if(!c){const e=i?this._core.message.messageDataHandler.findMessage(i):null;if(u=(null==e?void 0:e.time)||0,i&&this._historyMessageListFetchAnchors.has(r)){const e=this._historyMessageListFetchAnchors.get(r);u=e.lastMessageTime,l=e.messageKey}}const g=r.replace(o,""),m=yield function(s){return e(this,void 0,void 0,(function*(){const{peerAccount:e,count:o,lastMessageTime:n,messageKey:r,direction:a}=s,i={Peer_Account:e,MaxCnt:o,WithRecalledMsg:1,LastMsgTime:n,MsgKey:r,GetDirection:a};return t.core.common.buildAndSendPacket({servcmd:"openim.getroammsg",data:i})}))}({count:a,lastMessageTime:u,messageKey:l,peerAccount:g,direction:d});if(m){const{MsgList:e=[],Complete:t,MsgKey:s,LastMsgTime:o}=m;this._historyMessageListFetchAnchors.set(r,{messageKey:s,lastMessageTime:o});const a=[];for(let t=0;t<e.length;t++){const s=e[t],o=this._parseMessage(s);a.push(o)}const i=this._messageHelper.filterValidMessages(a);return{messageList:i,nextReqMessageIDFromServer:null===(n=i[0])||void 0===n?void 0:n.ID,lastMessageTime:o,hasNoMoreHistoryMessage:1===t}}}catch(e){throw new this._core.helper.ChatError({code:null==e?void 0:e.code})}}))}_parseMessage(e){const t=o,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 W=new class{constructor(){this._clearedConversations=new Set,this._fetchedCompleteConversations=new Set}init(e){this._core=e,this._groupMessageHistory=new B(e),this._c2cMessageHistory=new K(e),this._messageHelper=new k(e);const{InnerEvent:t,notificationCenter:s,constants:o}=e;e.helper.registerApi({apiName:"getMessageList",context:this}),e.helper.registerApi({apiName:"getMessageListHopping",context:this}),e.helper.registerWorkflowStep(o.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,o.WORKFLOW_STEP.HISTORY_MESSAGE_RECOVER,this._recoverHistoryMessage,this),s.subscribeInnerEvent(t.SOCKET_DISCONNECTED,this._handleSocketDisconnected,this)}getMessageList(s){return e(this,void 0,void 0,(function*(){try{const e=this._core.ssoLog.createSSOLogData({method:"getMessageList"});let{conversationID:a,nextReqMessageID:i}=s;const u=r;if("@TIM#SYSTEM"===a)return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};const l=this._getAvailableLocalMessagesCount({conversationID:a,nextReqMessageID:i});if(this._needFetchHistoryMessageList({conversationID:a,availableLocalMessagesCount:l,targetCount:u})){let s=null;if(a.startsWith(n)?s=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:a,sequence:Number(i),count:u,direction:g.FORWARD}):a.startsWith(o)&&(s=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:a,messageID:i,count:u,direction:g.FORWARD})),s){const{nextReqMessageIDFromServer:n,hasNoMoreHistoryMessage:r,messageList:u}=s,g=this._core.message.messageDataHandler.prependLocalMessageList({messageList:u,conversationID:a});!function(e){const{appStore:s,message:o,OuterConstant:n}=t.core,r=s.conversationStore.getConversation(e),a=o.messageDataHandler.getLocalMessageList(e);if(!r||0===a.length||e===n.CONV_SYSTEM)return;const i=[];for(let e=0;e<a.length;e++)"in"!==a[e].flow?"out"!==a[e].flow||a[e].isRead||a[e].setIsRead(!0):i.push(a[e]);let c=0;if(r.type===n.CONV_C2C){const e=i.slice(-r.unreadCount).filter((e=>e.isRevoked)).length;c=i.length-r.unreadCount-e}else c=i.length-r.unreadCount;for(let e=0;e<c&&!i[e].isRead;e++)i[e].setIsRead(!0)}(a),yield d(a),a.startsWith(o)&&(yield c({messageList:u,conversationID:a}));const m=this._core.message.messageDataHandler.getLocalMessageList(a).slice(0,g.length+l),h=m.filter((e=>e.isRevoked));yield this._messageHelper.updateRevokerInfo(h);const p={nextReqMessageID:r?"":String(n),messageList:m,isCompleted:r},_=m.map((e=>e.sequence));return e.setLogInfo({message:`conversationID: ${a} nextReqMessageID: ${i} \n availableLocalMessagesCount: ${l} sequenceList: ${JSON.stringify(_)} `}).end(),{code:0,data:p}}return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}}}e.setLogInfo({message:`conversationID: ${a} nextReqMessageID: ${i} availableLocalMessagesCount: ${l}}`}).end();return{code:0,data:yield this._getMessageListFromMemory({conversationID:a,nextReqMessageID:i,count:u})}}catch(e){const t=new this._core.helper.ChatError({code:null==e?void 0:e.code});this._core.ssoLog.getSSOLogData("getMessageList").setError(t).end(),console.debug(t)}}))}getMessageListHopping(t){return e(this,void 0,void 0,(function*(){var e,s;const{conversationID:a,sequence:i,time:c,direction:d=g.FORWARD}=t,{isEmpty:u}=this._core.helper;if(![g.BACKWARD,g.FORWARD].includes(d))throw new this._core.helper.ChatError({message:"direction must be 0 or 1"});let{count:l=r}=t;l=l>r?r:l;let m=null;if(a.startsWith(n)){if(m=yield this._groupMessageHistory.getRoamingMessagesByAnchor({conversationID:a,sequence:i,count:l,direction:d}),m){const{nextReqMessageIDFromServer:t,hasNoMoreHistoryMessage:o,messageList:n,invisibleSequenceList:r}=m;if(this._core.message.messageDataHandler.storeSparseMessageList(n),d===g.FORWARD){const e=o&&t<1;return{code:0,data:{messageList:n,isCompleted:e,nextMessageSeq:e?"":t}}}if(d===g.BACKWARD){if(u(n)&&u(r))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};const t=(null===(e=null==n?void 0:n[n.length-1])||void 0===e?void 0:e.sequence)||0,o=(null===(s=null==r?void 0:r[r.length-1])||void 0===s?void 0:s.sequence)||0;return{code:0,data:{messageList:n.filter((e=>e.sequence>=i)),isCompleted:!1,nextMessageSeq:Math.max(t,o)+1}}}return{code:0,data:m}}}else if(a.startsWith(o)&&(m=yield this._c2cMessageHistory.getRoamingMessagesByAnchor({conversationID:a,count:l+1,time:c,direction:d}),m)){const{messageList:e,lastMessageTime:t,hasNoMoreHistoryMessage:s}=m;return s||(d===g.FORWARD?e.shift():e.pop()),this._core.message.messageDataHandler.storeSparseMessageList(e),{code:0,data:{messageList:e,isCompleted:s,nextMessageTime:s?"":t}}}}))}_getAvailableLocalMessagesCount({conversationID:e,nextReqMessageID:t}){const s=this._core.message.messageDataHandler.getLocalMessageList(e),{length:r}=s;if(!t)return r;let a=-1;return(null==e?void 0:e.startsWith(o))?a=s.findIndex((e=>e.ID===t)):(null==e?void 0:e.startsWith(n))&&(a=s.findIndex((e=>t.includes("-")?e.ID===t:String(e.sequence)===t))),-1===a?0:a}_needFetchHistoryMessageList({conversationID:e,availableLocalMessagesCount:t,targetCount:s}){return!!this._clearedConversations.has(e)||t<=s&&!this._fetchedCompleteConversations.has(e)}_getMessageListFromMemory(t){return e(this,arguments,void 0,(function*({conversationID:e,nextReqMessageID:t,count:s}){const n=this._core.message.messageDataHandler.getLocalMessageList(e),r=n.length;let a=r,i={isCompleted:!1,nextReqMessageID:"",messageList:[]},u=0,l=r;return t?t&&(l=n.findIndex((s=>e.startsWith(o)?s.ID===t:String(s.sequence)===t)),u=l>s?l-s:0,a=l):u=r>s?r-s:0,i.nextReqMessageID=0===u?"":this._generateNextReqMessageID({conversationID:e,targetIndex:u}),i.messageList=n.slice(u,l),i.isCompleted=a<=s,e.startsWith(o)&&(yield d(e),yield c({messageList:i.messageList,conversationID:e})),i}))}_generateNextReqMessageID({conversationID:e,targetIndex:t}){const s=this._core.message.messageDataHandler.getLocalMessageList(e);return e.startsWith("C2C")?s[t].ID:String(s[t].sequence)}_recoverHistoryMessage(){const{appStore:e,constants:{OuterConstant:{GRP_AVCHATROOM:t}}}=this._core,s=e.conversationStore.getConversationMap()||{};if(s instanceof Map){const e=[...s.values()].filter((e=>e.type===n&&e.groupProfile.type!==t));this._groupMessageHistory.recoverHistoryMessage(e)}}_handleSocketDisconnected(){this._groupMessageHistory.updateLastMessageSequenceMapOnDisconnect()}dispose(){const{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.SOCKET_DISCONNECTED,this._handleSocketDisconnected,this)}};var j=new class{constructor(){this._core=null}init(e){this._core=e;const{helper:t}=e;t.registerApi({apiName:"translateText",context:this})}translateText(t){return e(this,void 0,void 0,(function*(){try{const{sourceLanguage:s,sourceTextList:o,targetLanguage:n}=t,r=yield function(t,s){return e(this,void 0,void 0,(function*(){var e,o;const{sourceTextList:n,sourceLanguage:r,targetLanguage:a}=t,{store:i,helper:c,channel:d}=s,u="im_open_translate.ws_batch_trans_text",l={SourceText:n,Source:r,Target:a,FromAccount:null===(e=i.get("login"))||void 0===e?void 0:e.tinyID,SDKAppID:null===(o=i.get("instance"))||void 0===o?void 0:o.sdkAppId},g=c.generateProtocolData({servcmd:u,data:l}),m=`${g.head.seq}${u}`,h=yield d.sendPacket(g,{requestId:m});if(h){const{CmdErrorCode:e,TargetText:t}=h;return{cmdErrorCode:e,translatedTextList:t}}}))}({sourceLanguage:s,sourceTextList:o,targetLanguage:n},this._core);if(r){const{cmdErrorCode:{ErrorCode:e,ErrorInfo:t},translatedTextList:s}=r;if(0===e)return{code:0,data:{translatedTextList:s}};throw{errorCode:e,errorInfo:t,message:t}}}catch(e){const{errorCode:t,errorInfo:s}=e||{};throw new this._core.helper.ChatError({functionName:"translateText",code:t,message:s})}}))}};var Y=new class{init(e){this._core=e,e.common.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(s){return e(this,void 0,void 0,(function*(){var e,o;const{message:n,language:r=_.ZH_PY}=s;let{url:a}=n.payload||{};const i=null===(e=this._core.store.get("login"))||void 0===e?void 0:e.userID;n.from===i&&"out"===n.flow&&(a=n.payload.remoteAudioUrl),this._validateVoiceFormat(a);const c=(null===(o=I.exec(a))||void 0===o?void 0:o[1])||"mp3",d=E[r]||R;try{const e=yield function(e){var s;const{store:o,common:n}=t.core,{url:r,format:a,serverLanguageType:i}=e,c={BytesUrl:r,BytesEngServiceType:i,BytesVoiceFormat:a,Uint32Sdkappid:null===(s=o.get("instance"))||void 0===s?void 0:s.sdkAppId,Uint64SourceType:0};return n.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:c})}({url:a,format:c,serverLanguageType:d});if(e){const{CmdErrorCode:t,BytesResult:s}=e;if(0===t.ErrorCode)return{code:0,data:{result:s}};throw{code:t.ErrorCode,message:t.ErrorInfo}}}catch(e){const{code:t,message:s}=e||{},o=new this._core.common.ChatError({functionName:"convertVoiceToText",code:t,message:s});console.error(o),this._core.ssoLog.createSSOLogData({method:"convertVoiceToText"}).setError(o).end()}}))}_validateVoiceFormat(e){if(!I.test(e))throw new this._core.common.ChatError({code:2119})}};class J{constructor(e){const{constants:s,common:o,utils:n}=t.core,{CONV_C2C:r,CONV_GROUP:a}=s.OuterConstant,{ID:i,tinyID:c,from:d,to:u,clientTime:l=o.timeManager.getServerTimeSeconds()||0,random:g,sequence:m,cloudCustomData:h="",nick:p="",avatar:_="",clientSequence:v,messageBody:M,conversationType:f,groupID:y,_elements:R,time:E}=e;this.ID=i||`${c}-${l}-${g}`,this.messageRandom=g,this.from=d,this.messageSender=d,this.time=E,this.messageSequence=m,this.clientSequence=v||m,this.clientTime=l,this.cloudCustomData=h,this.messageReceiver=u,this.avatar=_,this.nick=p,R&&(R[0].payload=R[0].payload||R[0].content,R[0]