@tencentcloud/lite-chat 1.6.5 → 1.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencentcloud/lite-chat",
3
- "version": "1.6.5",
3
+ "version": "1.6.6",
4
4
  "description": "Tencent Cloud Chat SDK for Web/Mini Program/uni-app/React Native/Donut",
5
5
  "main": "standard.js",
6
6
  "types": "index.d.ts",
@@ -1 +1 @@
1
- const e=new class{init(e){this.core=e}};function t(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(s=Object.getOwnPropertySymbols(e);o<s.length;o++)t.indexOf(s[o])<0&&Object.prototype.propertyIsEnumerable.call(e,s[o])&&(n[s[o]]=e[s[o]])}return n}function n(e,t,n,s){return new(n||(n=Promise))(function(o,i){function r(e){try{u(s.next(e))}catch(e){i(e)}}function a(e){try{u(s.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(r,a)}u((s=s.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const s="AV_MBR_LIST",o="AV_BAN_MBR",i={NORMAL_MESSAGE:3,GROUP_TIPS_HAS_ROAMING:4,GROUP_SYSTEM_MESSAGE:5,GROUP_TIPS_HAS_NO_ROAMING:6,BROADCAST_MESSAGE:17,MESSAGE_REVOKED:20,MESSAGE_REACTION:21,LIVE_CUSTOM_DATA:100},r={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21},a=60,u=2603,l=2686,c=2688,g=3122;class p{constructor(e){const{core:t,manager:n,groupID:s,getRequestParams:o,onSuccess:i,onFail:r}=e;this._name="Polling",this._core=t,this._manager=n,this._timeoutID=-1,this._isRunning=!1,this._groupID=s,this._getRequestParams=o,this._onSuccess=i,this._onFail=r}start(){this._isRunning=!0,this._request(),console.log(`${this._name}.start pollingInterval:${this._manager.getCurrentPollingInterval(this._groupID)}`)}isRunning(){return this._isRunning}_request(){return n(this,void 0,void 0,function*(){try{const e=this._getRequestParams(this._groupID),t=yield function(e,t){return n(this,void 0,void 0,function*(){const{longPollingKey:n,startSequence:s,startBroadcastSeq:o,simplifiedMessage:i}=e,r={Key:n,StartSeq:s,StartBroadcastSeq:o,DownsizeFlag:i,USP:1,HoldTime:90};return t.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:r})})}(e,this._core);this._onSuccess(this._groupID,t);const s=this._manager.getCurrentPollingInterval(this._groupID);this._runNextPolling(s)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}})}_runNextPolling(e){this.isRunning()&&(this._timeoutID>-1&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(`${this._name}.stop timerID:${this._timeoutID}`),this._timeoutID>-1&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class h{constructor(e){this._maxLength=e,this._map=new Map}set(e){var t;if(this._map.size>=this._maxLength){const e=(null===(t=this._map.entries().next().value)||void 0===t?void 0:t[0])||"";this._map.delete(e)}this._map.set(e,1)}has(e){return this._map.has(e)}delete(e){this.has(e)&&this._map.delete(e)}clear(){this._map.clear()}}const _=e=>e===i.GROUP_TIPS_HAS_NO_ROAMING||e===i.GROUP_TIPS_HAS_ROAMING,m=e=>e===i.GROUP_SYSTEM_MESSAGE;function d(n){const s=function(e){const{E:n,MCT:s,MR:o,MP:i,MTS:r,GId:a,MS:u,CCD:l,F_Account:c,IsSys:g,GInf:p,MsgBody:h}=e,_=t(e,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:n,MsgClientTime:s,MsgRandom:o,MsgPriority:i,MsgTimeStamp:r,ToGroupId:a,MsgSeq:u,CloudCustomData:l,From_Account:c,IsSystemMsg:g,GroupInfo:M(p),MsgBody:v(h)},_)}(n);return function(t){const{Event:n}=t;(_(n)||m(n))&&(t.From_Account=t.From_Account||"@TIM#SYSTEM");s=n,(s===i.BROADCAST_MESSAGE||(e=>e===i.NORMAL_MESSAGE)(n))&&function(t){const{core:{OuterConstant:n}}=e;t.CloudCustomData=t.CloudCustomData||"",t.MsgBody=t.MsgBody.map(e=>{if(e.MsgType===n.MSG_CUSTOM){const{content:t={}}=e;e.content=Object.assign({Data:"",Desc:"",Ext:""},t)}return e})}(t);var s;_(n)&&function(e){const{GroupJoinType:t,MsgOperatorMemberExtraInfo:n={},MsgMemberExtraInfo:s,Operator_Account:o,List_Account:i,OpType:r}=e.MsgBody||{};"number"==typeof t||1!==r&&2!==r||(e.MsgBody.GroupJoinType=2===r?0:1);s||(e.MsgBody.MsgMemberExtraInfo=null==i?void 0:i.map(e=>({UserId:e})));1!==r||s||(e.MsgBody.MsgMemberExtraInfo=[{UserId:n.UserId}]);e.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:o,ImageUrl:"",NickName:""},n)}(t);m(n)&&function(e){const{MsgOperatorMemberExtraInfo:t={},Operator_Account:n}=e.MsgBody||{};e.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:n,ImageUrl:"",NickName:""},t),e.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*e.MsgTimeStamp},e.MsgBody),e.MsgBody=Object.keys(e.MsgBody).filter(e=>"MsgOperatorMemberExtraInfo"!==e).reduce((t,n)=>Object.assign(Object.assign({},t),{[n]:e.MsgBody[n]}),{})}(t)}(s),s}function M(e){const n=e||{},{GN:s,GT:o,F_Hd:i,F_NN:r,F_Ll:a}=n,u=t(n,["GN","GT","F_Hd","F_NN","F_Ll"]),l=Object.assign({GroupName:s,GroupType:o},u);return i&&(l.From_AccountHeadurl=i),r&&(l.From_AccountNick=r),a&&(l.From_AccountLevel=a),l}function v(e){let n=e;Array.isArray(e)||(n=[e]);const s=n.map(e=>{const{O_Account:n,Opt:s,L_Account:o,RT:i,UDF:r,OpInf:a,OnlineInf:u,MsgMemberExtraInfo:l}=e,c=t(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),g=Object.assign({Operator_Account:n,OpType:s,List_Account:o,ReportType:i,UserDefinedField:r},c);return a&&(g.MsgOperatorMemberExtraInfo=function(e){const{Img:n,NN:s}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},o)}(a)),l&&(g.MsgMemberExtraInfo=function(e){return null==e?void 0:e.map(e=>{const{Img:n,NN:s}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},o)})}(l)),u&&(g.OnlineMemberInfo=function(e){const{ET:t,Num:n}=e;return{ExpireTime:t,OnlineMemberNum:n}}(u)),g});return Array.isArray(e)?s:s[0]}var I=new class{constructor(){this._name="MessageParser",this._sequenceList=new h(200),this._messageIDList=new h(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(e,t){this._core=e,this._avChatRoomHandler=t}onMessageReceived(t,n,s=!1){this._sortServerMessageList({groupID:t,serverMessageList:n,isHistoryMessage:s});const o=this._handleMessageList(t,n);if(0===o.length)return;if(!s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:s}}=this._core,i=(t=>{const{core:{common:{getMessagePreviewText:n}}}=e;return{lastTime:(null==t?void 0:t.time)||(null==t?void 0:t.lastTime)||0,lastSequence:(null==t?void 0:t.sequence)||(null==t?void 0:t.lastSequence)||0,fromAccount:(null==t?void 0:t.from)||(null==t?void 0:t.fromAccount)||"",messageForShow:n(null==t?void 0:t.type,null==t?void 0:t.payload),payload:(null==t?void 0:t.payload)||null,type:(null==t?void 0:t.type)||"",isRevoked:(null==t?void 0:t.isRevoked)||!1,cloudCustomData:(null==t?void 0:t.cloudCustomData)||"",onlineOnlyFlag:(null==t?void 0:t._onlineOnlyFlag)||!1,nick:(null==t?void 0:t.nick)||"",nameCard:(null==t?void 0:t.nameCard)||"",version:(null==t?void 0:t.version)||0,isPeerRead:(null==t?void 0:t.isPeerRead)||!1,revoker:(null==t?void 0:t.revoker)||null}})(o[o.length-1]);n.updateConversation(`${s}${t}`,{lastMessage:i})}this._checkMessageStacked(o);const i=o.filter(e=>!0===e.isModified),r=o.filter(e=>!1===e.isModified),{OuterEvent:{MESSAGE_RECEIVED:a,MESSAGE_MODIFIED:u}}=this._core;i.length>0&&this._emitEvent({name:u,data:i}),r.length>0&&this._emitEvent({name:a,data:r})}_sortServerMessageList(e){const{groupID:t,serverMessageList:n,isHistoryMessage:s}=e;let o=[];this._avChatRoomHandler.isPollingSimplifiedMessage()&&!s?(n.sort((e,t)=>e.MS-t.MS),o=n.map(e=>e.MS)):(n.sort((e,t)=>e.MsgSeq-t.MsgSeq),o=n.map(e=>e.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${t} count:${o.length} sequenceList:${o}`),o.length=0}_handleMessageList(e,t){const{message:{messageDataHandler:n,messageHelper:s}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),i=[],a=t.length;for(let u=0;u<a;u++){let a=t[u];if(o&&(a=d(a)),m(a.Event)&&Object.values(r).includes(a.MsgBody.ReportType)){this._onGroupDismissed(e);break}if(null===this._filterMessageItem(a))continue;this._patchMessageType(a);const l=s.parseServerGroupMessage(a),c=this._createMessage(l);c.level=a.GroupInfo.From_AccountLevel,_(a.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(l)?this._avChatRoomHandler.handleGroupAttributesUpdated(l):null!==this._filterDuplicateMessage(c)&&(n.isMessageSentByCurrentInstance(c)||(1===l.isModified&&(c.isModified=!0),_(a.Event)&&this._updateLocalOnlineMemberCountFromTips(a),i.push(c)))}return i}_patchMessageType(e){const{OuterConstant:t}=this._core;_(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){const{Event:t}=e;return Object.values(i).includes(t)?(e=>e===i.MESSAGE_REVOKED)(t)?(this._handleMessageRevoked(e),null):(e=>e===i.LIVE_CUSTOM_DATA)(t)?(this._onLiveCustomData(e),null):(e=>e===i.MESSAGE_REACTION)(t)?null:e:(console.warn(`${this._name}.onMessageReceived unknown event:${t}`),null)}_createMessage(e){const{message:{messageFactory:t},OuterConstant:n}=this._core;let s=n.CONV_GROUP;e.event===i.GROUP_SYSTEM_MESSAGE&&(s=n.CONV_SYSTEM);const o=!!e.isSystemMessage,r=t.createMessage(Object.assign(Object.assign({},e),{conversationType:s,isSystemMessage:o,flow:"in"}));return r.setElement(e.elements),r}_filterDuplicateMessage(e){const{common:t}=this._core;if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}const n=this._messageIDList.has(e.ID);return n?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:${n}`),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){const{OuterConstant:t,OuterEvent:{MESSAGE_REVOKED:n}}=this._core,{ToGroupId:s,MsgBody:{RevokeMsgList:o},RevokerInfo:{Revoker_Account:i,Reason:r=""}}=e,a=[];o.forEach(e=>{const{TinyId:n,MsgClientTime:o,Random:u,MsgSeq:l}=e,c={conversationID:`${t.CONV_GROUP}${s}`,ID:`${n}-${o}-${u}`,revoker:i,revokeReason:r,revokerInfo:{userID:i,nick:"",avatar:""},sequence:l};a.push(c)}),0!==a.length&&this._emitEvent({name:n,data:a})}_onLiveCustomData(e){const{OuterEvent:{ROOM_CUSTOM_DATA_RECEIVED:t}}=this._core,{ToGroupId:n,MsgSeq:s,MsgTimeStamp:o,MsgBody:i}=e,r=(null==i?void 0:i.Content)||(null==i?void 0:i.MsgContent)||"";this._emitEvent({name:t,data:r}),console.log(`${this._name}._onLiveCustomData groupID:${n} sequence:${s} time:${o} data:${r}`)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){const{length:t}=e;if(t>=100&&this._reportMessageStackedCount<5){const e=this._avChatRoomHandler.getJoinedGroups();this._core.ssoLog.info("MessageStacked",`count:${t} groupID:${e.join(",")}`),this._reportMessageStackedCount+=1}}_emitEvent(e){this._core.notificationCenter.emitOuterEvent(e.name,e)}onBroadcastMessageReceived(e){const{message:{messageHelper:t},OuterEvent:{MESSAGE_RECEIVED:n}}=this._core,s=this._avChatRoomHandler.isPollingSimplifiedMessage(),o=[],r=e.length;for(let n=0;n<r;n++){let r=e[n];s&&(r=d(r));const a=t.parseServerGroupMessage(r);if(!Object.values(i).includes(r.Event)){console.warn(`${this._name}.onBroadcastMessageReceived unknown event:${r.Event}`);continue}const u=this._createMessage(a);u.isBroadcastMessage=!0,this._broadcastMessageIDMap.has(u.ID)||(o.push(u),this._broadcastMessageIDMap.set(u.ID,1))}o.length>0&&this._emitEvent({name:n,data:o})}_updateLocalOnlineMemberCountFromTips(e){const{utils:{isEmpty:t}}=this._core,{ToGroupId:n,MsgBody:{OnlineMemberInfo:s}}=e;if(t(s))return;const{OnlineMemberNum:o=0,ExpireTime:i=a}=s,r=Date.now();let u=this._avChatRoomHandler.getLocalOnlineMemberCount(n);t(u)?u={lastReqTime:0,lastSyncTime:0,latestUpdateTime:r,memberCount:o,expireTime:i}:(u.latestUpdateTime=r,u.memberCount=o),this._avChatRoomHandler.updateLocalOnlineMemberCount(n,u)}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};const f=t=>{const{core:{store:n}}=e;return(n.get("cloudConfig")||{})[t]},S=t=>{const{core:{utils:{isUndefined:n}}}=e;return!n(t)},C=()=>{const e=f("polling_interval");return S(e)?parseInt(e,10):300},b=()=>{const e=f("polling_simplified_msg");return S(e)?parseInt(e,10):0};var O=new class{constructor(){this._name="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this._onlineMemberCountMap=new Map,this._pollingIntervalMap=new Map,this._pollingNoMessageCountMap=new Map,this._membersReqInfoMap=new Map,this._startBroadcastSequence=1}init(e,t){this._core=e,this._parentPlugin=t,I.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){const{OuterConstant:{GRP_AVCHATROOM:t}}=this._core,{GroupTips:n=[]}=e;for(let e=0;e<n.length;e++){const{MsgBody:s,GroupInfo:{GroupId:o,GroupType:i}}=n[e],a=Object.values(r).includes(s.ReportType);i===t&&a&&this.reset(o)}}getCurrentPollingInterval(e){return this._pollingIntervalMap.get(e)||C()}isPollingSimplifiedMessage(){return 0!==b()}isGroupAttributesUpdated(e){return!!this._parentPlugin.groupAttribute.isGroupAttributesUpdated(e)&&(this._parentPlugin.groupAttribute.handleGroupAttributesUpdated(e),!0)}updateLocalOnlineMemberCount(e,t){this._onlineMemberCountMap.set(e,t)}getLocalOnlineMemberCount(e){return this._onlineMemberCountMap.get(e)||{}}hasPollingInstance(e){return this._pollingInstanceMap.has(e)}getJoinedLiveList(){const{OuterConstant:{GRP_LIVE:e}}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=[...this._joinedGroupMap.values()].filter(t=>t.type===e)),t}handleJoinGroupResult(e){return n(this,void 0,void 0,function*(){const{utils:{isUndefined:t},OuterConstant:{CONV_GROUP:n},apiMap:{getConversationProfile:s},OuterConstant:o}=this._core,{longPollingKey:i,group:r,historyMessageList:a=[]}=e,{groupID:u}=r;if(yield this._preCheck(r),this._joinedGroupMap.set(u,r),this._parentPlugin.groupDataHandler.updateLocalGroup([r]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),s(`${n}${u}`),a.length>0&&I.onMessageReceived(u,a,!0),!t(i)){return{code:0,data:this.startMessageLongPolling(e)}}return{code:0,data:{status:o.JOIN_STATUS_SUCCESS,group:r}}})}_preCheck(e){return n(this,void 0,void 0,function*(){const{common:t,OuterConstant:n,helper:s,apiMap:{quitGroup:o},ssoLog:i}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(()=>{const e=f("polling_count_limit");return S(e)&&e>0?parseInt(e,10):20})())throw new s.ChatError({code:c,message:"the count of longPolling exceeds the max limit"});return}if(0===this._joinedAVChatRoomCount())return;if(e.type===n.GRP_LIVE)return;const[r,a]=this._joinedGroupMap.entries().next().value;if(a.selfInfo.role===n.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(r);else try{yield o(r)}catch(e){i.debug("quitGroup",`${this._name}._preCheck quitGroup failed, groupID:${r} info:`,e)}this.reset(r)})}startMessageLongPolling(e){const{OuterConstant:t}=this._core,{longPollingKey:n,startSequence:s=1,group:o}=e,{groupID:i}=o;return this._pollingRequestInfoMap.set(i,{longPollingKey:n,startSequence:s}),this._pollingIntervalMap.set(i,C()),this._startPolling(i),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:o}}_startPolling(e){if(this._core.ssoLog.debug("_startPolling",`${this._name}._startPolling groupID:${e}`),this._pollingInstanceMap.has(e)){const t=this._pollingInstanceMap.get(e);return void((null==t?void 0:t.isRunning())||null==t||t.start())}const t=new p({core:this._core,manager:this,groupID:e,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});t.start(),this._pollingInstanceMap.set(e,t)}_handleRequestParams(e){const{longPollingKey:t,startSequence:n}=this._pollingRequestInfoMap.get(e)||{};return e===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:t,startSequence:n,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:b()}:{longPollingKey:t,startSequence:n,simplifiedMessage:b()}}_handleSuccess(e,t){const{ErrorCode:n}=t;if(0!==n){const{longPollingKey:t,startSequence:s}=this._pollingRequestInfoMap.get(e)||{};return void console.warn(`${this._name}._handleSuccess groupID:${e} key:${t} startSeq:${s} errorCode:${n}`)}this._hasJoinedAVChatRoom(e)&&this._handleResponseData(e,t)}_handleResponseData(e,t){const{Key:n,NextSeq:s,NextBroadcastSeq:o,RspMsgList:i=[],RspBroadcastMsgList:r=[]}=t;if(n&&s&&this._pollingRequestInfoMap.set(e,{longPollingKey:n,startSequence:s}),o&&o>this._startBroadcastSequence&&(this._startBroadcastSequence=o),i.length>0)0!==this._getPollingNoMessageCount(e)&&(this._updatePollingNoMessageCount(e,0),this._pollingIntervalMap.set(e,C())),I.onMessageReceived(e,i);else{let t=this._getPollingNoMessageCount(e);if(t+=1,this._updatePollingNoMessageCount(e,t),t===(()=>{const e=f("polling_no_msg_count");return S(e)?parseInt(e,10):20})()){const t=C()+(()=>{const e=f("polling_interval_plus");return S(e)?parseInt(e,10):2e3})();this._pollingIntervalMap.set(e,t)}}r.length>0&&I.onBroadcastMessageReceived(r)}_handleFailure(e,t){const{ssoLog:n,utils:{safeStringify:s}}=this._core;n.warn("polling",`${this._name}._handleFailure groupID:${e} error: ${s(t)}`)}_joinedAVChatRoomCount(){const{OuterConstant:e}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=this.getJoinedGroups().filter(t=>t.type===e.GRP_AVCHATROOM)),t.length}_hasJoinedAVChatRoom(e){return this._joinedGroupMap.has(e)}getJoinedGroups(){return[...this._joinedGroupMap.values()]}updateLocalLiveGroup(e,t){this._joinedGroupMap.set(e,t),this._parentPlugin.groupDataHandler.updateLocalGroup([t])}handleLiveHistoryMessages(e,t){I.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){if(!this._membersReqInfoMap.has(e))return this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1;let{startTime:t,requestCount:n}=this._membersReqInfoMap.get(e);const{interval:s,count:o}=(()=>{const e=f("av_members_freq_limit");if(S(e)){const{interval:t,count:n}=JSON.parse(e);if(n>0&&t>0)return{interval:t,count:n}}return{interval:30,count:4}})();return Date.now()-t>1e3*s?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(n+=1,this._membersReqInfoMap.set(e,{startTime:t,requestCount:n}),n>o)}_stopPolling(e){if(this._core.ssoLog.debug("_stopPolling",`${this._name}._stopPolling groupID:${e}`),e){const{appStore:{conversationStore:t},OuterConstant:{CONV_GROUP:n}}=this._core;t.deleteConversation(`${n}${e}`);const s=this._pollingInstanceMap.get(e);return null==s||s.stop(),this._parentPlugin.groupDataHandler.deleteLocalGroup(e),this._pollingInstanceMap.delete(e),this._pollingRequestInfoMap.delete(e),this._joinedGroupMap.delete(e),this._onlineMemberCountMap.delete(e),this._pollingIntervalMap.delete(e),this._pollingNoMessageCountMap.delete(e),void this._membersReqInfoMap.delete(e)}for(const e of this._pollingInstanceMap.values())null==e||e.stop();this._pollingInstanceMap.clear(),this._pollingRequestInfoMap.clear(),this._joinedGroupMap.clear(),this._onlineMemberCountMap.clear(),this._pollingIntervalMap.clear(),this._pollingNoMessageCountMap.clear(),this._membersReqInfoMap.clear()}_updatePollingNoMessageCount(e,t){this._pollingNoMessageCountMap.set(e,t)}_getPollingNoMessageCount(e){return this._pollingNoMessageCountMap.get(e)||0}_reportLongPollingCount(){const e=this._joinedGroupMap.size;if(e>1){const{common:t,OuterConstant:n,ssoLog:s}=this._core,o=t.isUnlimitedAVChatRoom()?1:0,i=[],r=[];this._joinedGroupMap.values().forEach(({groupID:e,type:t})=>{t===n.GRP_LIVE?r.push(e):i.push(e)}),s.info("longPollingCount",String(e),{moreMessage:`av:${i.join(",")} live:${r.join(",")} code: ${o}`,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,I.reset()}};var R=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"joinGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}joinGroup(e){return n(this,void 0,void 0,function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.joinGroup(e),{data:{status:s,group:{type:o}}}=n;return o===t.GRP_AVCHATROOM?s===t.JOIN_STATUS_ALREADY_IN_GROUP?n:O.handleJoinGroupResult(n.data):n})}};var y=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"quitGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}quitGroup(e){return n(this,void 0,void 0,function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.quitGroup(e),{data:{type:s}}=n;return s===t.GRP_AVCHATROOM&&O.reset(e),n})}};var P=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"dismissGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}dismissGroup(e){return n(this,void 0,void 0,function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.dismissGroup(e),{data:{type:s}}=n;return s===t.GRP_AVCHATROOM&&O.reset(e),n})}};var G=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupMemberList(e){return n(this,void 0,void 0,function*(){const{appStore:{groupStore:t},helper:n,OuterConstant:o}=this._core,{groupID:i}=e,r=t.getGroup(i);if((null==r?void 0:r.type)===o.GRP_AVCHATROOM){if(n.checkBusinessCapabilityBits(s)){if(O.isOverFrequencyLimit(i)){throw{code:2996,message:`Over frequency limit: get_members-${i}`}}return this._getGroupMemberList(e)}}return this._parentPlugin.groupMember.getGroupMemberList(e)})}_getGroupMemberList(e){return n(this,void 0,void 0,function*(){const t="_getGroupMemberList",{helper:s}=this._core;try{const s=yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,offset:s=0}=e,o={GroupId:n,Timestamp:s};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:o})})}(e,this._core),{MemberList:o=[],NextTimestamp:i=0}=s||{},r=this._handleMemberList(o);return console.log(`${this._name}.${t} ok, groupID:${e.groupID} count:${r.length} nextOffset:${i}`),{code:0,data:{memberList:r,offset:i}}}catch(e){const n=new s.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,n),n}})}_handleMemberList(e){return e.map(e=>{const{Member_Account:t,NickName:n="",Avatar:s="",Remark:o="",JoinTime:i=0,Marks:r=[]}=e;return{userID:t,nick:n,avatar:s,remark:o,joinTime:i,marks:r,isOnline:!0}})}};var D=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupOnlineMemberCount(e){return n(this,void 0,void 0,function*(){const{appStore:{groupStore:t},OuterConstant:n}=this._core,s=t.getGroup(e);return s?s.type===n.GRP_AVCHATROOM?this._getOnlineMemberCount(e):this._parentPlugin.groupAction.getGroupOnlineMemberCount(e):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(e){return n(this,void 0,void 0,function*(){const t="_getOnlineMemberCount",{utils:{isEmpty:n}}=this._core,s=O.getLocalOnlineMemberCount(e);if(n(s)||this._isExpired(e)){const{memberCount:n=0}=yield this._getOnlineMemberCountFromServer(e);return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${n} from server.`),{code:0,data:{memberCount:n}}}return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${s.memberCount} from local.`),{code:0,data:{memberCount:s.memberCount}}})}_isExpired(e){const t=O.getLocalOnlineMemberCount(e),n=Date.now(),s=n-t.lastSyncTime>1e3*t.expireTime,o=n-t.latestUpdateTime>1e4,i=n-t.lastReqTime>3e3;return s&&o&&i}_getOnlineMemberCountFromServer(e){return n(this,void 0,void 0,function*(){const t="_getOnlineMemberCountFromServer";try{const t=yield function(e,t){return n(this,void 0,void 0,function*(){const n={GroupId:e};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:n})})}(e,this._core),{OnlineMemberNum:s=0,ExpireTime:o=a}=t||{},i=Date.now(),r={lastSyncTime:i,latestUpdateTime:i,lastReqTime:i,memberCount:s,expireTime:o};return O.updateLocalOnlineMemberCount(e,r),{memberCount:s}}catch(e){const n=new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,n),n}})}};var E=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}deleteGroupMember(e){return n(this,void 0,void 0,function*(){const t="deleteGroupMember",{appStore:{groupStore:n},utils:{isUndefined:s},helper:i,OuterConstant:r}=this._core,{groupID:a}=e,l=n.getGroup(a);if(s(l))throw new i.ChatError({functionName:t,code:u});if(l.type===r.GRP_AVCHATROOM){if(i.checkBusinessCapabilityBits(o))return this._deleteGroupMember(e);throw new i.ChatError({functionName:t,code:g})}return this._parentPlugin.groupMember.deleteGroupMember(e)})}_deleteGroupMember(e){return n(this,void 0,void 0,function*(){const t="_deleteGroupMember",{appStore:{groupStore:s},helper:o,ssoLog:i}=this._core,{groupID:r,duration:a=0,userIDList:u}=e;if(0===a)throw new o.ChatError({functionName:t,code:l});try{yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,userIDList:s,duration:o,reason:i}=e,r={GroupId:n,Members_Account:s,Duration:o,Description:i};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:r})})}(e,this._core),i.debug(t,`${this._name}.${t} ok, groupID:${r}`);return{code:0,data:{group:s.getGroup(r),userIDList:u}}}catch(e){throw new o.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}};var A=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){this._core=e;const{helper:t}=e;t.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return n(this,void 0,void 0,function*(){const t="markGroupMemberList",{groupID:s,markType:o,enableMark:i,userIDList:r=[]}=e,a=this._generateRequestData(e);try{const e=yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,operationType:s,memberList:o}=e,i={GroupId:n,CommandType:s,MemberList:o};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:i})})}(a,this._core),{MemberList:u=[]}=e||{},{successUserIDList:l,failureUserIDList:c}=this._handleResult(u,r);return{code:0,data:{successUserIDList:l,failureUserIDList:c},successLog:{message:`${this._name}.${t} ok, groupID:${s} markType:${o} enableMark:${i} success:${l.length} fail:${c.length}`}}}catch(e){throw new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}_generateRequestData(e){const{groupID:t,markType:n,enableMark:s,userIDList:o=[]}=e,i=!0===s?1:2,r=[...o];r.length>500&&console.warn(`${this._name}._generateRequestData, the length of userIDList cannot exceed 500`);return{groupID:t,operationType:i,memberList:r.map(e=>({Member_Account:e,Marks:[n]}))}}_handleResult(e,t){const n=[],s=[];return e.length===t.length?(n.push(...t),{successUserIDList:n,failureUserIDList:s}):(t.forEach(t=>{e.find(e=>e.Member_Account===t)?n.push(t):s.push(t)}),{successUserIDList:n,failureUserIDList:s})}};var L=new class{init(e,t){e.ssoLog.debug("AVChatRoomAction.init"),R.init(e,t),y.init(e,t),P.init(e,t),G.init(e,t),D.init(e,t),E.init(e,t),A.init(e)}};var T=new class{constructor(){this._name="LiveHandler"}init(e){this._core=e;const{helper:t,ssoLog:n}=e;t.registerExperimentalAPI("startMessageLongPolling",this),t.registerExperimentalAPI("stopMessageLongPolling",this),n.debug("LiveHandler.init")}startMessageLongPolling(e){const{common:t,utils:{isEmpty:n},OuterConstant:s,ssoLog:o}=this._core,{groupID:i,longPollingKey:r,longPollingSequence:a=1}=e;if(n(r))return o.warn("startMessageLongPolling",`${this._name}.startMessageLongPolling longPollingKey is empty.`),Promise.resolve({});O.hasPollingInstance(i)&&this.stopMessageLongPolling({groupID:i});const u=O.getJoinedLiveList(),l=t.isUnlimitedAVChatRoom();!l&&u.length>0&&this.stopMessageLongPolling({groupID:u[0].groupID}),o.debug("startMessageLongPolling",`${this._name}.startMessageLongPolling isUnlimited:${l} groupID:${i} longPollingKey:${r} longPollingSequence:${a}`);const c={groupID:i,type:s.GRP_LIVE};return O.updateLocalLiveGroup(i,c),this._getLiveHistoryMessages({groupID:i,longPollingKey:r,startSequence:a}),O.startMessageLongPolling({group:c,longPollingKey:r,startSequence:a})}stopMessageLongPolling(e){const{groupID:t}=e;return O.reset(t),this._core.ssoLog.debug("stopMessageLongPolling",`${this._name}.stopMessageLongPolling ok, groupID:${t}`),Promise.resolve({groupID:t})}_getLiveHistoryMessages(e){return n(this,void 0,void 0,function*(){const{ssoLog:t}=this._core,{groupID:s}=e;try{const o=yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,longPollingKey:s,startSequence:o}=e,i={GroupId:n,LongPollingKey:s,PullPreSeq:o};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:i})})}(e,this._core),{RspMsgList:i=[]}=o||{};t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages ok, groupID:${s} count:${i.length}`),i.length>0&&O.handleLiveHistoryMessages(s,i)}catch(e){t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages failed, groupID:${s} info:${e.message}`)}})}};var N=new class{constructor(){this.name="AVChatRoom"}install(t,n){this._core=t,e.init(t),O.init(t,n),L.init(t,n),T.init(t);const{notificationCenter:s,InnerEvent:o}=t,{InnerEventSubType:i}=s;s.subscribeInnerEvent(o.MESSAGE_PUSH,i.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),s.subscribeInnerEvent(o.LOGOUT,this._reset,this),s.subscribeInnerEvent(o.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){O.onAVChatRoomSystemNotification(e)}_reset(){O.reset()}_dispose(){this._reset();const{notificationCenter:e,InnerEvent:t}=this._core,{InnerEventSubType:n}=e;e.unSubscribeInnerEvent(t.MESSAGE_PUSH,n.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};export{N as default};
1
+ const e=new class{init(e){this.core=e}};function t(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(s[n[o]]=e[n[o]])}return s}function s(e,t,s,n){return new(s||(s=Promise))((function(o,i){function r(e){try{u(n.next(e))}catch(e){i(e)}}function a(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(r,a)}u((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const n="AV_MBR_LIST",o="AV_BAN_MBR",i={NORMAL_MESSAGE:3,GROUP_TIPS_HAS_ROAMING:4,GROUP_SYSTEM_MESSAGE:5,GROUP_TIPS_HAS_NO_ROAMING:6,BROADCAST_MESSAGE:17,MESSAGE_REVOKED:20,MESSAGE_REACTION:21,LIVE_CUSTOM_DATA:100},r={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21},a=60,u=2603,l=2686,c=2688,g=3122;class p{constructor(e){const{core:t,manager:s,groupID:n,getRequestParams:o,onSuccess:i,onFail:r}=e;this._name="Polling",this._core=t,this._manager=s,this._timeoutID=-1,this._isRunning=!1,this._groupID=n,this._getRequestParams=o,this._onSuccess=i,this._onFail=r}start(){this._isRunning=!0,this._request(),console.log(`${this._name}.start pollingInterval:${this._manager.getCurrentPollingInterval(this._groupID)}`)}isRunning(){return this._isRunning}_request(){return s(this,void 0,void 0,(function*(){try{const e=this._getRequestParams(this._groupID),t=yield function(e,t){return s(this,void 0,void 0,(function*(){const{longPollingKey:s,startSequence:n,startBroadcastSeq:o,simplifiedMessage:i}=e,r={Key:s,StartSeq:n,StartBroadcastSeq:o,DownsizeFlag:i,USP:1,HoldTime:90};return t.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:r})}))}(e,this._core);this._onSuccess(this._groupID,t);const n=this._manager.getCurrentPollingInterval(this._groupID);this._runNextPolling(n)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}}))}_runNextPolling(e){this.isRunning()&&(this._timeoutID>-1&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(`${this._name}.stop timerID:${this._timeoutID}`),this._timeoutID>-1&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class h{constructor(e){this._maxLength=e,this._map=new Map}set(e){var t;if(this._map.size>=this._maxLength){const e=(null===(t=this._map.entries().next().value)||void 0===t?void 0:t[0])||"";this._map.delete(e)}this._map.set(e,1)}has(e){return this._map.has(e)}delete(e){this.has(e)&&this._map.delete(e)}clear(){this._map.clear()}}const _=e=>e===i.GROUP_TIPS_HAS_NO_ROAMING||e===i.GROUP_TIPS_HAS_ROAMING,m=e=>e===i.GROUP_SYSTEM_MESSAGE;function d(s){const n=function(e){const{E:s,MCT:n,MR:o,MP:i,MTS:r,GId:a,MS:u,CCD:l,F_Account:c,IsSys:g,GInf:p,MsgBody:h}=e,_=t(e,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:s,MsgClientTime:n,MsgRandom:o,MsgPriority:i,MsgTimeStamp:r,ToGroupId:a,MsgSeq:u,CloudCustomData:l,From_Account:c,IsSystemMsg:g,GroupInfo:M(p),MsgBody:v(h)},_)}(s);return function(t){const{Event:s}=t;(_(s)||m(s))&&(t.From_Account=t.From_Account||"@TIM#SYSTEM");n=s,(n===i.BROADCAST_MESSAGE||(e=>e===i.NORMAL_MESSAGE)(s))&&function(t){const{core:{OuterConstant:s}}=e;t.CloudCustomData=t.CloudCustomData||"",t.MsgBody=t.MsgBody.map((e=>{if(e.MsgType===s.MSG_CUSTOM){const{content:t={}}=e;e.content=Object.assign({Data:"",Desc:"",Ext:""},t)}return e}))}(t);var n;_(s)&&function(e){const{GroupJoinType:t,MsgOperatorMemberExtraInfo:s={},MsgMemberExtraInfo:n,Operator_Account:o,List_Account:i,OpType:r}=e.MsgBody||{};"number"==typeof t||1!==r&&2!==r||(e.MsgBody.GroupJoinType=2===r?0:1);n||(e.MsgBody.MsgMemberExtraInfo=null==i?void 0:i.map((e=>({UserId:e}))));1!==r||n||(e.MsgBody.MsgMemberExtraInfo=[{UserId:s.UserId}]);e.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:o,ImageUrl:"",NickName:""},s)}(t);m(s)&&function(e){const{MsgOperatorMemberExtraInfo:t={},Operator_Account:s}=e.MsgBody||{};e.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:s,ImageUrl:"",NickName:""},t),e.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*e.MsgTimeStamp},e.MsgBody),e.MsgBody=Object.keys(e.MsgBody).filter((e=>"MsgOperatorMemberExtraInfo"!==e)).reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e.MsgBody[s]})),{})}(t)}(n),n}function M(e){const s=e||{},{GN:n,GT:o,F_Hd:i,F_NN:r,F_Ll:a}=s,u=t(s,["GN","GT","F_Hd","F_NN","F_Ll"]),l=Object.assign({GroupName:n,GroupType:o},u);return i&&(l.From_AccountHeadurl=i),r&&(l.From_AccountNick=r),a&&(l.From_AccountLevel=a),l}function v(e){let s=e;Array.isArray(e)||(s=[e]);const n=s.map((e=>{const{O_Account:s,Opt:n,L_Account:o,RT:i,UDF:r,OpInf:a,OnlineInf:u,MsgMemberExtraInfo:l}=e,c=t(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),g=Object.assign({Operator_Account:s,OpType:n,List_Account:o,ReportType:i,UserDefinedField:r},c);return a&&(g.MsgOperatorMemberExtraInfo=function(e){const{Img:s,NN:n}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:s,NickName:n},o)}(a)),l&&(g.MsgMemberExtraInfo=function(e){return null==e?void 0:e.map((e=>{const{Img:s,NN:n}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:s,NickName:n},o)}))}(l)),u&&(g.OnlineMemberInfo=function(e){const{ET:t,Num:s}=e;return{ExpireTime:t,OnlineMemberNum:s}}(u)),g}));return Array.isArray(e)?n:n[0]}var I=new class{constructor(){this._name="MessageParser",this._sequenceList=new h(200),this._messageIDList=new h(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(e,t){this._core=e,this._avChatRoomHandler=t}onMessageReceived(t,s,n=!1){this._sortServerMessageList({groupID:t,serverMessageList:s,isHistoryMessage:n});const o=this._handleMessageList(t,s);if(0===o.length)return;if(!n){const{appStore:{conversationStore:s},OuterConstant:{CONV_GROUP:n}}=this._core,i=(t=>{const{core:{common:{getMessagePreviewText:s}}}=e;return{lastTime:(null==t?void 0:t.time)||(null==t?void 0:t.lastTime)||0,lastSequence:(null==t?void 0:t.sequence)||(null==t?void 0:t.lastSequence)||0,fromAccount:(null==t?void 0:t.from)||(null==t?void 0:t.fromAccount)||"",messageForShow:s(null==t?void 0:t.type,null==t?void 0:t.payload),payload:(null==t?void 0:t.payload)||null,type:(null==t?void 0:t.type)||"",isRevoked:(null==t?void 0:t.isRevoked)||!1,cloudCustomData:(null==t?void 0:t.cloudCustomData)||"",onlineOnlyFlag:(null==t?void 0:t._onlineOnlyFlag)||!1,nick:(null==t?void 0:t.nick)||"",nameCard:(null==t?void 0:t.nameCard)||"",version:(null==t?void 0:t.version)||0,isPeerRead:(null==t?void 0:t.isPeerRead)||!1,revoker:(null==t?void 0:t.revoker)||null}})(o[o.length-1]);s.updateConversation(`${n}${t}`,{lastMessage:i})}this._checkMessageStacked(o);const i=o.filter((e=>!0===e.isModified)),r=o.filter((e=>!1===e.isModified)),{OuterEvent:{MESSAGE_RECEIVED:a,MESSAGE_MODIFIED:u}}=this._core;i.length>0&&this._emitEvent({name:u,data:i}),r.length>0&&this._emitEvent({name:a,data:r})}_sortServerMessageList(e){const{groupID:t,serverMessageList:s,isHistoryMessage:n}=e;let o=[];this._avChatRoomHandler.isPollingSimplifiedMessage()&&!n?(s.sort(((e,t)=>e.MS-t.MS)),o=s.map((e=>e.MS))):(s.sort(((e,t)=>e.MsgSeq-t.MsgSeq)),o=s.map((e=>e.MsgSeq))),console.log(`${this._name}._sortServerMessageList groupID:${t} count:${o.length} sequenceList:${o}`),o.length=0}_handleMessageList(e,t){const{message:{messageDataHandler:s,messageHelper:n}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),i=[],a=t.length;for(let u=0;u<a;u++){let a=t[u];if(o&&(a=d(a)),m(a.Event)&&Object.values(r).includes(a.MsgBody.ReportType)){this._onGroupDismissed(e);break}if(null===this._filterMessageItem(a))continue;this._patchMessageType(a);const l=n.parseServerGroupMessage(a),c=this._createMessage(l);c.level=a.GroupInfo.From_AccountLevel,_(a.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(l)?this._avChatRoomHandler.handleGroupAttributesUpdated(l):null!==this._filterDuplicateMessage(c)&&(s.isMessageSentByCurrentInstance(c)||(1===l.isModified&&(c.isModified=!0),_(a.Event)&&this._updateLocalOnlineMemberCountFromTips(a),i.push(c)))}return i}_patchMessageType(e){const{OuterConstant:t}=this._core;_(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){const{Event:t}=e;return Object.values(i).includes(t)?(e=>e===i.MESSAGE_REVOKED)(t)?(this._handleMessageRevoked(e),null):(e=>e===i.LIVE_CUSTOM_DATA)(t)?(this._onLiveCustomData(e),null):(e=>e===i.MESSAGE_REACTION)(t)?null:e:(console.warn(`${this._name}.onMessageReceived unknown event:${t}`),null)}_createMessage(e){const{message:{messageFactory:t},OuterConstant:s}=this._core;let n=s.CONV_GROUP;e.event===i.GROUP_SYSTEM_MESSAGE&&(n=s.CONV_SYSTEM);const o=!!e.isSystemMessage,r=t.createMessage(Object.assign(Object.assign({},e),{conversationType:n,isSystemMessage:o,flow:"in"}));return r.setElement(e.elements),r}_filterDuplicateMessage(e){const{common:t}=this._core;if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}const s=this._messageIDList.has(e.ID);return s?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:${s}`),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){const{OuterConstant:t,OuterEvent:{MESSAGE_REVOKED:s}}=this._core,{ToGroupId:n,MsgBody:{RevokeMsgList:o},RevokerInfo:{Revoker_Account:i,Reason:r=""}}=e,a=[];o.forEach((e=>{const{TinyId:s,MsgClientTime:o,Random:u,MsgSeq:l}=e,c={conversationID:`${t.CONV_GROUP}${n}`,ID:`${s}-${o}-${u}`,revoker:i,revokeReason:r,revokerInfo:{userID:i,nick:"",avatar:""},sequence:l};a.push(c)})),0!==a.length&&this._emitEvent({name:s,data:a})}_onLiveCustomData(e){const{OuterEvent:{ROOM_CUSTOM_DATA_RECEIVED:t}}=this._core,{ToGroupId:s,MsgSeq:n,MsgTimeStamp:o,MsgBody:i}=e,r=(null==i?void 0:i.Content)||(null==i?void 0:i.MsgContent)||"";this._emitEvent({name:t,data:r}),console.log(`${this._name}._onLiveCustomData groupID:${s} sequence:${n} time:${o} data:${r}`)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){const{length:t}=e;if(t>=100&&this._reportMessageStackedCount<5){const e=this._avChatRoomHandler.getJoinedGroups();this._core.ssoLog.info("MessageStacked",`count:${t} groupID:${e.join(",")}`),this._reportMessageStackedCount+=1}}_emitEvent(e){this._core.notificationCenter.emitOuterEvent(e.name,e)}onBroadcastMessageReceived(e){const{message:{messageHelper:t},OuterEvent:{MESSAGE_RECEIVED:s}}=this._core,n=this._avChatRoomHandler.isPollingSimplifiedMessage(),o=[],r=e.length;for(let s=0;s<r;s++){let r=e[s];n&&(r=d(r));const a=t.parseServerGroupMessage(r);if(!Object.values(i).includes(r.Event)){console.warn(`${this._name}.onBroadcastMessageReceived unknown event:${r.Event}`);continue}const u=this._createMessage(a);u.isBroadcastMessage=!0,this._broadcastMessageIDMap.has(u.ID)||(o.push(u),this._broadcastMessageIDMap.set(u.ID,1))}o.length>0&&this._emitEvent({name:s,data:o})}_updateLocalOnlineMemberCountFromTips(e){const{utils:{isEmpty:t}}=this._core,{ToGroupId:s,MsgBody:{OnlineMemberInfo:n}}=e;if(t(n))return;const{OnlineMemberNum:o=0,ExpireTime:i=a}=n,r=Date.now();let u=this._avChatRoomHandler.getLocalOnlineMemberCount(s);t(u)?u={lastReqTime:0,lastSyncTime:0,latestUpdateTime:r,memberCount:o,expireTime:i}:(u.latestUpdateTime=r,u.memberCount=o),this._avChatRoomHandler.updateLocalOnlineMemberCount(s,u)}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};const f=t=>{const{core:{store:s}}=e;return(s.get("cloudConfig")||{})[t]},S=t=>{const{core:{utils:{isUndefined:s}}}=e;return!s(t)},C=()=>{const e=f("polling_interval");return S(e)?parseInt(e,10):300},b=()=>{const e=f("polling_simplified_msg");return S(e)?parseInt(e,10):0};var O=new class{constructor(){this._name="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this._onlineMemberCountMap=new Map,this._pollingIntervalMap=new Map,this._pollingNoMessageCountMap=new Map,this._membersReqInfoMap=new Map,this._startBroadcastSequence=1}init(e,t){this._core=e,this._parentPlugin=t,I.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){const{OuterConstant:{GRP_AVCHATROOM:t}}=this._core,{GroupTips:s=[]}=e;for(let e=0;e<s.length;e++){const{MsgBody:n,GroupInfo:{GroupId:o,GroupType:i}}=s[e],a=Object.values(r).includes(n.ReportType);i===t&&a&&this.reset(o)}}getCurrentPollingInterval(e){return this._pollingIntervalMap.get(e)||C()}isPollingSimplifiedMessage(){return 0!==b()}isGroupAttributesUpdated(e){return!!this._parentPlugin.groupAttribute.isGroupAttributesUpdated(e)&&(this._parentPlugin.groupAttribute.handleGroupAttributesUpdated(e),!0)}updateLocalOnlineMemberCount(e,t){this._onlineMemberCountMap.set(e,t)}getLocalOnlineMemberCount(e){return this._onlineMemberCountMap.get(e)||{}}hasPollingInstance(e){return this._pollingInstanceMap.has(e)}getJoinedLiveList(){const{OuterConstant:{GRP_LIVE:e}}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=[...this._joinedGroupMap.values()].filter((t=>t.type===e))),t}handleJoinGroupResult(e){return s(this,void 0,void 0,(function*(){const{utils:{isUndefined:t},OuterConstant:{CONV_GROUP:s},apiMap:{getConversationProfile:n},OuterConstant:o}=this._core,{longPollingKey:i,group:r,historyMessageList:a=[]}=e,{groupID:u}=r;if(yield this._preCheck(r),this._joinedGroupMap.set(u,r),this._parentPlugin.groupDataHandler.updateLocalGroup([r]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),n(`${s}${u}`),a.length>0&&I.onMessageReceived(u,a,!0),!t(i)){return{code:0,data:this.startMessageLongPolling(e)}}return{code:0,data:{status:o.JOIN_STATUS_SUCCESS,group:r}}}))}_preCheck(e){return s(this,void 0,void 0,(function*(){const{common:t,OuterConstant:s,helper:n,apiMap:{quitGroup:o},ssoLog:i}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(()=>{const e=f("polling_count_limit");return S(e)&&e>0?parseInt(e,10):20})())throw new n.ChatError({code:c,message:"the count of longPolling exceeds the max limit"});return}if(0===this._joinedAVChatRoomCount())return;if(e.type===s.GRP_LIVE)return;const[r,a]=this._joinedGroupMap.entries().next().value;if(a.selfInfo.role===s.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(r);else try{yield o(r)}catch(e){i.debug("quitGroup",`${this._name}._preCheck quitGroup failed, groupID:${r} info:`,e)}this.reset(r)}))}startMessageLongPolling(e){const{OuterConstant:t}=this._core,{longPollingKey:s,startSequence:n=1,group:o}=e,{groupID:i}=o;return this._pollingRequestInfoMap.set(i,{longPollingKey:s,startSequence:n}),this._pollingIntervalMap.set(i,C()),this._startPolling(i),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:o}}_startPolling(e){if(this._core.ssoLog.debug("_startPolling",`${this._name}._startPolling groupID:${e}`),this._pollingInstanceMap.has(e)){const t=this._pollingInstanceMap.get(e);return void((null==t?void 0:t.isRunning())||null==t||t.start())}const t=new p({core:this._core,manager:this,groupID:e,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});t.start(),this._pollingInstanceMap.set(e,t)}_handleRequestParams(e){const{longPollingKey:t,startSequence:s}=this._pollingRequestInfoMap.get(e)||{};return e===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:t,startSequence:s,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:b()}:{longPollingKey:t,startSequence:s,simplifiedMessage:b()}}_handleSuccess(e,t){const{ErrorCode:s}=t;if(0===s)this._hasJoinedAVChatRoom(e)&&this._handleResponseData(e,t);else{const{longPollingKey:t,startSequence:n}=this._pollingRequestInfoMap.get(e)||{};console.warn(`${this._name}._handleSuccess groupID:${e} key:${t} startSeq:${n} errorCode:${s}`)}}_handleResponseData(e,t){const{Key:s,NextSeq:n,NextBroadcastSeq:o,RspMsgList:i=[],RspBroadcastMsgList:r=[]}=t;if(s&&n&&this._pollingRequestInfoMap.set(e,{longPollingKey:s,startSequence:n}),o&&o>this._startBroadcastSequence&&(this._startBroadcastSequence=o),i.length>0)0!==this._getPollingNoMessageCount(e)&&(this._updatePollingNoMessageCount(e,0),this._pollingIntervalMap.set(e,C())),I.onMessageReceived(e,i);else{let t=this._getPollingNoMessageCount(e);if(t+=1,this._updatePollingNoMessageCount(e,t),t===(()=>{const e=f("polling_no_msg_count");return S(e)?parseInt(e,10):20})()){const t=C()+(()=>{const e=f("polling_interval_plus");return S(e)?parseInt(e,10):2e3})();this._pollingIntervalMap.set(e,t)}}r.length>0&&I.onBroadcastMessageReceived(r)}_handleFailure(e,t){const{ssoLog:s,utils:{safeStringify:n}}=this._core;s.warn("polling",`${this._name}._handleFailure groupID:${e} error: ${n(t)}`)}_joinedAVChatRoomCount(){const{OuterConstant:e}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=this.getJoinedGroups().filter((t=>t.type===e.GRP_AVCHATROOM))),t.length}_hasJoinedAVChatRoom(e){return this._joinedGroupMap.has(e)}getJoinedGroups(){return[...this._joinedGroupMap.values()]}updateLocalLiveGroup(e,t){this._joinedGroupMap.set(e,t),this._parentPlugin.groupDataHandler.updateLocalGroup([t])}handleLiveHistoryMessages(e,t){I.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){if(!this._membersReqInfoMap.has(e))return this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1;let{startTime:t,requestCount:s}=this._membersReqInfoMap.get(e);const{interval:n,count:o}=(()=>{const e=f("av_members_freq_limit");if(S(e)){const{interval:t,count:s}=JSON.parse(e);if(s>0&&t>0)return{interval:t,count:s}}return{interval:30,count:4}})();return Date.now()-t>1e3*n?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(s+=1,this._membersReqInfoMap.set(e,{startTime:t,requestCount:s}),s>o)}_stopPolling(e){if(this._core.ssoLog.debug("_stopPolling",`${this._name}._stopPolling groupID:${e}`),e){const{appStore:{conversationStore:t},OuterConstant:{CONV_GROUP:s}}=this._core;t.deleteConversation(`${s}${e}`);const n=this._pollingInstanceMap.get(e);return null==n||n.stop(),this._parentPlugin.groupDataHandler.deleteLocalGroup(e),this._pollingInstanceMap.delete(e),this._pollingRequestInfoMap.delete(e),this._joinedGroupMap.delete(e),this._onlineMemberCountMap.delete(e),this._pollingIntervalMap.delete(e),this._pollingNoMessageCountMap.delete(e),void this._membersReqInfoMap.delete(e)}for(const e of this._pollingInstanceMap.values())null==e||e.stop();this._pollingInstanceMap.clear(),this._pollingRequestInfoMap.clear(),this._joinedGroupMap.clear(),this._onlineMemberCountMap.clear(),this._pollingIntervalMap.clear(),this._pollingNoMessageCountMap.clear(),this._membersReqInfoMap.clear()}_updatePollingNoMessageCount(e,t){this._pollingNoMessageCountMap.set(e,t)}_getPollingNoMessageCount(e){return this._pollingNoMessageCountMap.get(e)||0}_reportLongPollingCount(){const e=this._joinedGroupMap.size;if(e>1){const{common:t,OuterConstant:s,ssoLog:n}=this._core,o=t.isUnlimitedAVChatRoom()?1:0,i=[],r=[];this._joinedGroupMap.values().forEach((({groupID:e,type:t})=>{t===s.GRP_LIVE?r.push(e):i.push(e)})),n.info("longPollingCount",String(e),{moreMessage:`av:${i.join(",")} live:${r.join(",")} code: ${o}`,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,I.reset()}};var R=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:s}=e;s.registerApi({apiName:"joinGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}joinGroup(e){return s(this,void 0,void 0,(function*(){const{OuterConstant:t}=this._core,s=yield this._parentPlugin.groupAction.joinGroup(e),{data:{status:n,group:{type:o}}}=s;return o===t.GRP_AVCHATROOM?n===t.JOIN_STATUS_ALREADY_IN_GROUP?s:O.handleJoinGroupResult(s.data):s}))}};var y=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:s}=e;s.registerApi({apiName:"quitGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}quitGroup(e){return s(this,void 0,void 0,(function*(){const{OuterConstant:t}=this._core,s=yield this._parentPlugin.groupAction.quitGroup(e),{data:{type:n}}=s;return n===t.GRP_AVCHATROOM&&O.reset(e),s}))}};var P=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:s}=e;s.registerApi({apiName:"dismissGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}dismissGroup(e){return s(this,void 0,void 0,(function*(){const{OuterConstant:t}=this._core,s=yield this._parentPlugin.groupAction.dismissGroup(e),{data:{type:n}}=s;return n===t.GRP_AVCHATROOM&&O.reset(e),s}))}};var G=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:s}=e;s.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupMemberList(e){return s(this,void 0,void 0,(function*(){const{appStore:{groupStore:t},helper:s,OuterConstant:o}=this._core,{groupID:i}=e,r=t.getGroup(i);if((null==r?void 0:r.type)===o.GRP_AVCHATROOM){if(s.checkBusinessCapabilityBits(n)){if(O.isOverFrequencyLimit(i)){throw{code:2996,message:`Over frequency limit: get_members-${i}`}}return this._getGroupMemberList(e)}}return this._parentPlugin.groupMember.getGroupMemberList(e)}))}_getGroupMemberList(e){return s(this,void 0,void 0,(function*(){const t="_getGroupMemberList",{helper:n}=this._core;try{const n=yield function(e,t){return s(this,void 0,void 0,(function*(){const{groupID:s,offset:n=0}=e,o={GroupId:s,Timestamp:n};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:o})}))}(e,this._core),{MemberList:o=[],NextTimestamp:i=0}=n||{},r=this._handleMemberList(o);return console.log(`${this._name}.${t} ok, groupID:${e.groupID} count:${r.length} nextOffset:${i}`),{code:0,data:{memberList:r,offset:i}}}catch(e){const s=new n.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,s),s}}))}_handleMemberList(e){return e.map((e=>{const{Member_Account:t,NickName:s="",Avatar:n="",Remark:o="",JoinTime:i=0,Marks:r=[]}=e;return{userID:t,nick:s,avatar:n,remark:o,joinTime:i,marks:r,isOnline:!0}}))}};var D=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:s}=e;s.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupOnlineMemberCount(e){return s(this,void 0,void 0,(function*(){const{appStore:{groupStore:t},OuterConstant:s}=this._core,n=t.getGroup(e);return n?n.type===s.GRP_AVCHATROOM?this._getOnlineMemberCount(e):this._parentPlugin.groupAction.getGroupOnlineMemberCount(e):{code:0,data:{memberCount:0}}}))}_getOnlineMemberCount(e){return s(this,void 0,void 0,(function*(){const t="_getOnlineMemberCount",{utils:{isEmpty:s}}=this._core,n=O.getLocalOnlineMemberCount(e);if(s(n)||this._isExpired(e)){const{memberCount:s=0}=yield this._getOnlineMemberCountFromServer(e);return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${s} from server.`),{code:0,data:{memberCount:s}}}return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${n.memberCount} from local.`),{code:0,data:{memberCount:n.memberCount}}}))}_isExpired(e){const t=O.getLocalOnlineMemberCount(e),s=Date.now(),n=s-t.lastSyncTime>1e3*t.expireTime,o=s-t.latestUpdateTime>1e4,i=s-t.lastReqTime>3e3;return n&&o&&i}_getOnlineMemberCountFromServer(e){return s(this,void 0,void 0,(function*(){const t="_getOnlineMemberCountFromServer";try{const t=yield function(e,t){return s(this,void 0,void 0,(function*(){const s={GroupId:e};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:s})}))}(e,this._core),{OnlineMemberNum:n=0,ExpireTime:o=a}=t||{},i=Date.now(),r={lastSyncTime:i,latestUpdateTime:i,lastReqTime:i,memberCount:n,expireTime:o};return O.updateLocalOnlineMemberCount(e,r),{memberCount:n}}catch(e){const s=new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,s),s}}))}};var E=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:s}=e;s.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}deleteGroupMember(e){return s(this,void 0,void 0,(function*(){const t="deleteGroupMember",{appStore:{groupStore:s},utils:{isUndefined:n},helper:i,OuterConstant:r}=this._core,{groupID:a}=e,l=s.getGroup(a);if(n(l))throw new i.ChatError({functionName:t,code:u});if(l.type===r.GRP_AVCHATROOM){if(i.checkBusinessCapabilityBits(o))return this._deleteGroupMember(e);throw new i.ChatError({functionName:t,code:g})}return this._parentPlugin.groupMember.deleteGroupMember(e)}))}_deleteGroupMember(e){return s(this,void 0,void 0,(function*(){const t="_deleteGroupMember",{appStore:{groupStore:n},helper:o,ssoLog:i}=this._core,{groupID:r,duration:a=0,userIDList:u}=e;if(0===a)throw new o.ChatError({functionName:t,code:l});try{yield function(e,t){return s(this,void 0,void 0,(function*(){const{groupID:s,userIDList:n,duration:o,reason:i}=e,r={GroupId:s,Members_Account:n,Duration:o,Description:i};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:r})}))}(e,this._core),i.debug(t,`${this._name}.${t} ok, groupID:${r}`);return{code:0,data:{group:n.getGroup(r),userIDList:u}}}catch(e){throw new o.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}}))}};var A=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){this._core=e;const{helper:t}=e;t.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return s(this,void 0,void 0,(function*(){const t="markGroupMemberList",{groupID:n,markType:o,enableMark:i,userIDList:r=[]}=e,a=this._generateRequestData(e);try{const e=yield function(e,t){return s(this,void 0,void 0,(function*(){const{groupID:s,operationType:n,memberList:o}=e,i={GroupId:s,CommandType:n,MemberList:o};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:i})}))}(a,this._core),{MemberList:u=[]}=e||{},{successUserIDList:l,failureUserIDList:c}=this._handleResult(u,r);return{code:0,data:{successUserIDList:l,failureUserIDList:c},successLog:{message:`${this._name}.${t} ok, groupID:${n} markType:${o} enableMark:${i} success:${l.length} fail:${c.length}`}}}catch(e){throw new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}}))}_generateRequestData(e){const{groupID:t,markType:s,enableMark:n,userIDList:o=[]}=e,i=!0===n?1:2,r=[...o];r.length>500&&console.warn(`${this._name}._generateRequestData, the length of userIDList cannot exceed 500`);return{groupID:t,operationType:i,memberList:r.map((e=>({Member_Account:e,Marks:[s]})))}}_handleResult(e,t){const s=[],n=[];return e.length===t.length?(s.push(...t),{successUserIDList:s,failureUserIDList:n}):(t.forEach((t=>{e.find((e=>e.Member_Account===t))?s.push(t):n.push(t)})),{successUserIDList:s,failureUserIDList:n})}};var L=new class{init(e,t){e.ssoLog.debug("AVChatRoomAction.init"),R.init(e,t),y.init(e,t),P.init(e,t),G.init(e,t),D.init(e,t),E.init(e,t),A.init(e)}};var T=new class{constructor(){this._name="LiveHandler"}init(e){this._core=e;const{helper:t,ssoLog:s}=e;t.registerExperimentalAPI("startMessageLongPolling",this),t.registerExperimentalAPI("stopMessageLongPolling",this),s.debug("LiveHandler.init")}startMessageLongPolling(e){const{common:t,utils:{isEmpty:s},OuterConstant:n,ssoLog:o}=this._core,{groupID:i,longPollingKey:r,longPollingSequence:a=1}=e;if(s(r))return o.warn("startMessageLongPolling",`${this._name}.startMessageLongPolling longPollingKey is empty.`),Promise.resolve({});O.hasPollingInstance(i)&&this.stopMessageLongPolling({groupID:i});const u=O.getJoinedLiveList(),l=t.isUnlimitedAVChatRoom();!l&&u.length>0&&this.stopMessageLongPolling({groupID:u[0].groupID}),o.debug("startMessageLongPolling",`${this._name}.startMessageLongPolling isUnlimited:${l} groupID:${i} longPollingKey:${r} longPollingSequence:${a}`);const c={groupID:i,type:n.GRP_LIVE};return O.updateLocalLiveGroup(i,c),this._getLiveHistoryMessages({groupID:i,longPollingKey:r,startSequence:a}),O.startMessageLongPolling({group:c,longPollingKey:r,startSequence:a})}stopMessageLongPolling(e){const{groupID:t}=e;return O.reset(t),this._core.ssoLog.debug("stopMessageLongPolling",`${this._name}.stopMessageLongPolling ok, groupID:${t}`),Promise.resolve({groupID:t})}_getLiveHistoryMessages(e){return s(this,void 0,void 0,(function*(){const{ssoLog:t}=this._core,{groupID:n}=e;try{const o=yield function(e,t){return s(this,void 0,void 0,(function*(){const{groupID:s,longPollingKey:n,startSequence:o}=e,i={GroupId:s,LongPollingKey:n,PullPreSeq:o};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:i})}))}(e,this._core),{RspMsgList:i=[]}=o||{};t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages ok, groupID:${n} count:${i.length}`),i.length>0&&O.handleLiveHistoryMessages(n,i)}catch(e){t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages failed, groupID:${n} info:${e.message}`)}}))}};var N=new class{constructor(){this.name="AVChatRoom"}install(t,s){this._core=t,e.init(t),O.init(t,s),L.init(t,s),T.init(t);const{notificationCenter:n,InnerEvent:o}=t,{InnerEventSubType:i}=n;n.subscribeInnerEvent(o.MESSAGE_PUSH,i.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),n.subscribeInnerEvent(o.LOGOUT,this._reset,this),n.subscribeInnerEvent(o.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){O.onAVChatRoomSystemNotification(e)}_reset(){O.reset()}_dispose(){this._reset();const{notificationCenter:e,InnerEvent:t}=this._core,{InnerEventSubType:s}=e;e.unSubscribeInnerEvent(t.MESSAGE_PUSH,s.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}};export{N as default};
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).TencentCloudChatAvchatroom=t()}(this,function(){"use strict";const e=new class{init(e){this.core=e}};function t(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(s=Object.getOwnPropertySymbols(e);o<s.length;o++)t.indexOf(s[o])<0&&Object.prototype.propertyIsEnumerable.call(e,s[o])&&(n[s[o]]=e[s[o]])}return n}function n(e,t,n,s){return new(n||(n=Promise))(function(o,i){function r(e){try{u(s.next(e))}catch(e){i(e)}}function a(e){try{u(s.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(r,a)}u((s=s.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const s="AV_MBR_LIST",o="AV_BAN_MBR",i={NORMAL_MESSAGE:3,GROUP_TIPS_HAS_ROAMING:4,GROUP_SYSTEM_MESSAGE:5,GROUP_TIPS_HAS_NO_ROAMING:6,BROADCAST_MESSAGE:17,MESSAGE_REVOKED:20,MESSAGE_REACTION:21,LIVE_CUSTOM_DATA:100},r={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21},a=60,u=2603,l=2686,c=2688,g=3122;class p{constructor(e){const{core:t,manager:n,groupID:s,getRequestParams:o,onSuccess:i,onFail:r}=e;this._name="Polling",this._core=t,this._manager=n,this._timeoutID=-1,this._isRunning=!1,this._groupID=s,this._getRequestParams=o,this._onSuccess=i,this._onFail=r}start(){this._isRunning=!0,this._request(),console.log(`${this._name}.start pollingInterval:${this._manager.getCurrentPollingInterval(this._groupID)}`)}isRunning(){return this._isRunning}_request(){return n(this,void 0,void 0,function*(){try{const e=this._getRequestParams(this._groupID),t=yield function(e,t){return n(this,void 0,void 0,function*(){const{longPollingKey:n,startSequence:s,startBroadcastSeq:o,simplifiedMessage:i}=e,r={Key:n,StartSeq:s,StartBroadcastSeq:o,DownsizeFlag:i,USP:1,HoldTime:90};return t.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:r})})}(e,this._core);this._onSuccess(this._groupID,t);const s=this._manager.getCurrentPollingInterval(this._groupID);this._runNextPolling(s)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}})}_runNextPolling(e){this.isRunning()&&(this._timeoutID>-1&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(`${this._name}.stop timerID:${this._timeoutID}`),this._timeoutID>-1&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class h{constructor(e){this._maxLength=e,this._map=new Map}set(e){var t;if(this._map.size>=this._maxLength){const e=(null===(t=this._map.entries().next().value)||void 0===t?void 0:t[0])||"";this._map.delete(e)}this._map.set(e,1)}has(e){return this._map.has(e)}delete(e){this.has(e)&&this._map.delete(e)}clear(){this._map.clear()}}const _=e=>e===i.GROUP_TIPS_HAS_NO_ROAMING||e===i.GROUP_TIPS_HAS_ROAMING,m=e=>e===i.GROUP_SYSTEM_MESSAGE;function d(n){const s=function(e){const{E:n,MCT:s,MR:o,MP:i,MTS:r,GId:a,MS:u,CCD:l,F_Account:c,IsSys:g,GInf:p,MsgBody:h}=e,_=t(e,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:n,MsgClientTime:s,MsgRandom:o,MsgPriority:i,MsgTimeStamp:r,ToGroupId:a,MsgSeq:u,CloudCustomData:l,From_Account:c,IsSystemMsg:g,GroupInfo:M(p),MsgBody:v(h)},_)}(n);return function(t){const{Event:n}=t;(_(n)||m(n))&&(t.From_Account=t.From_Account||"@TIM#SYSTEM");s=n,(s===i.BROADCAST_MESSAGE||(e=>e===i.NORMAL_MESSAGE)(n))&&function(t){const{core:{OuterConstant:n}}=e;t.CloudCustomData=t.CloudCustomData||"",t.MsgBody=t.MsgBody.map(e=>{if(e.MsgType===n.MSG_CUSTOM){const{content:t={}}=e;e.content=Object.assign({Data:"",Desc:"",Ext:""},t)}return e})}(t);var s;_(n)&&function(e){const{GroupJoinType:t,MsgOperatorMemberExtraInfo:n={},MsgMemberExtraInfo:s,Operator_Account:o,List_Account:i,OpType:r}=e.MsgBody||{};"number"==typeof t||1!==r&&2!==r||(e.MsgBody.GroupJoinType=2===r?0:1);s||(e.MsgBody.MsgMemberExtraInfo=null==i?void 0:i.map(e=>({UserId:e})));1!==r||s||(e.MsgBody.MsgMemberExtraInfo=[{UserId:n.UserId}]);e.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:o,ImageUrl:"",NickName:""},n)}(t);m(n)&&function(e){const{MsgOperatorMemberExtraInfo:t={},Operator_Account:n}=e.MsgBody||{};e.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:n,ImageUrl:"",NickName:""},t),e.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*e.MsgTimeStamp},e.MsgBody),e.MsgBody=Object.keys(e.MsgBody).filter(e=>"MsgOperatorMemberExtraInfo"!==e).reduce((t,n)=>Object.assign(Object.assign({},t),{[n]:e.MsgBody[n]}),{})}(t)}(s),s}function M(e){const n=e||{},{GN:s,GT:o,F_Hd:i,F_NN:r,F_Ll:a}=n,u=t(n,["GN","GT","F_Hd","F_NN","F_Ll"]),l=Object.assign({GroupName:s,GroupType:o},u);return i&&(l.From_AccountHeadurl=i),r&&(l.From_AccountNick=r),a&&(l.From_AccountLevel=a),l}function v(e){let n=e;Array.isArray(e)||(n=[e]);const s=n.map(e=>{const{O_Account:n,Opt:s,L_Account:o,RT:i,UDF:r,OpInf:a,OnlineInf:u,MsgMemberExtraInfo:l}=e,c=t(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),g=Object.assign({Operator_Account:n,OpType:s,List_Account:o,ReportType:i,UserDefinedField:r},c);return a&&(g.MsgOperatorMemberExtraInfo=function(e){const{Img:n,NN:s}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},o)}(a)),l&&(g.MsgMemberExtraInfo=function(e){return null==e?void 0:e.map(e=>{const{Img:n,NN:s}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},o)})}(l)),u&&(g.OnlineMemberInfo=function(e){const{ET:t,Num:n}=e;return{ExpireTime:t,OnlineMemberNum:n}}(u)),g});return Array.isArray(e)?s:s[0]}var I=new class{constructor(){this._name="MessageParser",this._sequenceList=new h(200),this._messageIDList=new h(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(e,t){this._core=e,this._avChatRoomHandler=t}onMessageReceived(t,n,s=!1){this._sortServerMessageList({groupID:t,serverMessageList:n,isHistoryMessage:s});const o=this._handleMessageList(t,n);if(0===o.length)return;if(!s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:s}}=this._core,i=(t=>{const{core:{common:{getMessagePreviewText:n}}}=e;return{lastTime:(null==t?void 0:t.time)||(null==t?void 0:t.lastTime)||0,lastSequence:(null==t?void 0:t.sequence)||(null==t?void 0:t.lastSequence)||0,fromAccount:(null==t?void 0:t.from)||(null==t?void 0:t.fromAccount)||"",messageForShow:n(null==t?void 0:t.type,null==t?void 0:t.payload),payload:(null==t?void 0:t.payload)||null,type:(null==t?void 0:t.type)||"",isRevoked:(null==t?void 0:t.isRevoked)||!1,cloudCustomData:(null==t?void 0:t.cloudCustomData)||"",onlineOnlyFlag:(null==t?void 0:t._onlineOnlyFlag)||!1,nick:(null==t?void 0:t.nick)||"",nameCard:(null==t?void 0:t.nameCard)||"",version:(null==t?void 0:t.version)||0,isPeerRead:(null==t?void 0:t.isPeerRead)||!1,revoker:(null==t?void 0:t.revoker)||null}})(o[o.length-1]);n.updateConversation(`${s}${t}`,{lastMessage:i})}this._checkMessageStacked(o);const i=o.filter(e=>!0===e.isModified),r=o.filter(e=>!1===e.isModified),{OuterEvent:{MESSAGE_RECEIVED:a,MESSAGE_MODIFIED:u}}=this._core;i.length>0&&this._emitEvent({name:u,data:i}),r.length>0&&this._emitEvent({name:a,data:r})}_sortServerMessageList(e){const{groupID:t,serverMessageList:n,isHistoryMessage:s}=e;let o=[];this._avChatRoomHandler.isPollingSimplifiedMessage()&&!s?(n.sort((e,t)=>e.MS-t.MS),o=n.map(e=>e.MS)):(n.sort((e,t)=>e.MsgSeq-t.MsgSeq),o=n.map(e=>e.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${t} count:${o.length} sequenceList:${o}`),o.length=0}_handleMessageList(e,t){const{message:{messageDataHandler:n,messageHelper:s}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),i=[],a=t.length;for(let u=0;u<a;u++){let a=t[u];if(o&&(a=d(a)),m(a.Event)&&Object.values(r).includes(a.MsgBody.ReportType)){this._onGroupDismissed(e);break}if(null===this._filterMessageItem(a))continue;this._patchMessageType(a);const l=s.parseServerGroupMessage(a),c=this._createMessage(l);c.level=a.GroupInfo.From_AccountLevel,_(a.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(l)?this._avChatRoomHandler.handleGroupAttributesUpdated(l):null!==this._filterDuplicateMessage(c)&&(n.isMessageSentByCurrentInstance(c)||(1===l.isModified&&(c.isModified=!0),_(a.Event)&&this._updateLocalOnlineMemberCountFromTips(a),i.push(c)))}return i}_patchMessageType(e){const{OuterConstant:t}=this._core;_(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){const{Event:t}=e;return Object.values(i).includes(t)?(e=>e===i.MESSAGE_REVOKED)(t)?(this._handleMessageRevoked(e),null):(e=>e===i.LIVE_CUSTOM_DATA)(t)?(this._onLiveCustomData(e),null):(e=>e===i.MESSAGE_REACTION)(t)?null:e:(console.warn(`${this._name}.onMessageReceived unknown event:${t}`),null)}_createMessage(e){const{message:{messageFactory:t},OuterConstant:n}=this._core;let s=n.CONV_GROUP;e.event===i.GROUP_SYSTEM_MESSAGE&&(s=n.CONV_SYSTEM);const o=!!e.isSystemMessage,r=t.createMessage(Object.assign(Object.assign({},e),{conversationType:s,isSystemMessage:o,flow:"in"}));return r.setElement(e.elements),r}_filterDuplicateMessage(e){const{common:t}=this._core;if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}const n=this._messageIDList.has(e.ID);return n?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:${n}`),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){const{OuterConstant:t,OuterEvent:{MESSAGE_REVOKED:n}}=this._core,{ToGroupId:s,MsgBody:{RevokeMsgList:o},RevokerInfo:{Revoker_Account:i,Reason:r=""}}=e,a=[];o.forEach(e=>{const{TinyId:n,MsgClientTime:o,Random:u,MsgSeq:l}=e,c={conversationID:`${t.CONV_GROUP}${s}`,ID:`${n}-${o}-${u}`,revoker:i,revokeReason:r,revokerInfo:{userID:i,nick:"",avatar:""},sequence:l};a.push(c)}),0!==a.length&&this._emitEvent({name:n,data:a})}_onLiveCustomData(e){const{OuterEvent:{ROOM_CUSTOM_DATA_RECEIVED:t}}=this._core,{ToGroupId:n,MsgSeq:s,MsgTimeStamp:o,MsgBody:i}=e,r=(null==i?void 0:i.Content)||(null==i?void 0:i.MsgContent)||"";this._emitEvent({name:t,data:r}),console.log(`${this._name}._onLiveCustomData groupID:${n} sequence:${s} time:${o} data:${r}`)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){const{length:t}=e;if(t>=100&&this._reportMessageStackedCount<5){const e=this._avChatRoomHandler.getJoinedGroups();this._core.ssoLog.info("MessageStacked",`count:${t} groupID:${e.join(",")}`),this._reportMessageStackedCount+=1}}_emitEvent(e){this._core.notificationCenter.emitOuterEvent(e.name,e)}onBroadcastMessageReceived(e){const{message:{messageHelper:t},OuterEvent:{MESSAGE_RECEIVED:n}}=this._core,s=this._avChatRoomHandler.isPollingSimplifiedMessage(),o=[],r=e.length;for(let n=0;n<r;n++){let r=e[n];s&&(r=d(r));const a=t.parseServerGroupMessage(r);if(!Object.values(i).includes(r.Event)){console.warn(`${this._name}.onBroadcastMessageReceived unknown event:${r.Event}`);continue}const u=this._createMessage(a);u.isBroadcastMessage=!0,this._broadcastMessageIDMap.has(u.ID)||(o.push(u),this._broadcastMessageIDMap.set(u.ID,1))}o.length>0&&this._emitEvent({name:n,data:o})}_updateLocalOnlineMemberCountFromTips(e){const{utils:{isEmpty:t}}=this._core,{ToGroupId:n,MsgBody:{OnlineMemberInfo:s}}=e;if(t(s))return;const{OnlineMemberNum:o=0,ExpireTime:i=a}=s,r=Date.now();let u=this._avChatRoomHandler.getLocalOnlineMemberCount(n);t(u)?u={lastReqTime:0,lastSyncTime:0,latestUpdateTime:r,memberCount:o,expireTime:i}:(u.latestUpdateTime=r,u.memberCount=o),this._avChatRoomHandler.updateLocalOnlineMemberCount(n,u)}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};const f=t=>{const{core:{store:n}}=e;return(n.get("cloudConfig")||{})[t]},S=t=>{const{core:{utils:{isUndefined:n}}}=e;return!n(t)},C=()=>{const e=f("polling_interval");return S(e)?parseInt(e,10):300},b=()=>{const e=f("polling_simplified_msg");return S(e)?parseInt(e,10):0};var O=new class{constructor(){this._name="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this._onlineMemberCountMap=new Map,this._pollingIntervalMap=new Map,this._pollingNoMessageCountMap=new Map,this._membersReqInfoMap=new Map,this._startBroadcastSequence=1}init(e,t){this._core=e,this._parentPlugin=t,I.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){const{OuterConstant:{GRP_AVCHATROOM:t}}=this._core,{GroupTips:n=[]}=e;for(let e=0;e<n.length;e++){const{MsgBody:s,GroupInfo:{GroupId:o,GroupType:i}}=n[e],a=Object.values(r).includes(s.ReportType);i===t&&a&&this.reset(o)}}getCurrentPollingInterval(e){return this._pollingIntervalMap.get(e)||C()}isPollingSimplifiedMessage(){return 0!==b()}isGroupAttributesUpdated(e){return!!this._parentPlugin.groupAttribute.isGroupAttributesUpdated(e)&&(this._parentPlugin.groupAttribute.handleGroupAttributesUpdated(e),!0)}updateLocalOnlineMemberCount(e,t){this._onlineMemberCountMap.set(e,t)}getLocalOnlineMemberCount(e){return this._onlineMemberCountMap.get(e)||{}}hasPollingInstance(e){return this._pollingInstanceMap.has(e)}getJoinedLiveList(){const{OuterConstant:{GRP_LIVE:e}}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=[...this._joinedGroupMap.values()].filter(t=>t.type===e)),t}handleJoinGroupResult(e){return n(this,void 0,void 0,function*(){const{utils:{isUndefined:t},OuterConstant:{CONV_GROUP:n},apiMap:{getConversationProfile:s},OuterConstant:o}=this._core,{longPollingKey:i,group:r,historyMessageList:a=[]}=e,{groupID:u}=r;if(yield this._preCheck(r),this._joinedGroupMap.set(u,r),this._parentPlugin.groupDataHandler.updateLocalGroup([r]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),s(`${n}${u}`),a.length>0&&I.onMessageReceived(u,a,!0),!t(i)){return{code:0,data:this.startMessageLongPolling(e)}}return{code:0,data:{status:o.JOIN_STATUS_SUCCESS,group:r}}})}_preCheck(e){return n(this,void 0,void 0,function*(){const{common:t,OuterConstant:n,helper:s,apiMap:{quitGroup:o},ssoLog:i}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(()=>{const e=f("polling_count_limit");return S(e)&&e>0?parseInt(e,10):20})())throw new s.ChatError({code:c,message:"the count of longPolling exceeds the max limit"});return}if(0===this._joinedAVChatRoomCount())return;if(e.type===n.GRP_LIVE)return;const[r,a]=this._joinedGroupMap.entries().next().value;if(a.selfInfo.role===n.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(r);else try{yield o(r)}catch(e){i.debug("quitGroup",`${this._name}._preCheck quitGroup failed, groupID:${r} info:`,e)}this.reset(r)})}startMessageLongPolling(e){const{OuterConstant:t}=this._core,{longPollingKey:n,startSequence:s=1,group:o}=e,{groupID:i}=o;return this._pollingRequestInfoMap.set(i,{longPollingKey:n,startSequence:s}),this._pollingIntervalMap.set(i,C()),this._startPolling(i),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:o}}_startPolling(e){if(this._core.ssoLog.debug("_startPolling",`${this._name}._startPolling groupID:${e}`),this._pollingInstanceMap.has(e)){const t=this._pollingInstanceMap.get(e);return void((null==t?void 0:t.isRunning())||null==t||t.start())}const t=new p({core:this._core,manager:this,groupID:e,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});t.start(),this._pollingInstanceMap.set(e,t)}_handleRequestParams(e){const{longPollingKey:t,startSequence:n}=this._pollingRequestInfoMap.get(e)||{};return e===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:t,startSequence:n,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:b()}:{longPollingKey:t,startSequence:n,simplifiedMessage:b()}}_handleSuccess(e,t){const{ErrorCode:n}=t;if(0!==n){const{longPollingKey:t,startSequence:s}=this._pollingRequestInfoMap.get(e)||{};return void console.warn(`${this._name}._handleSuccess groupID:${e} key:${t} startSeq:${s} errorCode:${n}`)}this._hasJoinedAVChatRoom(e)&&this._handleResponseData(e,t)}_handleResponseData(e,t){const{Key:n,NextSeq:s,NextBroadcastSeq:o,RspMsgList:i=[],RspBroadcastMsgList:r=[]}=t;if(n&&s&&this._pollingRequestInfoMap.set(e,{longPollingKey:n,startSequence:s}),o&&o>this._startBroadcastSequence&&(this._startBroadcastSequence=o),i.length>0)0!==this._getPollingNoMessageCount(e)&&(this._updatePollingNoMessageCount(e,0),this._pollingIntervalMap.set(e,C())),I.onMessageReceived(e,i);else{let t=this._getPollingNoMessageCount(e);if(t+=1,this._updatePollingNoMessageCount(e,t),t===(()=>{const e=f("polling_no_msg_count");return S(e)?parseInt(e,10):20})()){const t=C()+(()=>{const e=f("polling_interval_plus");return S(e)?parseInt(e,10):2e3})();this._pollingIntervalMap.set(e,t)}}r.length>0&&I.onBroadcastMessageReceived(r)}_handleFailure(e,t){const{ssoLog:n,utils:{safeStringify:s}}=this._core;n.warn("polling",`${this._name}._handleFailure groupID:${e} error: ${s(t)}`)}_joinedAVChatRoomCount(){const{OuterConstant:e}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=this.getJoinedGroups().filter(t=>t.type===e.GRP_AVCHATROOM)),t.length}_hasJoinedAVChatRoom(e){return this._joinedGroupMap.has(e)}getJoinedGroups(){return[...this._joinedGroupMap.values()]}updateLocalLiveGroup(e,t){this._joinedGroupMap.set(e,t),this._parentPlugin.groupDataHandler.updateLocalGroup([t])}handleLiveHistoryMessages(e,t){I.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){if(!this._membersReqInfoMap.has(e))return this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1;let{startTime:t,requestCount:n}=this._membersReqInfoMap.get(e);const{interval:s,count:o}=(()=>{const e=f("av_members_freq_limit");if(S(e)){const{interval:t,count:n}=JSON.parse(e);if(n>0&&t>0)return{interval:t,count:n}}return{interval:30,count:4}})();return Date.now()-t>1e3*s?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(n+=1,this._membersReqInfoMap.set(e,{startTime:t,requestCount:n}),n>o)}_stopPolling(e){if(this._core.ssoLog.debug("_stopPolling",`${this._name}._stopPolling groupID:${e}`),e){const{appStore:{conversationStore:t},OuterConstant:{CONV_GROUP:n}}=this._core;t.deleteConversation(`${n}${e}`);const s=this._pollingInstanceMap.get(e);return null==s||s.stop(),this._parentPlugin.groupDataHandler.deleteLocalGroup(e),this._pollingInstanceMap.delete(e),this._pollingRequestInfoMap.delete(e),this._joinedGroupMap.delete(e),this._onlineMemberCountMap.delete(e),this._pollingIntervalMap.delete(e),this._pollingNoMessageCountMap.delete(e),void this._membersReqInfoMap.delete(e)}for(const e of this._pollingInstanceMap.values())null==e||e.stop();this._pollingInstanceMap.clear(),this._pollingRequestInfoMap.clear(),this._joinedGroupMap.clear(),this._onlineMemberCountMap.clear(),this._pollingIntervalMap.clear(),this._pollingNoMessageCountMap.clear(),this._membersReqInfoMap.clear()}_updatePollingNoMessageCount(e,t){this._pollingNoMessageCountMap.set(e,t)}_getPollingNoMessageCount(e){return this._pollingNoMessageCountMap.get(e)||0}_reportLongPollingCount(){const e=this._joinedGroupMap.size;if(e>1){const{common:t,OuterConstant:n,ssoLog:s}=this._core,o=t.isUnlimitedAVChatRoom()?1:0,i=[],r=[];this._joinedGroupMap.values().forEach(({groupID:e,type:t})=>{t===n.GRP_LIVE?r.push(e):i.push(e)}),s.info("longPollingCount",String(e),{moreMessage:`av:${i.join(",")} live:${r.join(",")} code: ${o}`,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,I.reset()}};var R=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"joinGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}joinGroup(e){return n(this,void 0,void 0,function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.joinGroup(e),{data:{status:s,group:{type:o}}}=n;return o===t.GRP_AVCHATROOM?s===t.JOIN_STATUS_ALREADY_IN_GROUP?n:O.handleJoinGroupResult(n.data):n})}};var y=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"quitGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}quitGroup(e){return n(this,void 0,void 0,function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.quitGroup(e),{data:{type:s}}=n;return s===t.GRP_AVCHATROOM&&O.reset(e),n})}};var P=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"dismissGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}dismissGroup(e){return n(this,void 0,void 0,function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.dismissGroup(e),{data:{type:s}}=n;return s===t.GRP_AVCHATROOM&&O.reset(e),n})}};var G=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupMemberList(e){return n(this,void 0,void 0,function*(){const{appStore:{groupStore:t},helper:n,OuterConstant:o}=this._core,{groupID:i}=e,r=t.getGroup(i);if((null==r?void 0:r.type)===o.GRP_AVCHATROOM){if(n.checkBusinessCapabilityBits(s)){if(O.isOverFrequencyLimit(i)){throw{code:2996,message:`Over frequency limit: get_members-${i}`}}return this._getGroupMemberList(e)}}return this._parentPlugin.groupMember.getGroupMemberList(e)})}_getGroupMemberList(e){return n(this,void 0,void 0,function*(){const t="_getGroupMemberList",{helper:s}=this._core;try{const s=yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,offset:s=0}=e,o={GroupId:n,Timestamp:s};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:o})})}(e,this._core),{MemberList:o=[],NextTimestamp:i=0}=s||{},r=this._handleMemberList(o);return console.log(`${this._name}.${t} ok, groupID:${e.groupID} count:${r.length} nextOffset:${i}`),{code:0,data:{memberList:r,offset:i}}}catch(e){const n=new s.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,n),n}})}_handleMemberList(e){return e.map(e=>{const{Member_Account:t,NickName:n="",Avatar:s="",Remark:o="",JoinTime:i=0,Marks:r=[]}=e;return{userID:t,nick:n,avatar:s,remark:o,joinTime:i,marks:r,isOnline:!0}})}};var D=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupOnlineMemberCount(e){return n(this,void 0,void 0,function*(){const{appStore:{groupStore:t},OuterConstant:n}=this._core,s=t.getGroup(e);return s?s.type===n.GRP_AVCHATROOM?this._getOnlineMemberCount(e):this._parentPlugin.groupAction.getGroupOnlineMemberCount(e):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(e){return n(this,void 0,void 0,function*(){const t="_getOnlineMemberCount",{utils:{isEmpty:n}}=this._core,s=O.getLocalOnlineMemberCount(e);if(n(s)||this._isExpired(e)){const{memberCount:n=0}=yield this._getOnlineMemberCountFromServer(e);return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${n} from server.`),{code:0,data:{memberCount:n}}}return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${s.memberCount} from local.`),{code:0,data:{memberCount:s.memberCount}}})}_isExpired(e){const t=O.getLocalOnlineMemberCount(e),n=Date.now(),s=n-t.lastSyncTime>1e3*t.expireTime,o=n-t.latestUpdateTime>1e4,i=n-t.lastReqTime>3e3;return s&&o&&i}_getOnlineMemberCountFromServer(e){return n(this,void 0,void 0,function*(){const t="_getOnlineMemberCountFromServer";try{const t=yield function(e,t){return n(this,void 0,void 0,function*(){const n={GroupId:e};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:n})})}(e,this._core),{OnlineMemberNum:s=0,ExpireTime:o=a}=t||{},i=Date.now(),r={lastSyncTime:i,latestUpdateTime:i,lastReqTime:i,memberCount:s,expireTime:o};return O.updateLocalOnlineMemberCount(e,r),{memberCount:s}}catch(e){const n=new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,n),n}})}};var E=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}deleteGroupMember(e){return n(this,void 0,void 0,function*(){const t="deleteGroupMember",{appStore:{groupStore:n},utils:{isUndefined:s},helper:i,OuterConstant:r}=this._core,{groupID:a}=e,l=n.getGroup(a);if(s(l))throw new i.ChatError({functionName:t,code:u});if(l.type===r.GRP_AVCHATROOM){if(i.checkBusinessCapabilityBits(o))return this._deleteGroupMember(e);throw new i.ChatError({functionName:t,code:g})}return this._parentPlugin.groupMember.deleteGroupMember(e)})}_deleteGroupMember(e){return n(this,void 0,void 0,function*(){const t="_deleteGroupMember",{appStore:{groupStore:s},helper:o,ssoLog:i}=this._core,{groupID:r,duration:a=0,userIDList:u}=e;if(0===a)throw new o.ChatError({functionName:t,code:l});try{yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,userIDList:s,duration:o,reason:i}=e,r={GroupId:n,Members_Account:s,Duration:o,Description:i};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:r})})}(e,this._core),i.debug(t,`${this._name}.${t} ok, groupID:${r}`);return{code:0,data:{group:s.getGroup(r),userIDList:u}}}catch(e){throw new o.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}};var A=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){this._core=e;const{helper:t}=e;t.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return n(this,void 0,void 0,function*(){const t="markGroupMemberList",{groupID:s,markType:o,enableMark:i,userIDList:r=[]}=e,a=this._generateRequestData(e);try{const e=yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,operationType:s,memberList:o}=e,i={GroupId:n,CommandType:s,MemberList:o};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:i})})}(a,this._core),{MemberList:u=[]}=e||{},{successUserIDList:l,failureUserIDList:c}=this._handleResult(u,r);return{code:0,data:{successUserIDList:l,failureUserIDList:c},successLog:{message:`${this._name}.${t} ok, groupID:${s} markType:${o} enableMark:${i} success:${l.length} fail:${c.length}`}}}catch(e){throw new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}_generateRequestData(e){const{groupID:t,markType:n,enableMark:s,userIDList:o=[]}=e,i=!0===s?1:2,r=[...o];r.length>500&&console.warn(`${this._name}._generateRequestData, the length of userIDList cannot exceed 500`);return{groupID:t,operationType:i,memberList:r.map(e=>({Member_Account:e,Marks:[n]}))}}_handleResult(e,t){const n=[],s=[];return e.length===t.length?(n.push(...t),{successUserIDList:n,failureUserIDList:s}):(t.forEach(t=>{e.find(e=>e.Member_Account===t)?n.push(t):s.push(t)}),{successUserIDList:n,failureUserIDList:s})}};var L=new class{init(e,t){e.ssoLog.debug("AVChatRoomAction.init"),R.init(e,t),y.init(e,t),P.init(e,t),G.init(e,t),D.init(e,t),E.init(e,t),A.init(e)}};var T=new class{constructor(){this._name="LiveHandler"}init(e){this._core=e;const{helper:t,ssoLog:n}=e;t.registerExperimentalAPI("startMessageLongPolling",this),t.registerExperimentalAPI("stopMessageLongPolling",this),n.debug("LiveHandler.init")}startMessageLongPolling(e){const{common:t,utils:{isEmpty:n},OuterConstant:s,ssoLog:o}=this._core,{groupID:i,longPollingKey:r,longPollingSequence:a=1}=e;if(n(r))return o.warn("startMessageLongPolling",`${this._name}.startMessageLongPolling longPollingKey is empty.`),Promise.resolve({});O.hasPollingInstance(i)&&this.stopMessageLongPolling({groupID:i});const u=O.getJoinedLiveList(),l=t.isUnlimitedAVChatRoom();!l&&u.length>0&&this.stopMessageLongPolling({groupID:u[0].groupID}),o.debug("startMessageLongPolling",`${this._name}.startMessageLongPolling isUnlimited:${l} groupID:${i} longPollingKey:${r} longPollingSequence:${a}`);const c={groupID:i,type:s.GRP_LIVE};return O.updateLocalLiveGroup(i,c),this._getLiveHistoryMessages({groupID:i,longPollingKey:r,startSequence:a}),O.startMessageLongPolling({group:c,longPollingKey:r,startSequence:a})}stopMessageLongPolling(e){const{groupID:t}=e;return O.reset(t),this._core.ssoLog.debug("stopMessageLongPolling",`${this._name}.stopMessageLongPolling ok, groupID:${t}`),Promise.resolve({groupID:t})}_getLiveHistoryMessages(e){return n(this,void 0,void 0,function*(){const{ssoLog:t}=this._core,{groupID:s}=e;try{const o=yield function(e,t){return n(this,void 0,void 0,function*(){const{groupID:n,longPollingKey:s,startSequence:o}=e,i={GroupId:n,LongPollingKey:s,PullPreSeq:o};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:i})})}(e,this._core),{RspMsgList:i=[]}=o||{};t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages ok, groupID:${s} count:${i.length}`),i.length>0&&O.handleLiveHistoryMessages(s,i)}catch(e){t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages failed, groupID:${s} info:${e.message}`)}})}};return new class{constructor(){this.name="AVChatRoom"}install(t,n){this._core=t,e.init(t),O.init(t,n),L.init(t,n),T.init(t);const{notificationCenter:s,InnerEvent:o}=t,{InnerEventSubType:i}=s;s.subscribeInnerEvent(o.MESSAGE_PUSH,i.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),s.subscribeInnerEvent(o.LOGOUT,this._reset,this),s.subscribeInnerEvent(o.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){O.onAVChatRoomSystemNotification(e)}_reset(){O.reset()}_dispose(){this._reset();const{notificationCenter:e,InnerEvent:t}=this._core,{InnerEventSubType:n}=e;e.unSubscribeInnerEvent(t.MESSAGE_PUSH,n.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}}});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).TencentCloudChatAvchatroom=t()}(this,(function(){"use strict";const e=new class{init(e){this.core=e}};function t(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(s=Object.getOwnPropertySymbols(e);o<s.length;o++)t.indexOf(s[o])<0&&Object.prototype.propertyIsEnumerable.call(e,s[o])&&(n[s[o]]=e[s[o]])}return n}function n(e,t,n,s){return new(n||(n=Promise))((function(o,i){function r(e){try{u(s.next(e))}catch(e){i(e)}}function a(e){try{u(s.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(r,a)}u((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const s="AV_MBR_LIST",o="AV_BAN_MBR",i={NORMAL_MESSAGE:3,GROUP_TIPS_HAS_ROAMING:4,GROUP_SYSTEM_MESSAGE:5,GROUP_TIPS_HAS_NO_ROAMING:6,BROADCAST_MESSAGE:17,MESSAGE_REVOKED:20,MESSAGE_REACTION:21,LIVE_CUSTOM_DATA:100},r={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21},a=60,u=2603,l=2686,c=2688,g=3122;class p{constructor(e){const{core:t,manager:n,groupID:s,getRequestParams:o,onSuccess:i,onFail:r}=e;this._name="Polling",this._core=t,this._manager=n,this._timeoutID=-1,this._isRunning=!1,this._groupID=s,this._getRequestParams=o,this._onSuccess=i,this._onFail=r}start(){this._isRunning=!0,this._request(),console.log(`${this._name}.start pollingInterval:${this._manager.getCurrentPollingInterval(this._groupID)}`)}isRunning(){return this._isRunning}_request(){return n(this,void 0,void 0,(function*(){try{const e=this._getRequestParams(this._groupID),t=yield function(e,t){return n(this,void 0,void 0,(function*(){const{longPollingKey:n,startSequence:s,startBroadcastSeq:o,simplifiedMessage:i}=e,r={Key:n,StartSeq:s,StartBroadcastSeq:o,DownsizeFlag:i,USP:1,HoldTime:90};return t.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:r})}))}(e,this._core);this._onSuccess(this._groupID,t);const s=this._manager.getCurrentPollingInterval(this._groupID);this._runNextPolling(s)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}}))}_runNextPolling(e){this.isRunning()&&(this._timeoutID>-1&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(`${this._name}.stop timerID:${this._timeoutID}`),this._timeoutID>-1&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class h{constructor(e){this._maxLength=e,this._map=new Map}set(e){var t;if(this._map.size>=this._maxLength){const e=(null===(t=this._map.entries().next().value)||void 0===t?void 0:t[0])||"";this._map.delete(e)}this._map.set(e,1)}has(e){return this._map.has(e)}delete(e){this.has(e)&&this._map.delete(e)}clear(){this._map.clear()}}const _=e=>e===i.GROUP_TIPS_HAS_NO_ROAMING||e===i.GROUP_TIPS_HAS_ROAMING,m=e=>e===i.GROUP_SYSTEM_MESSAGE;function d(n){const s=function(e){const{E:n,MCT:s,MR:o,MP:i,MTS:r,GId:a,MS:u,CCD:l,F_Account:c,IsSys:g,GInf:p,MsgBody:h}=e,_=t(e,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:n,MsgClientTime:s,MsgRandom:o,MsgPriority:i,MsgTimeStamp:r,ToGroupId:a,MsgSeq:u,CloudCustomData:l,From_Account:c,IsSystemMsg:g,GroupInfo:M(p),MsgBody:v(h)},_)}(n);return function(t){const{Event:n}=t;(_(n)||m(n))&&(t.From_Account=t.From_Account||"@TIM#SYSTEM");s=n,(s===i.BROADCAST_MESSAGE||(e=>e===i.NORMAL_MESSAGE)(n))&&function(t){const{core:{OuterConstant:n}}=e;t.CloudCustomData=t.CloudCustomData||"",t.MsgBody=t.MsgBody.map((e=>{if(e.MsgType===n.MSG_CUSTOM){const{content:t={}}=e;e.content=Object.assign({Data:"",Desc:"",Ext:""},t)}return e}))}(t);var s;_(n)&&function(e){const{GroupJoinType:t,MsgOperatorMemberExtraInfo:n={},MsgMemberExtraInfo:s,Operator_Account:o,List_Account:i,OpType:r}=e.MsgBody||{};"number"==typeof t||1!==r&&2!==r||(e.MsgBody.GroupJoinType=2===r?0:1);s||(e.MsgBody.MsgMemberExtraInfo=null==i?void 0:i.map((e=>({UserId:e}))));1!==r||s||(e.MsgBody.MsgMemberExtraInfo=[{UserId:n.UserId}]);e.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:o,ImageUrl:"",NickName:""},n)}(t);m(n)&&function(e){const{MsgOperatorMemberExtraInfo:t={},Operator_Account:n}=e.MsgBody||{};e.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:n,ImageUrl:"",NickName:""},t),e.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*e.MsgTimeStamp},e.MsgBody),e.MsgBody=Object.keys(e.MsgBody).filter((e=>"MsgOperatorMemberExtraInfo"!==e)).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:e.MsgBody[n]})),{})}(t)}(s),s}function M(e){const n=e||{},{GN:s,GT:o,F_Hd:i,F_NN:r,F_Ll:a}=n,u=t(n,["GN","GT","F_Hd","F_NN","F_Ll"]),l=Object.assign({GroupName:s,GroupType:o},u);return i&&(l.From_AccountHeadurl=i),r&&(l.From_AccountNick=r),a&&(l.From_AccountLevel=a),l}function v(e){let n=e;Array.isArray(e)||(n=[e]);const s=n.map((e=>{const{O_Account:n,Opt:s,L_Account:o,RT:i,UDF:r,OpInf:a,OnlineInf:u,MsgMemberExtraInfo:l}=e,c=t(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),g=Object.assign({Operator_Account:n,OpType:s,List_Account:o,ReportType:i,UserDefinedField:r},c);return a&&(g.MsgOperatorMemberExtraInfo=function(e){const{Img:n,NN:s}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},o)}(a)),l&&(g.MsgMemberExtraInfo=function(e){return null==e?void 0:e.map((e=>{const{Img:n,NN:s}=e,o=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},o)}))}(l)),u&&(g.OnlineMemberInfo=function(e){const{ET:t,Num:n}=e;return{ExpireTime:t,OnlineMemberNum:n}}(u)),g}));return Array.isArray(e)?s:s[0]}var I=new class{constructor(){this._name="MessageParser",this._sequenceList=new h(200),this._messageIDList=new h(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(e,t){this._core=e,this._avChatRoomHandler=t}onMessageReceived(t,n,s=!1){this._sortServerMessageList({groupID:t,serverMessageList:n,isHistoryMessage:s});const o=this._handleMessageList(t,n);if(0===o.length)return;if(!s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:s}}=this._core,i=(t=>{const{core:{common:{getMessagePreviewText:n}}}=e;return{lastTime:(null==t?void 0:t.time)||(null==t?void 0:t.lastTime)||0,lastSequence:(null==t?void 0:t.sequence)||(null==t?void 0:t.lastSequence)||0,fromAccount:(null==t?void 0:t.from)||(null==t?void 0:t.fromAccount)||"",messageForShow:n(null==t?void 0:t.type,null==t?void 0:t.payload),payload:(null==t?void 0:t.payload)||null,type:(null==t?void 0:t.type)||"",isRevoked:(null==t?void 0:t.isRevoked)||!1,cloudCustomData:(null==t?void 0:t.cloudCustomData)||"",onlineOnlyFlag:(null==t?void 0:t._onlineOnlyFlag)||!1,nick:(null==t?void 0:t.nick)||"",nameCard:(null==t?void 0:t.nameCard)||"",version:(null==t?void 0:t.version)||0,isPeerRead:(null==t?void 0:t.isPeerRead)||!1,revoker:(null==t?void 0:t.revoker)||null}})(o[o.length-1]);n.updateConversation(`${s}${t}`,{lastMessage:i})}this._checkMessageStacked(o);const i=o.filter((e=>!0===e.isModified)),r=o.filter((e=>!1===e.isModified)),{OuterEvent:{MESSAGE_RECEIVED:a,MESSAGE_MODIFIED:u}}=this._core;i.length>0&&this._emitEvent({name:u,data:i}),r.length>0&&this._emitEvent({name:a,data:r})}_sortServerMessageList(e){const{groupID:t,serverMessageList:n,isHistoryMessage:s}=e;let o=[];this._avChatRoomHandler.isPollingSimplifiedMessage()&&!s?(n.sort(((e,t)=>e.MS-t.MS)),o=n.map((e=>e.MS))):(n.sort(((e,t)=>e.MsgSeq-t.MsgSeq)),o=n.map((e=>e.MsgSeq))),console.log(`${this._name}._sortServerMessageList groupID:${t} count:${o.length} sequenceList:${o}`),o.length=0}_handleMessageList(e,t){const{message:{messageDataHandler:n,messageHelper:s}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),i=[],a=t.length;for(let u=0;u<a;u++){let a=t[u];if(o&&(a=d(a)),m(a.Event)&&Object.values(r).includes(a.MsgBody.ReportType)){this._onGroupDismissed(e);break}if(null===this._filterMessageItem(a))continue;this._patchMessageType(a);const l=s.parseServerGroupMessage(a),c=this._createMessage(l);c.level=a.GroupInfo.From_AccountLevel,_(a.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(l)?this._avChatRoomHandler.handleGroupAttributesUpdated(l):null!==this._filterDuplicateMessage(c)&&(n.isMessageSentByCurrentInstance(c)||(1===l.isModified&&(c.isModified=!0),_(a.Event)&&this._updateLocalOnlineMemberCountFromTips(a),i.push(c)))}return i}_patchMessageType(e){const{OuterConstant:t}=this._core;_(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){const{Event:t}=e;return Object.values(i).includes(t)?(e=>e===i.MESSAGE_REVOKED)(t)?(this._handleMessageRevoked(e),null):(e=>e===i.LIVE_CUSTOM_DATA)(t)?(this._onLiveCustomData(e),null):(e=>e===i.MESSAGE_REACTION)(t)?null:e:(console.warn(`${this._name}.onMessageReceived unknown event:${t}`),null)}_createMessage(e){const{message:{messageFactory:t},OuterConstant:n}=this._core;let s=n.CONV_GROUP;e.event===i.GROUP_SYSTEM_MESSAGE&&(s=n.CONV_SYSTEM);const o=!!e.isSystemMessage,r=t.createMessage(Object.assign(Object.assign({},e),{conversationType:s,isSystemMessage:o,flow:"in"}));return r.setElement(e.elements),r}_filterDuplicateMessage(e){const{common:t}=this._core;if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}const n=this._messageIDList.has(e.ID);return n?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:${n}`),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){const{OuterConstant:t,OuterEvent:{MESSAGE_REVOKED:n}}=this._core,{ToGroupId:s,MsgBody:{RevokeMsgList:o},RevokerInfo:{Revoker_Account:i,Reason:r=""}}=e,a=[];o.forEach((e=>{const{TinyId:n,MsgClientTime:o,Random:u,MsgSeq:l}=e,c={conversationID:`${t.CONV_GROUP}${s}`,ID:`${n}-${o}-${u}`,revoker:i,revokeReason:r,revokerInfo:{userID:i,nick:"",avatar:""},sequence:l};a.push(c)})),0!==a.length&&this._emitEvent({name:n,data:a})}_onLiveCustomData(e){const{OuterEvent:{ROOM_CUSTOM_DATA_RECEIVED:t}}=this._core,{ToGroupId:n,MsgSeq:s,MsgTimeStamp:o,MsgBody:i}=e,r=(null==i?void 0:i.Content)||(null==i?void 0:i.MsgContent)||"";this._emitEvent({name:t,data:r}),console.log(`${this._name}._onLiveCustomData groupID:${n} sequence:${s} time:${o} data:${r}`)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){const{length:t}=e;if(t>=100&&this._reportMessageStackedCount<5){const e=this._avChatRoomHandler.getJoinedGroups();this._core.ssoLog.info("MessageStacked",`count:${t} groupID:${e.join(",")}`),this._reportMessageStackedCount+=1}}_emitEvent(e){this._core.notificationCenter.emitOuterEvent(e.name,e)}onBroadcastMessageReceived(e){const{message:{messageHelper:t},OuterEvent:{MESSAGE_RECEIVED:n}}=this._core,s=this._avChatRoomHandler.isPollingSimplifiedMessage(),o=[],r=e.length;for(let n=0;n<r;n++){let r=e[n];s&&(r=d(r));const a=t.parseServerGroupMessage(r);if(!Object.values(i).includes(r.Event)){console.warn(`${this._name}.onBroadcastMessageReceived unknown event:${r.Event}`);continue}const u=this._createMessage(a);u.isBroadcastMessage=!0,this._broadcastMessageIDMap.has(u.ID)||(o.push(u),this._broadcastMessageIDMap.set(u.ID,1))}o.length>0&&this._emitEvent({name:n,data:o})}_updateLocalOnlineMemberCountFromTips(e){const{utils:{isEmpty:t}}=this._core,{ToGroupId:n,MsgBody:{OnlineMemberInfo:s}}=e;if(t(s))return;const{OnlineMemberNum:o=0,ExpireTime:i=a}=s,r=Date.now();let u=this._avChatRoomHandler.getLocalOnlineMemberCount(n);t(u)?u={lastReqTime:0,lastSyncTime:0,latestUpdateTime:r,memberCount:o,expireTime:i}:(u.latestUpdateTime=r,u.memberCount=o),this._avChatRoomHandler.updateLocalOnlineMemberCount(n,u)}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};const f=t=>{const{core:{store:n}}=e;return(n.get("cloudConfig")||{})[t]},S=t=>{const{core:{utils:{isUndefined:n}}}=e;return!n(t)},C=()=>{const e=f("polling_interval");return S(e)?parseInt(e,10):300},b=()=>{const e=f("polling_simplified_msg");return S(e)?parseInt(e,10):0};var O=new class{constructor(){this._name="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this._onlineMemberCountMap=new Map,this._pollingIntervalMap=new Map,this._pollingNoMessageCountMap=new Map,this._membersReqInfoMap=new Map,this._startBroadcastSequence=1}init(e,t){this._core=e,this._parentPlugin=t,I.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){const{OuterConstant:{GRP_AVCHATROOM:t}}=this._core,{GroupTips:n=[]}=e;for(let e=0;e<n.length;e++){const{MsgBody:s,GroupInfo:{GroupId:o,GroupType:i}}=n[e],a=Object.values(r).includes(s.ReportType);i===t&&a&&this.reset(o)}}getCurrentPollingInterval(e){return this._pollingIntervalMap.get(e)||C()}isPollingSimplifiedMessage(){return 0!==b()}isGroupAttributesUpdated(e){return!!this._parentPlugin.groupAttribute.isGroupAttributesUpdated(e)&&(this._parentPlugin.groupAttribute.handleGroupAttributesUpdated(e),!0)}updateLocalOnlineMemberCount(e,t){this._onlineMemberCountMap.set(e,t)}getLocalOnlineMemberCount(e){return this._onlineMemberCountMap.get(e)||{}}hasPollingInstance(e){return this._pollingInstanceMap.has(e)}getJoinedLiveList(){const{OuterConstant:{GRP_LIVE:e}}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=[...this._joinedGroupMap.values()].filter((t=>t.type===e))),t}handleJoinGroupResult(e){return n(this,void 0,void 0,(function*(){const{utils:{isUndefined:t},OuterConstant:{CONV_GROUP:n},apiMap:{getConversationProfile:s},OuterConstant:o}=this._core,{longPollingKey:i,group:r,historyMessageList:a=[]}=e,{groupID:u}=r;if(yield this._preCheck(r),this._joinedGroupMap.set(u,r),this._parentPlugin.groupDataHandler.updateLocalGroup([r]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),s(`${n}${u}`),a.length>0&&I.onMessageReceived(u,a,!0),!t(i)){return{code:0,data:this.startMessageLongPolling(e)}}return{code:0,data:{status:o.JOIN_STATUS_SUCCESS,group:r}}}))}_preCheck(e){return n(this,void 0,void 0,(function*(){const{common:t,OuterConstant:n,helper:s,apiMap:{quitGroup:o},ssoLog:i}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(()=>{const e=f("polling_count_limit");return S(e)&&e>0?parseInt(e,10):20})())throw new s.ChatError({code:c,message:"the count of longPolling exceeds the max limit"});return}if(0===this._joinedAVChatRoomCount())return;if(e.type===n.GRP_LIVE)return;const[r,a]=this._joinedGroupMap.entries().next().value;if(a.selfInfo.role===n.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(r);else try{yield o(r)}catch(e){i.debug("quitGroup",`${this._name}._preCheck quitGroup failed, groupID:${r} info:`,e)}this.reset(r)}))}startMessageLongPolling(e){const{OuterConstant:t}=this._core,{longPollingKey:n,startSequence:s=1,group:o}=e,{groupID:i}=o;return this._pollingRequestInfoMap.set(i,{longPollingKey:n,startSequence:s}),this._pollingIntervalMap.set(i,C()),this._startPolling(i),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:o}}_startPolling(e){if(this._core.ssoLog.debug("_startPolling",`${this._name}._startPolling groupID:${e}`),this._pollingInstanceMap.has(e)){const t=this._pollingInstanceMap.get(e);return void((null==t?void 0:t.isRunning())||null==t||t.start())}const t=new p({core:this._core,manager:this,groupID:e,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});t.start(),this._pollingInstanceMap.set(e,t)}_handleRequestParams(e){const{longPollingKey:t,startSequence:n}=this._pollingRequestInfoMap.get(e)||{};return e===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:t,startSequence:n,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:b()}:{longPollingKey:t,startSequence:n,simplifiedMessage:b()}}_handleSuccess(e,t){const{ErrorCode:n}=t;if(0===n)this._hasJoinedAVChatRoom(e)&&this._handleResponseData(e,t);else{const{longPollingKey:t,startSequence:s}=this._pollingRequestInfoMap.get(e)||{};console.warn(`${this._name}._handleSuccess groupID:${e} key:${t} startSeq:${s} errorCode:${n}`)}}_handleResponseData(e,t){const{Key:n,NextSeq:s,NextBroadcastSeq:o,RspMsgList:i=[],RspBroadcastMsgList:r=[]}=t;if(n&&s&&this._pollingRequestInfoMap.set(e,{longPollingKey:n,startSequence:s}),o&&o>this._startBroadcastSequence&&(this._startBroadcastSequence=o),i.length>0)0!==this._getPollingNoMessageCount(e)&&(this._updatePollingNoMessageCount(e,0),this._pollingIntervalMap.set(e,C())),I.onMessageReceived(e,i);else{let t=this._getPollingNoMessageCount(e);if(t+=1,this._updatePollingNoMessageCount(e,t),t===(()=>{const e=f("polling_no_msg_count");return S(e)?parseInt(e,10):20})()){const t=C()+(()=>{const e=f("polling_interval_plus");return S(e)?parseInt(e,10):2e3})();this._pollingIntervalMap.set(e,t)}}r.length>0&&I.onBroadcastMessageReceived(r)}_handleFailure(e,t){const{ssoLog:n,utils:{safeStringify:s}}=this._core;n.warn("polling",`${this._name}._handleFailure groupID:${e} error: ${s(t)}`)}_joinedAVChatRoomCount(){const{OuterConstant:e}=this._core;let t=[];return this._joinedGroupMap.size>0&&(t=this.getJoinedGroups().filter((t=>t.type===e.GRP_AVCHATROOM))),t.length}_hasJoinedAVChatRoom(e){return this._joinedGroupMap.has(e)}getJoinedGroups(){return[...this._joinedGroupMap.values()]}updateLocalLiveGroup(e,t){this._joinedGroupMap.set(e,t),this._parentPlugin.groupDataHandler.updateLocalGroup([t])}handleLiveHistoryMessages(e,t){I.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){if(!this._membersReqInfoMap.has(e))return this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1;let{startTime:t,requestCount:n}=this._membersReqInfoMap.get(e);const{interval:s,count:o}=(()=>{const e=f("av_members_freq_limit");if(S(e)){const{interval:t,count:n}=JSON.parse(e);if(n>0&&t>0)return{interval:t,count:n}}return{interval:30,count:4}})();return Date.now()-t>1e3*s?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(n+=1,this._membersReqInfoMap.set(e,{startTime:t,requestCount:n}),n>o)}_stopPolling(e){if(this._core.ssoLog.debug("_stopPolling",`${this._name}._stopPolling groupID:${e}`),e){const{appStore:{conversationStore:t},OuterConstant:{CONV_GROUP:n}}=this._core;t.deleteConversation(`${n}${e}`);const s=this._pollingInstanceMap.get(e);return null==s||s.stop(),this._parentPlugin.groupDataHandler.deleteLocalGroup(e),this._pollingInstanceMap.delete(e),this._pollingRequestInfoMap.delete(e),this._joinedGroupMap.delete(e),this._onlineMemberCountMap.delete(e),this._pollingIntervalMap.delete(e),this._pollingNoMessageCountMap.delete(e),void this._membersReqInfoMap.delete(e)}for(const e of this._pollingInstanceMap.values())null==e||e.stop();this._pollingInstanceMap.clear(),this._pollingRequestInfoMap.clear(),this._joinedGroupMap.clear(),this._onlineMemberCountMap.clear(),this._pollingIntervalMap.clear(),this._pollingNoMessageCountMap.clear(),this._membersReqInfoMap.clear()}_updatePollingNoMessageCount(e,t){this._pollingNoMessageCountMap.set(e,t)}_getPollingNoMessageCount(e){return this._pollingNoMessageCountMap.get(e)||0}_reportLongPollingCount(){const e=this._joinedGroupMap.size;if(e>1){const{common:t,OuterConstant:n,ssoLog:s}=this._core,o=t.isUnlimitedAVChatRoom()?1:0,i=[],r=[];this._joinedGroupMap.values().forEach((({groupID:e,type:t})=>{t===n.GRP_LIVE?r.push(e):i.push(e)})),s.info("longPollingCount",String(e),{moreMessage:`av:${i.join(",")} live:${r.join(",")} code: ${o}`,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,I.reset()}};var R=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"joinGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}joinGroup(e){return n(this,void 0,void 0,(function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.joinGroup(e),{data:{status:s,group:{type:o}}}=n;return o===t.GRP_AVCHATROOM?s===t.JOIN_STATUS_ALREADY_IN_GROUP?n:O.handleJoinGroupResult(n.data):n}))}};var y=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"quitGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}quitGroup(e){return n(this,void 0,void 0,(function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.quitGroup(e),{data:{type:s}}=n;return s===t.GRP_AVCHATROOM&&O.reset(e),n}))}};var P=new class{init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"dismissGroup",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}dismissGroup(e){return n(this,void 0,void 0,(function*(){const{OuterConstant:t}=this._core,n=yield this._parentPlugin.groupAction.dismissGroup(e),{data:{type:s}}=n;return s===t.GRP_AVCHATROOM&&O.reset(e),n}))}};var G=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupMemberList(e){return n(this,void 0,void 0,(function*(){const{appStore:{groupStore:t},helper:n,OuterConstant:o}=this._core,{groupID:i}=e,r=t.getGroup(i);if((null==r?void 0:r.type)===o.GRP_AVCHATROOM){if(n.checkBusinessCapabilityBits(s)){if(O.isOverFrequencyLimit(i)){throw{code:2996,message:`Over frequency limit: get_members-${i}`}}return this._getGroupMemberList(e)}}return this._parentPlugin.groupMember.getGroupMemberList(e)}))}_getGroupMemberList(e){return n(this,void 0,void 0,(function*(){const t="_getGroupMemberList",{helper:s}=this._core;try{const s=yield function(e,t){return n(this,void 0,void 0,(function*(){const{groupID:n,offset:s=0}=e,o={GroupId:n,Timestamp:s};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:o})}))}(e,this._core),{MemberList:o=[],NextTimestamp:i=0}=s||{},r=this._handleMemberList(o);return console.log(`${this._name}.${t} ok, groupID:${e.groupID} count:${r.length} nextOffset:${i}`),{code:0,data:{memberList:r,offset:i}}}catch(e){const n=new s.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,n),n}}))}_handleMemberList(e){return e.map((e=>{const{Member_Account:t,NickName:n="",Avatar:s="",Remark:o="",JoinTime:i=0,Marks:r=[]}=e;return{userID:t,nick:n,avatar:s,remark:o,joinTime:i,marks:r,isOnline:!0}}))}};var D=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}getGroupOnlineMemberCount(e){return n(this,void 0,void 0,(function*(){const{appStore:{groupStore:t},OuterConstant:n}=this._core,s=t.getGroup(e);return s?s.type===n.GRP_AVCHATROOM?this._getOnlineMemberCount(e):this._parentPlugin.groupAction.getGroupOnlineMemberCount(e):{code:0,data:{memberCount:0}}}))}_getOnlineMemberCount(e){return n(this,void 0,void 0,(function*(){const t="_getOnlineMemberCount",{utils:{isEmpty:n}}=this._core,s=O.getLocalOnlineMemberCount(e);if(n(s)||this._isExpired(e)){const{memberCount:n=0}=yield this._getOnlineMemberCountFromServer(e);return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${n} from server.`),{code:0,data:{memberCount:n}}}return console.log(`${this._name}.${t} ok, groupID:${e} memberCount:${s.memberCount} from local.`),{code:0,data:{memberCount:s.memberCount}}}))}_isExpired(e){const t=O.getLocalOnlineMemberCount(e),n=Date.now(),s=n-t.lastSyncTime>1e3*t.expireTime,o=n-t.latestUpdateTime>1e4,i=n-t.lastReqTime>3e3;return s&&o&&i}_getOnlineMemberCountFromServer(e){return n(this,void 0,void 0,(function*(){const t="_getOnlineMemberCountFromServer";try{const t=yield function(e,t){return n(this,void 0,void 0,(function*(){const n={GroupId:e};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:n})}))}(e,this._core),{OnlineMemberNum:s=0,ExpireTime:o=a}=t||{},i=Date.now(),r={lastSyncTime:i,latestUpdateTime:i,lastReqTime:i,memberCount:s,expireTime:o};return O.updateLocalOnlineMemberCount(e,r),{memberCount:s}}catch(e){const n=new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${t} fail:`,n),n}}))}};var E=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;const{helper:n}=e;n.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>t.getInstalledSubPlugins().length>0})}deleteGroupMember(e){return n(this,void 0,void 0,(function*(){const t="deleteGroupMember",{appStore:{groupStore:n},utils:{isUndefined:s},helper:i,OuterConstant:r}=this._core,{groupID:a}=e,l=n.getGroup(a);if(s(l))throw new i.ChatError({functionName:t,code:u});if(l.type===r.GRP_AVCHATROOM){if(i.checkBusinessCapabilityBits(o))return this._deleteGroupMember(e);throw new i.ChatError({functionName:t,code:g})}return this._parentPlugin.groupMember.deleteGroupMember(e)}))}_deleteGroupMember(e){return n(this,void 0,void 0,(function*(){const t="_deleteGroupMember",{appStore:{groupStore:s},helper:o,ssoLog:i}=this._core,{groupID:r,duration:a=0,userIDList:u}=e;if(0===a)throw new o.ChatError({functionName:t,code:l});try{yield function(e,t){return n(this,void 0,void 0,(function*(){const{groupID:n,userIDList:s,duration:o,reason:i}=e,r={GroupId:n,Members_Account:s,Duration:o,Description:i};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:r})}))}(e,this._core),i.debug(t,`${this._name}.${t} ok, groupID:${r}`);return{code:0,data:{group:s.getGroup(r),userIDList:u}}}catch(e){throw new o.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}}))}};var A=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){this._core=e;const{helper:t}=e;t.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return n(this,void 0,void 0,(function*(){const t="markGroupMemberList",{groupID:s,markType:o,enableMark:i,userIDList:r=[]}=e,a=this._generateRequestData(e);try{const e=yield function(e,t){return n(this,void 0,void 0,(function*(){const{groupID:n,operationType:s,memberList:o}=e,i={GroupId:n,CommandType:s,MemberList:o};return t.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:i})}))}(a,this._core),{MemberList:u=[]}=e||{},{successUserIDList:l,failureUserIDList:c}=this._handleResult(u,r);return{code:0,data:{successUserIDList:l,failureUserIDList:c},successLog:{message:`${this._name}.${t} ok, groupID:${s} markType:${o} enableMark:${i} success:${l.length} fail:${c.length}`}}}catch(e){throw new this._core.helper.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}}))}_generateRequestData(e){const{groupID:t,markType:n,enableMark:s,userIDList:o=[]}=e,i=!0===s?1:2,r=[...o];r.length>500&&console.warn(`${this._name}._generateRequestData, the length of userIDList cannot exceed 500`);return{groupID:t,operationType:i,memberList:r.map((e=>({Member_Account:e,Marks:[n]})))}}_handleResult(e,t){const n=[],s=[];return e.length===t.length?(n.push(...t),{successUserIDList:n,failureUserIDList:s}):(t.forEach((t=>{e.find((e=>e.Member_Account===t))?n.push(t):s.push(t)})),{successUserIDList:n,failureUserIDList:s})}};var L=new class{init(e,t){e.ssoLog.debug("AVChatRoomAction.init"),R.init(e,t),y.init(e,t),P.init(e,t),G.init(e,t),D.init(e,t),E.init(e,t),A.init(e)}};var T=new class{constructor(){this._name="LiveHandler"}init(e){this._core=e;const{helper:t,ssoLog:n}=e;t.registerExperimentalAPI("startMessageLongPolling",this),t.registerExperimentalAPI("stopMessageLongPolling",this),n.debug("LiveHandler.init")}startMessageLongPolling(e){const{common:t,utils:{isEmpty:n},OuterConstant:s,ssoLog:o}=this._core,{groupID:i,longPollingKey:r,longPollingSequence:a=1}=e;if(n(r))return o.warn("startMessageLongPolling",`${this._name}.startMessageLongPolling longPollingKey is empty.`),Promise.resolve({});O.hasPollingInstance(i)&&this.stopMessageLongPolling({groupID:i});const u=O.getJoinedLiveList(),l=t.isUnlimitedAVChatRoom();!l&&u.length>0&&this.stopMessageLongPolling({groupID:u[0].groupID}),o.debug("startMessageLongPolling",`${this._name}.startMessageLongPolling isUnlimited:${l} groupID:${i} longPollingKey:${r} longPollingSequence:${a}`);const c={groupID:i,type:s.GRP_LIVE};return O.updateLocalLiveGroup(i,c),this._getLiveHistoryMessages({groupID:i,longPollingKey:r,startSequence:a}),O.startMessageLongPolling({group:c,longPollingKey:r,startSequence:a})}stopMessageLongPolling(e){const{groupID:t}=e;return O.reset(t),this._core.ssoLog.debug("stopMessageLongPolling",`${this._name}.stopMessageLongPolling ok, groupID:${t}`),Promise.resolve({groupID:t})}_getLiveHistoryMessages(e){return n(this,void 0,void 0,(function*(){const{ssoLog:t}=this._core,{groupID:s}=e;try{const o=yield function(e,t){return n(this,void 0,void 0,(function*(){const{groupID:n,longPollingKey:s,startSequence:o}=e,i={GroupId:n,LongPollingKey:s,PullPreSeq:o};return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:i})}))}(e,this._core),{RspMsgList:i=[]}=o||{};t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages ok, groupID:${s} count:${i.length}`),i.length>0&&O.handleLiveHistoryMessages(s,i)}catch(e){t.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages failed, groupID:${s} info:${e.message}`)}}))}};return new class{constructor(){this.name="AVChatRoom"}install(t,n){this._core=t,e.init(t),O.init(t,n),L.init(t,n),T.init(t);const{notificationCenter:s,InnerEvent:o}=t,{InnerEventSubType:i}=s;s.subscribeInnerEvent(o.MESSAGE_PUSH,i.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),s.subscribeInnerEvent(o.LOGOUT,this._reset,this),s.subscribeInnerEvent(o.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){O.onAVChatRoomSystemNotification(e)}_reset(){O.reset()}_dispose(){this._reset();const{notificationCenter:e,InnerEvent:t}=this._core,{InnerEventSubType:n}=e;e.unSubscribeInnerEvent(t.MESSAGE_PUSH,n.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),e.unSubscribeInnerEvent(t.LOGOUT,this._reset,this),e.unSubscribeInnerEvent(t.DESTROY,this._dispose,this)}}}));
@@ -1 +1 @@
1
- function r(r,e){var t={};for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(null!=r&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(o=Object.getOwnPropertySymbols(r);s<o.length;s++)e.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(r,o[s])&&(t[o[s]]=r[o[s]])}return t}function e(r,e,t,o){return new(t||(t=Promise))(function(s,n){function a(r){try{u(o.next(r))}catch(r){n(r)}}function i(r){try{u(o.throw(r))}catch(r){n(r)}}function u(r){var e;r.done?s(r.value):(e=r.value,e instanceof t?e:new t(function(r){r(e)})).then(a,i)}u((o=o.apply(r,e||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const t=new class{init(r){this.core=r}};const o="message",s="user",n={OR:"or",AND:"and"},a=20,i=20,u=20,c={required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>!r||(!!(Array.isArray(r)&&r.length<=5)||"keywordList should be an array and length <= 5")},d={required:!1,rules:["string"],allowEmpty:!0,customValidator:r=>!r||(!![n.OR,n.AND].includes(r)||"keywordListMatchType should be OR or AND")},p={required:!1,rules:["number"],allowEmpty:!0,customValidator:r=>"number"==typeof r&&r>=1&&r<=100||"count must be a number between 1 and 100"},l={required:!1,rules:["string"],allowEmpty:!0},y={required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core;if(!Array.isArray(r))return"groupTypeList should be an array";const o=[e.GRP_PUBLIC,e.GRP_COMMUNITY,e.GRP_WORK,e.GRP_MEETING];let s=!1;for(let e=0;e<r.length;e++)if(-1===o.indexOf(r[e])){s=!0;break}return!s||"groupTypeList should be supported group type"}},h=r=>({required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"==typeof e&&e>=0||`${r} should be a number >= 0';`}),m={required:!1,rules:["string"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core;return!![e.GENDER_FEMALE,e.GENDER_MALE].includes(r)||"gender is invalid"}},C={searchCloudMessages:{keywordList:c,keywordListMatchType:d,cursor:l,senderUserIDList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>!!(Array.isArray(r)&&r.length<=5)||"senderUserIDList should be an array and length <= 5"},messageTypeList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core,o=[e.MSG_TEXT,e.MSG_IMAGE,e.MSG_AUDIO,e.MSG_FILE,e.MSG_VIDEO,e.MSG_LOCATION,e.MSG_CUSTOM,e.MSG_MERGER];let s=!1;for(let e=0;e<r.length;e++)if(-1===o.indexOf(r[e])){s=!0;break}return!s||"messageTypeList should be supported message type"}},conversationID:{required:!1,rules:["string"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core;return!(!(null==r?void 0:r.startsWith(e.CONV_C2C))&&!(null==r?void 0:r.startsWith(e.CONV_GROUP))&&r!==e.CONV_SYSTEM)||"conversationID is invalid"}},timePosition:h("timePosition"),timePeriod:h("timePeriod")},searchCloudUsers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,miniBirthday:h("miniBirthday"),maxBirthday:h("maxBirthday"),gender:m},searchCloudGroupMembers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y,groupIDList:{required:!1,rules:["array"],allowEmpty:!0}},searchCloudGroups:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y}},g={searchCloudMessages:!0,searchCloudUsers:!0,searchCloudGroupMembers:!0,searchCloudGroups:!0};var w=new class{constructor(){this.name="CloudSearch"}install(r){this._core=r,t.init(r),r.helper.registerApi({apiName:"searchCloudMessages",context:this}),r.helper.registerApi({apiName:"searchCloudUsers",context:this}),r.helper.registerApi({apiName:"searchCloudGroupMembers",context:this}),r.helper.registerApi({apiName:"searchCloudGroups",context:this}),r.helper.registerValidateConfig({auth:g,params:C})}searchCloudMessages(s){return e(this,void 0,void 0,function*(){try{const{OuterConstant:o,helper:n}=this._core,{conversationID:a,timePeriod:i,timePosition:u}=s,c=r(s,["conversationID","timePeriod","timePosition"]),d=Object.assign({count:100},c);a&&(a.startsWith(o.CONV_C2C)?d.account=a.replace(o.CONV_C2C,""):a.startsWith(o.CONV_GROUP)&&(d.groupID=a.replace(o.CONV_GROUP,""))),this._setTimeRangeParams(d,{timePeriod:i,timePosition:u});const p=yield function(r){return e(this,void 0,void 0,function*(){const{count:e,keywordList:o,keywordListMatchType:s,senderUserIDList:n,messageTypeList:a,endTime:i,startTime:u,cursor:c,account:d,groupID:p}=r,l={Count:e,KeywordList:o,MatchType:s,SendUserIDList:n,MsgTypeList:a,EndTime:i,StartTime:u,Cursor:c,PeerAccount:d,GroupID:p};return t.core.common.buildAndSendPacket({servcmd:"message_search.query",data:l})})}(d);if(!p)return{code:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",ConversationMsgs:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} res: totalCount:${h}`,w=C.map(r=>{const{MsgList:e,Count:t,GroupID:a,UserID:i}=r,u=a?`${o.CONV_GROUP}${a}`:`${o.CONV_C2C}${i}`;if(this._isSearchingAllConversations(s)&&t>1)return{conversationID:u,messageCount:t,messageList:[]};const c=e.map(r=>n.isEmpty(a)?function(r,e){const t=e.OuterConstant.CONV_C2C,o=e.message.messageHelper.parseServerPushMessage(r),s=e.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(r,this._core):function(r,e){const t=e.OuterConstant.CONV_GROUP,o=e.message.messageHelper.parseServerGroupMessage(r),s=e.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(r,this._core));return{conversationID:u,messageCount:t,messageList:c}});return{code:0,data:{searchResultList:w,cursor:m,totalCount:h},successLog:{message:g}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:o,functionName:"searchCloudMessages"})}})}searchCloudUsers(o){return e(this,void 0,void 0,function*(){var a;try{const{keywordListMatchType:s,count:u=i}=o,c=r(o,["keywordListMatchType","count"]),d=Object.assign({count:u,keywordListMatchType:s===n.AND?1:0},c);this._setBirthdayRangeParams(d,o);const p=yield function(r){return e(this,void 0,void 0,function*(){const{count:e,keywordList:o,keywordListMatchType:s,miniBirthday:n,maxBirthday:a,cursor:i,gender:u}=r,c={Count:e,Keywords:o,KeywordMatchType:s,Cursor:i,UserBirthStart:n,UserBirthEnd:a,Gender:u};return t.core.common.buildAndSendPacket({servcmd:"user_search.query",data:c})})}(d);if(!p)return{error:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",Users:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${h}`,w=[];for(let r=0,e=C.length;r<e;r++){const{UserID:e,ProfileItems:t}=C[r];if(e===this._core.OuterConstant.USER_NOT_FOUND||""===e)continue;const o=t.map(r=>({tag:r.Tag,value:r.StrValue})),s=null===(a=this._core.user.userProfile)||void 0===a?void 0:a.createProfile(e,o);w.push(s)}return{code:0,data:{searchResultList:w,cursor:m,totalCount:h},successLog:{message:g}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:s,functionName:"searchCloudUsers"})}})}searchCloudGroupMembers(o){return e(this,void 0,void 0,function*(){try{const{count:s=u,keywordListMatchType:a}=o,i=r(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:a===n.AND?1:0},i),d=yield function(r){return e(this,void 0,void 0,function*(){const{count:e,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a,groupIDList:i}=r,u={Count:e,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n,GroupIdList:i};return t.core.common.buildAndSendPacket({servcmd:"group_member_search.query",data:u})})}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,GroupMembers:y=[],Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`,g=new Map;return y.forEach(r=>{const{GroupID:e,GroupName:t,GroupType:o,GroupFaceUrl:s,GroupMemberUserName:n,GroupMemberUserID:a,GroupMemberNameCard:i,GroupMemberAvatar:u=""}=r,c={groupID:e,name:t,type:o,avatar:s},d={userID:a,nick:n,nameCard:i,avatar:u};if(g.has(e)){const r=g.get(e);r.memberList.push(d),g.set(e,r)}else g.set(e,{groupInfo:c,memberList:[d]})}),{code:0,data:{searchResultList:[...g.values()],cursor:h,totalCount:m},successLog:{message:C}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:s,functionName:"searchCloudGroupMembers"})}})}searchCloudGroups(o){return e(this,void 0,void 0,function*(){try{const{count:s=a,keywordListMatchType:i}=o,u=r(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:i===n.AND?1:0},u),d=yield function(r){return e(this,void 0,void 0,function*(){const{count:e,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a}=r,i={Count:e,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n};return t.core.common.buildAndSendPacket({servcmd:"group_search.query",data:i})})}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,Groups:y,Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`;return{code:0,data:{searchResultList:(null==y?void 0:y.map(r=>function(r){const{GroupFaceUrl:e,GroupID:t,GroupIntroduction:o,GroupMemberNum:s,GroupName:n,GroupOwnerTinyID:a,GroupOwnerUserID:i,GroupOwnerUserName:u,GroupType:c,GroupAddOption:d,GroupInviteOption:p}=r;return{avatar:e,groupID:t,introduction:o,memberCount:s,name:n,ownerTinyID:a,ownerID:i,ownerNick:u,type:c,joinOption:d,inviteOption:p}}(r)))||[],cursor:h,totalCount:m},successLog:{message:C}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:s,functionName:"searchCloudGroups"})}})}_setTimeRangeParams(r,{timePeriod:e,timePosition:t}){e&&e>0&&(r.startTime=t&&t>0?t-e:this._core.helper.timeManager.getServerTimeSeconds()-e),r.startTime&&r.startTime<0&&(r.startTime=void 0),t&&t>0&&(r.endTime=t)}_handleError({errorCode:r,errorMessage:e,searchType:t}){const{helper:s}=this._core;let n=r;60020===r?n="SearchUnable":t!==o&&27003===r?n="SearchParamsError":t!==o&&60018===r&&(n="SearchOverLimit");throw new s.ChatError({code:n,message:e})}_isSearchingAllConversations(r){return this._core.helper.isEmpty(r.conversationID)}_setBirthdayRangeParams(r,e){const{miniBirthday:t,maxBirthday:o}=e;void 0!==t&&(r.miniBirthday=t,void 0===o&&(r.maxBirthday=4294967295)),void 0!==o&&(r.maxBirthday=o)}};export{w as default};
1
+ function r(r,e){var t={};for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(null!=r&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(o=Object.getOwnPropertySymbols(r);s<o.length;s++)e.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(r,o[s])&&(t[o[s]]=r[o[s]])}return t}function e(r,e,t,o){return new(t||(t=Promise))((function(s,n){function a(r){try{u(o.next(r))}catch(r){n(r)}}function i(r){try{u(o.throw(r))}catch(r){n(r)}}function u(r){var e;r.done?s(r.value):(e=r.value,e instanceof t?e:new t((function(r){r(e)}))).then(a,i)}u((o=o.apply(r,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const t=new class{init(r){this.core=r}};const o="message",s="user",n={OR:"or",AND:"and"},a=20,i=20,u=20,c={required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>!r||(!!(Array.isArray(r)&&r.length<=5)||"keywordList should be an array and length <= 5")},d={required:!1,rules:["string"],allowEmpty:!0,customValidator:r=>!r||(!![n.OR,n.AND].includes(r)||"keywordListMatchType should be OR or AND")},p={required:!1,rules:["number"],allowEmpty:!0,customValidator:r=>"number"==typeof r&&r>=1&&r<=100||"count must be a number between 1 and 100"},l={required:!1,rules:["string"],allowEmpty:!0},y={required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core;if(!Array.isArray(r))return"groupTypeList should be an array";const o=[e.GRP_PUBLIC,e.GRP_COMMUNITY,e.GRP_WORK,e.GRP_MEETING];let s=!1;for(let e=0;e<r.length;e++)if(-1===o.indexOf(r[e])){s=!0;break}return!s||"groupTypeList should be supported group type"}},h=r=>({required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"==typeof e&&e>=0||`${r} should be a number >= 0';`}),m={required:!1,rules:["string"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core;return!![e.GENDER_FEMALE,e.GENDER_MALE].includes(r)||"gender is invalid"}},C={searchCloudMessages:{keywordList:c,keywordListMatchType:d,cursor:l,senderUserIDList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>!!(Array.isArray(r)&&r.length<=5)||"senderUserIDList should be an array and length <= 5"},messageTypeList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core,o=[e.MSG_TEXT,e.MSG_IMAGE,e.MSG_AUDIO,e.MSG_FILE,e.MSG_VIDEO,e.MSG_LOCATION,e.MSG_CUSTOM,e.MSG_MERGER];let s=!1;for(let e=0;e<r.length;e++)if(-1===o.indexOf(r[e])){s=!0;break}return!s||"messageTypeList should be supported message type"}},conversationID:{required:!1,rules:["string"],allowEmpty:!0,customValidator:r=>{const{OuterConstant:e}=t.core;return!(!(null==r?void 0:r.startsWith(e.CONV_C2C))&&!(null==r?void 0:r.startsWith(e.CONV_GROUP))&&r!==e.CONV_SYSTEM)||"conversationID is invalid"}},timePosition:h("timePosition"),timePeriod:h("timePeriod")},searchCloudUsers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,miniBirthday:h("miniBirthday"),maxBirthday:h("maxBirthday"),gender:m},searchCloudGroupMembers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y,groupIDList:{required:!1,rules:["array"],allowEmpty:!0}},searchCloudGroups:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y}},g={searchCloudMessages:!0,searchCloudUsers:!0,searchCloudGroupMembers:!0,searchCloudGroups:!0};var w=new class{constructor(){this.name="CloudSearch"}install(r){this._core=r,t.init(r),r.helper.registerApi({apiName:"searchCloudMessages",context:this}),r.helper.registerApi({apiName:"searchCloudUsers",context:this}),r.helper.registerApi({apiName:"searchCloudGroupMembers",context:this}),r.helper.registerApi({apiName:"searchCloudGroups",context:this}),r.helper.registerValidateConfig({auth:g,params:C})}searchCloudMessages(s){return e(this,void 0,void 0,(function*(){try{const{OuterConstant:o,helper:n}=this._core,{conversationID:a,timePeriod:i,timePosition:u}=s,c=r(s,["conversationID","timePeriod","timePosition"]),d=Object.assign({count:100},c);a&&(a.startsWith(o.CONV_C2C)?d.account=a.replace(o.CONV_C2C,""):a.startsWith(o.CONV_GROUP)&&(d.groupID=a.replace(o.CONV_GROUP,""))),this._setTimeRangeParams(d,{timePeriod:i,timePosition:u});const p=yield function(r){return e(this,void 0,void 0,(function*(){const{count:e,keywordList:o,keywordListMatchType:s,senderUserIDList:n,messageTypeList:a,endTime:i,startTime:u,cursor:c,account:d,groupID:p}=r,l={Count:e,KeywordList:o,MatchType:s,SendUserIDList:n,MsgTypeList:a,EndTime:i,StartTime:u,Cursor:c,PeerAccount:d,GroupID:p};return t.core.common.buildAndSendPacket({servcmd:"message_search.query",data:l})}))}(d);if(!p)return{code:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",ConversationMsgs:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} res: totalCount:${h}`,w=C.map((r=>{const{MsgList:e,Count:t,GroupID:a,UserID:i}=r,u=a?`${o.CONV_GROUP}${a}`:`${o.CONV_C2C}${i}`;if(this._isSearchingAllConversations(s)&&t>1)return{conversationID:u,messageCount:t,messageList:[]};const c=e.map((r=>n.isEmpty(a)?function(r,e){const t=e.OuterConstant.CONV_C2C,o=e.message.messageHelper.parseServerPushMessage(r),s=e.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(r,this._core):function(r,e){const t=e.OuterConstant.CONV_GROUP,o=e.message.messageHelper.parseServerGroupMessage(r),s=e.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(r,this._core)));return{conversationID:u,messageCount:t,messageList:c}}));return{code:0,data:{searchResultList:w,cursor:m,totalCount:h},successLog:{message:g}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:o,functionName:"searchCloudMessages"})}}))}searchCloudUsers(o){return e(this,void 0,void 0,(function*(){var a;try{const{keywordListMatchType:s,count:u=i}=o,c=r(o,["keywordListMatchType","count"]),d=Object.assign({count:u,keywordListMatchType:s===n.AND?1:0},c);this._setBirthdayRangeParams(d,o);const p=yield function(r){return e(this,void 0,void 0,(function*(){const{count:e,keywordList:o,keywordListMatchType:s,miniBirthday:n,maxBirthday:a,cursor:i,gender:u}=r,c={Count:e,Keywords:o,KeywordMatchType:s,Cursor:i,UserBirthStart:n,UserBirthEnd:a,Gender:u};return t.core.common.buildAndSendPacket({servcmd:"user_search.query",data:c})}))}(d);if(!p)return{error:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",Users:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${h}`,w=[];for(let r=0,e=C.length;r<e;r++){const{UserID:e,ProfileItems:t}=C[r];if(e===this._core.OuterConstant.USER_NOT_FOUND||""===e)continue;const o=t.map((r=>({tag:r.Tag,value:r.StrValue}))),s=null===(a=this._core.user.userProfile)||void 0===a?void 0:a.createProfile(e,o);w.push(s)}return{code:0,data:{searchResultList:w,cursor:m,totalCount:h},successLog:{message:g}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:s,functionName:"searchCloudUsers"})}}))}searchCloudGroupMembers(o){return e(this,void 0,void 0,(function*(){try{const{count:s=u,keywordListMatchType:a}=o,i=r(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:a===n.AND?1:0},i),d=yield function(r){return e(this,void 0,void 0,(function*(){const{count:e,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a,groupIDList:i}=r,u={Count:e,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n,GroupIdList:i};return t.core.common.buildAndSendPacket({servcmd:"group_member_search.query",data:u})}))}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,GroupMembers:y=[],Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`,g=new Map;return y.forEach((r=>{const{GroupID:e,GroupName:t,GroupType:o,GroupFaceUrl:s,GroupMemberUserName:n,GroupMemberUserID:a,GroupMemberNameCard:i,GroupMemberAvatar:u=""}=r,c={groupID:e,name:t,type:o,avatar:s},d={userID:a,nick:n,nameCard:i,avatar:u};if(g.has(e)){const r=g.get(e);r.memberList.push(d),g.set(e,r)}else g.set(e,{groupInfo:c,memberList:[d]})})),{code:0,data:{searchResultList:[...g.values()],cursor:h,totalCount:m},successLog:{message:C}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:s,functionName:"searchCloudGroupMembers"})}}))}searchCloudGroups(o){return e(this,void 0,void 0,(function*(){try{const{count:s=a,keywordListMatchType:i}=o,u=r(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:i===n.AND?1:0},u),d=yield function(r){return e(this,void 0,void 0,(function*(){const{count:e,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a}=r,i={Count:e,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n};return t.core.common.buildAndSendPacket({servcmd:"group_search.query",data:i})}))}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,Groups:y,Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`;return{code:0,data:{searchResultList:(null==y?void 0:y.map((r=>function(r){const{GroupFaceUrl:e,GroupID:t,GroupIntroduction:o,GroupMemberNum:s,GroupName:n,GroupOwnerTinyID:a,GroupOwnerUserID:i,GroupOwnerUserName:u,GroupType:c,GroupAddOption:d,GroupInviteOption:p}=r;return{avatar:e,groupID:t,introduction:o,memberCount:s,name:n,ownerTinyID:a,ownerID:i,ownerNick:u,type:c,joinOption:d,inviteOption:p}}(r))))||[],cursor:h,totalCount:m},successLog:{message:C}}}catch(r){const{errorCode:e,errorInfo:t}=r||{};this._handleError({errorCode:e,errorInfo:t,searchType:s,functionName:"searchCloudGroups"})}}))}_setTimeRangeParams(r,{timePeriod:e,timePosition:t}){e&&e>0&&(r.startTime=t&&t>0?t-e:this._core.helper.timeManager.getServerTimeSeconds()-e),r.startTime&&r.startTime<0&&(r.startTime=void 0),t&&t>0&&(r.endTime=t)}_handleError({errorCode:r,errorMessage:e,searchType:t}){const{helper:s}=this._core;let n=r;60020===r?n="SearchUnable":t!==o&&27003===r?n="SearchParamsError":t!==o&&60018===r&&(n="SearchOverLimit");throw new s.ChatError({code:n,message:e})}_isSearchingAllConversations(r){return this._core.helper.isEmpty(r.conversationID)}_setBirthdayRangeParams(r,e){const{miniBirthday:t,maxBirthday:o}=e;void 0!==t&&(r.miniBirthday=t,void 0===o&&(r.maxBirthday=4294967295)),void 0!==o&&(r.maxBirthday=o)}};export{w as default};
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self)["TencentCloudChatCloud-search"]=r()}(this,function(){"use strict";function e(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(o=Object.getOwnPropertySymbols(e);s<o.length;s++)r.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(e,o[s])&&(t[o[s]]=e[o[s]])}return t}function r(e,r,t,o){return new(t||(t=Promise))(function(s,n){function a(e){try{u(o.next(e))}catch(e){n(e)}}function i(e){try{u(o.throw(e))}catch(e){n(e)}}function u(e){var r;e.done?s(e.value):(r=e.value,r instanceof t?r:new t(function(e){e(r)})).then(a,i)}u((o=o.apply(e,r||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const t=new class{init(e){this.core=e}};const o="message",s="user",n={OR:"or",AND:"and"},a=20,i=20,u=20,c={required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>!e||(!!(Array.isArray(e)&&e.length<=5)||"keywordList should be an array and length <= 5")},d={required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>!e||(!![n.OR,n.AND].includes(e)||"keywordListMatchType should be OR or AND")},p={required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"==typeof e&&e>=1&&e<=100||"count must be a number between 1 and 100"},l={required:!1,rules:["string"],allowEmpty:!0},y={required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core;if(!Array.isArray(e))return"groupTypeList should be an array";const o=[r.GRP_PUBLIC,r.GRP_COMMUNITY,r.GRP_WORK,r.GRP_MEETING];let s=!1;for(let r=0;r<e.length;r++)if(-1===o.indexOf(e[r])){s=!0;break}return!s||"groupTypeList should be supported group type"}},h=e=>({required:!1,rules:["number"],allowEmpty:!0,customValidator:r=>"number"==typeof r&&r>=0||`${e} should be a number >= 0';`}),m={required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core;return!![r.GENDER_FEMALE,r.GENDER_MALE].includes(e)||"gender is invalid"}},C={searchCloudMessages:{keywordList:c,keywordListMatchType:d,cursor:l,senderUserIDList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>!!(Array.isArray(e)&&e.length<=5)||"senderUserIDList should be an array and length <= 5"},messageTypeList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core,o=[r.MSG_TEXT,r.MSG_IMAGE,r.MSG_AUDIO,r.MSG_FILE,r.MSG_VIDEO,r.MSG_LOCATION,r.MSG_CUSTOM,r.MSG_MERGER];let s=!1;for(let r=0;r<e.length;r++)if(-1===o.indexOf(e[r])){s=!0;break}return!s||"messageTypeList should be supported message type"}},conversationID:{required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core;return!(!(null==e?void 0:e.startsWith(r.CONV_C2C))&&!(null==e?void 0:e.startsWith(r.CONV_GROUP))&&e!==r.CONV_SYSTEM)||"conversationID is invalid"}},timePosition:h("timePosition"),timePeriod:h("timePeriod")},searchCloudUsers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,miniBirthday:h("miniBirthday"),maxBirthday:h("maxBirthday"),gender:m},searchCloudGroupMembers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y,groupIDList:{required:!1,rules:["array"],allowEmpty:!0}},searchCloudGroups:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y}},g={searchCloudMessages:!0,searchCloudUsers:!0,searchCloudGroupMembers:!0,searchCloudGroups:!0};return new class{constructor(){this.name="CloudSearch"}install(e){this._core=e,t.init(e),e.helper.registerApi({apiName:"searchCloudMessages",context:this}),e.helper.registerApi({apiName:"searchCloudUsers",context:this}),e.helper.registerApi({apiName:"searchCloudGroupMembers",context:this}),e.helper.registerApi({apiName:"searchCloudGroups",context:this}),e.helper.registerValidateConfig({auth:g,params:C})}searchCloudMessages(s){return r(this,void 0,void 0,function*(){try{const{OuterConstant:o,helper:n}=this._core,{conversationID:a,timePeriod:i,timePosition:u}=s,c=e(s,["conversationID","timePeriod","timePosition"]),d=Object.assign({count:100},c);a&&(a.startsWith(o.CONV_C2C)?d.account=a.replace(o.CONV_C2C,""):a.startsWith(o.CONV_GROUP)&&(d.groupID=a.replace(o.CONV_GROUP,""))),this._setTimeRangeParams(d,{timePeriod:i,timePosition:u});const p=yield function(e){return r(this,void 0,void 0,function*(){const{count:r,keywordList:o,keywordListMatchType:s,senderUserIDList:n,messageTypeList:a,endTime:i,startTime:u,cursor:c,account:d,groupID:p}=e,l={Count:r,KeywordList:o,MatchType:s,SendUserIDList:n,MsgTypeList:a,EndTime:i,StartTime:u,Cursor:c,PeerAccount:d,GroupID:p};return t.core.common.buildAndSendPacket({servcmd:"message_search.query",data:l})})}(d);if(!p)return{code:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",ConversationMsgs:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} res: totalCount:${h}`,f=C.map(e=>{const{MsgList:r,Count:t,GroupID:a,UserID:i}=e,u=a?`${o.CONV_GROUP}${a}`:`${o.CONV_C2C}${i}`;if(this._isSearchingAllConversations(s)&&t>1)return{conversationID:u,messageCount:t,messageList:[]};const c=r.map(e=>n.isEmpty(a)?function(e,r){const t=r.OuterConstant.CONV_C2C,o=r.message.messageHelper.parseServerPushMessage(e),s=r.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(e,this._core):function(e,r){const t=r.OuterConstant.CONV_GROUP,o=r.message.messageHelper.parseServerGroupMessage(e),s=r.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(e,this._core));return{conversationID:u,messageCount:t,messageList:c}});return{code:0,data:{searchResultList:f,cursor:m,totalCount:h},successLog:{message:g}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:o,functionName:"searchCloudMessages"})}})}searchCloudUsers(o){return r(this,void 0,void 0,function*(){var a;try{const{keywordListMatchType:s,count:u=i}=o,c=e(o,["keywordListMatchType","count"]),d=Object.assign({count:u,keywordListMatchType:s===n.AND?1:0},c);this._setBirthdayRangeParams(d,o);const p=yield function(e){return r(this,void 0,void 0,function*(){const{count:r,keywordList:o,keywordListMatchType:s,miniBirthday:n,maxBirthday:a,cursor:i,gender:u}=e,c={Count:r,Keywords:o,KeywordMatchType:s,Cursor:i,UserBirthStart:n,UserBirthEnd:a,Gender:u};return t.core.common.buildAndSendPacket({servcmd:"user_search.query",data:c})})}(d);if(!p)return{error:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",Users:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${h}`,f=[];for(let e=0,r=C.length;e<r;e++){const{UserID:r,ProfileItems:t}=C[e];if(r===this._core.OuterConstant.USER_NOT_FOUND||""===r)continue;const o=t.map(e=>({tag:e.Tag,value:e.StrValue})),s=null===(a=this._core.user.userProfile)||void 0===a?void 0:a.createProfile(r,o);f.push(s)}return{code:0,data:{searchResultList:f,cursor:m,totalCount:h},successLog:{message:g}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:s,functionName:"searchCloudUsers"})}})}searchCloudGroupMembers(o){return r(this,void 0,void 0,function*(){try{const{count:s=u,keywordListMatchType:a}=o,i=e(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:a===n.AND?1:0},i),d=yield function(e){return r(this,void 0,void 0,function*(){const{count:r,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a,groupIDList:i}=e,u={Count:r,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n,GroupIdList:i};return t.core.common.buildAndSendPacket({servcmd:"group_member_search.query",data:u})})}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,GroupMembers:y=[],Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`,g=new Map;return y.forEach(e=>{const{GroupID:r,GroupName:t,GroupType:o,GroupFaceUrl:s,GroupMemberUserName:n,GroupMemberUserID:a,GroupMemberNameCard:i,GroupMemberAvatar:u=""}=e,c={groupID:r,name:t,type:o,avatar:s},d={userID:a,nick:n,nameCard:i,avatar:u};if(g.has(r)){const e=g.get(r);e.memberList.push(d),g.set(r,e)}else g.set(r,{groupInfo:c,memberList:[d]})}),{code:0,data:{searchResultList:[...g.values()],cursor:h,totalCount:m},successLog:{message:C}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:s,functionName:"searchCloudGroupMembers"})}})}searchCloudGroups(o){return r(this,void 0,void 0,function*(){try{const{count:s=a,keywordListMatchType:i}=o,u=e(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:i===n.AND?1:0},u),d=yield function(e){return r(this,void 0,void 0,function*(){const{count:r,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a}=e,i={Count:r,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n};return t.core.common.buildAndSendPacket({servcmd:"group_search.query",data:i})})}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,Groups:y,Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`;return{code:0,data:{searchResultList:(null==y?void 0:y.map(e=>function(e){const{GroupFaceUrl:r,GroupID:t,GroupIntroduction:o,GroupMemberNum:s,GroupName:n,GroupOwnerTinyID:a,GroupOwnerUserID:i,GroupOwnerUserName:u,GroupType:c,GroupAddOption:d,GroupInviteOption:p}=e;return{avatar:r,groupID:t,introduction:o,memberCount:s,name:n,ownerTinyID:a,ownerID:i,ownerNick:u,type:c,joinOption:d,inviteOption:p}}(e)))||[],cursor:h,totalCount:m},successLog:{message:C}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:s,functionName:"searchCloudGroups"})}})}_setTimeRangeParams(e,{timePeriod:r,timePosition:t}){r&&r>0&&(e.startTime=t&&t>0?t-r:this._core.helper.timeManager.getServerTimeSeconds()-r),e.startTime&&e.startTime<0&&(e.startTime=void 0),t&&t>0&&(e.endTime=t)}_handleError({errorCode:e,errorMessage:r,searchType:t}){const{helper:s}=this._core;let n=e;60020===e?n="SearchUnable":t!==o&&27003===e?n="SearchParamsError":t!==o&&60018===e&&(n="SearchOverLimit");throw new s.ChatError({code:n,message:r})}_isSearchingAllConversations(e){return this._core.helper.isEmpty(e.conversationID)}_setBirthdayRangeParams(e,r){const{miniBirthday:t,maxBirthday:o}=r;void 0!==t&&(e.miniBirthday=t,void 0===o&&(e.maxBirthday=4294967295)),void 0!==o&&(e.maxBirthday=o)}}});
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self)["TencentCloudChatCloud-search"]=r()}(this,(function(){"use strict";function e(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(o=Object.getOwnPropertySymbols(e);s<o.length;s++)r.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(e,o[s])&&(t[o[s]]=e[o[s]])}return t}function r(e,r,t,o){return new(t||(t=Promise))((function(s,n){function a(e){try{u(o.next(e))}catch(e){n(e)}}function i(e){try{u(o.throw(e))}catch(e){n(e)}}function u(e){var r;e.done?s(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(a,i)}u((o=o.apply(e,r||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const t=new class{init(e){this.core=e}};const o="message",s="user",n={OR:"or",AND:"and"},a=20,i=20,u=20,c={required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>!e||(!!(Array.isArray(e)&&e.length<=5)||"keywordList should be an array and length <= 5")},d={required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>!e||(!![n.OR,n.AND].includes(e)||"keywordListMatchType should be OR or AND")},p={required:!1,rules:["number"],allowEmpty:!0,customValidator:e=>"number"==typeof e&&e>=1&&e<=100||"count must be a number between 1 and 100"},l={required:!1,rules:["string"],allowEmpty:!0},y={required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core;if(!Array.isArray(e))return"groupTypeList should be an array";const o=[r.GRP_PUBLIC,r.GRP_COMMUNITY,r.GRP_WORK,r.GRP_MEETING];let s=!1;for(let r=0;r<e.length;r++)if(-1===o.indexOf(e[r])){s=!0;break}return!s||"groupTypeList should be supported group type"}},h=e=>({required:!1,rules:["number"],allowEmpty:!0,customValidator:r=>"number"==typeof r&&r>=0||`${e} should be a number >= 0';`}),m={required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core;return!![r.GENDER_FEMALE,r.GENDER_MALE].includes(e)||"gender is invalid"}},C={searchCloudMessages:{keywordList:c,keywordListMatchType:d,cursor:l,senderUserIDList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>!!(Array.isArray(e)&&e.length<=5)||"senderUserIDList should be an array and length <= 5"},messageTypeList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core,o=[r.MSG_TEXT,r.MSG_IMAGE,r.MSG_AUDIO,r.MSG_FILE,r.MSG_VIDEO,r.MSG_LOCATION,r.MSG_CUSTOM,r.MSG_MERGER];let s=!1;for(let r=0;r<e.length;r++)if(-1===o.indexOf(e[r])){s=!0;break}return!s||"messageTypeList should be supported message type"}},conversationID:{required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>{const{OuterConstant:r}=t.core;return!(!(null==e?void 0:e.startsWith(r.CONV_C2C))&&!(null==e?void 0:e.startsWith(r.CONV_GROUP))&&e!==r.CONV_SYSTEM)||"conversationID is invalid"}},timePosition:h("timePosition"),timePeriod:h("timePeriod")},searchCloudUsers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,miniBirthday:h("miniBirthday"),maxBirthday:h("maxBirthday"),gender:m},searchCloudGroupMembers:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y,groupIDList:{required:!1,rules:["array"],allowEmpty:!0}},searchCloudGroups:{keywordList:c,keywordListMatchType:d,cursor:l,count:p,groupTypeList:y}},g={searchCloudMessages:!0,searchCloudUsers:!0,searchCloudGroupMembers:!0,searchCloudGroups:!0};return new class{constructor(){this.name="CloudSearch"}install(e){this._core=e,t.init(e),e.helper.registerApi({apiName:"searchCloudMessages",context:this}),e.helper.registerApi({apiName:"searchCloudUsers",context:this}),e.helper.registerApi({apiName:"searchCloudGroupMembers",context:this}),e.helper.registerApi({apiName:"searchCloudGroups",context:this}),e.helper.registerValidateConfig({auth:g,params:C})}searchCloudMessages(s){return r(this,void 0,void 0,(function*(){try{const{OuterConstant:o,helper:n}=this._core,{conversationID:a,timePeriod:i,timePosition:u}=s,c=e(s,["conversationID","timePeriod","timePosition"]),d=Object.assign({count:100},c);a&&(a.startsWith(o.CONV_C2C)?d.account=a.replace(o.CONV_C2C,""):a.startsWith(o.CONV_GROUP)&&(d.groupID=a.replace(o.CONV_GROUP,""))),this._setTimeRangeParams(d,{timePeriod:i,timePosition:u});const p=yield function(e){return r(this,void 0,void 0,(function*(){const{count:r,keywordList:o,keywordListMatchType:s,senderUserIDList:n,messageTypeList:a,endTime:i,startTime:u,cursor:c,account:d,groupID:p}=e,l={Count:r,KeywordList:o,MatchType:s,SendUserIDList:n,MsgTypeList:a,EndTime:i,StartTime:u,Cursor:c,PeerAccount:d,GroupID:p};return t.core.common.buildAndSendPacket({servcmd:"message_search.query",data:l})}))}(d);if(!p)return{code:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",ConversationMsgs:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} res: totalCount:${h}`,f=C.map((e=>{const{MsgList:r,Count:t,GroupID:a,UserID:i}=e,u=a?`${o.CONV_GROUP}${a}`:`${o.CONV_C2C}${i}`;if(this._isSearchingAllConversations(s)&&t>1)return{conversationID:u,messageCount:t,messageList:[]};const c=r.map((e=>n.isEmpty(a)?function(e,r){const t=r.OuterConstant.CONV_C2C,o=r.message.messageHelper.parseServerPushMessage(e),s=r.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(e,this._core):function(e,r){const t=r.OuterConstant.CONV_GROUP,o=r.message.messageHelper.parseServerGroupMessage(e),s=r.message.messageFactory.createMessage(Object.assign(Object.assign({},o),{conversationType:t,flow:"in"}));return s.setElement(o.elements),s}(e,this._core)));return{conversationID:u,messageCount:t,messageList:c}}));return{code:0,data:{searchResultList:f,cursor:m,totalCount:h},successLog:{message:g}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:o,functionName:"searchCloudMessages"})}}))}searchCloudUsers(o){return r(this,void 0,void 0,(function*(){var a;try{const{keywordListMatchType:s,count:u=i}=o,c=e(o,["keywordListMatchType","count"]),d=Object.assign({count:u,keywordListMatchType:s===n.AND?1:0},c);this._setBirthdayRangeParams(d,o);const p=yield function(e){return r(this,void 0,void 0,(function*(){const{count:r,keywordList:o,keywordListMatchType:s,miniBirthday:n,maxBirthday:a,cursor:i,gender:u}=e,c={Count:r,Keywords:o,KeywordMatchType:s,Cursor:i,UserBirthStart:n,UserBirthEnd:a,Gender:u};return t.core.common.buildAndSendPacket({servcmd:"user_search.query",data:c})}))}(d);if(!p)return{error:0,data:{}};const{ErrorCode:l,ErrorInfo:y,TotalCount:h,Cursor:m="",Users:C=[]}=p;if(0!==l)throw{errorCode:l,errorInfo:y};const g=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${h}`,f=[];for(let e=0,r=C.length;e<r;e++){const{UserID:r,ProfileItems:t}=C[e];if(r===this._core.OuterConstant.USER_NOT_FOUND||""===r)continue;const o=t.map((e=>({tag:e.Tag,value:e.StrValue}))),s=null===(a=this._core.user.userProfile)||void 0===a?void 0:a.createProfile(r,o);f.push(s)}return{code:0,data:{searchResultList:f,cursor:m,totalCount:h},successLog:{message:g}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:s,functionName:"searchCloudUsers"})}}))}searchCloudGroupMembers(o){return r(this,void 0,void 0,(function*(){try{const{count:s=u,keywordListMatchType:a}=o,i=e(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:a===n.AND?1:0},i),d=yield function(e){return r(this,void 0,void 0,(function*(){const{count:r,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a,groupIDList:i}=e,u={Count:r,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n,GroupIdList:i};return t.core.common.buildAndSendPacket({servcmd:"group_member_search.query",data:u})}))}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,GroupMembers:y=[],Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`,g=new Map;return y.forEach((e=>{const{GroupID:r,GroupName:t,GroupType:o,GroupFaceUrl:s,GroupMemberUserName:n,GroupMemberUserID:a,GroupMemberNameCard:i,GroupMemberAvatar:u=""}=e,c={groupID:r,name:t,type:o,avatar:s},d={userID:a,nick:n,nameCard:i,avatar:u};if(g.has(r)){const e=g.get(r);e.memberList.push(d),g.set(r,e)}else g.set(r,{groupInfo:c,memberList:[d]})})),{code:0,data:{searchResultList:[...g.values()],cursor:h,totalCount:m},successLog:{message:C}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:s,functionName:"searchCloudGroupMembers"})}}))}searchCloudGroups(o){return r(this,void 0,void 0,(function*(){try{const{count:s=a,keywordListMatchType:i}=o,u=e(o,["count","keywordListMatchType"]),c=Object.assign({count:s,keywordListMatchType:i===n.AND?1:0},u),d=yield function(e){return r(this,void 0,void 0,(function*(){const{count:r,keywordList:o,keywordListMatchType:s,groupTypeList:n,cursor:a}=e,i={Count:r,Keywords:o,KeywordMatchType:s,Cursor:a,GroupType:n};return t.core.common.buildAndSendPacket({servcmd:"group_search.query",data:i})}))}(c);if(!d)return{code:0,data:{}};const{ErrorCode:p,ErrorInfo:l,Groups:y,Cursor:h,TotalCount:m}=d;if(0!==p)throw{errorCode:p,errorInfo:l};const C=`keywordList:${o.keywordList} keywordListMatchType:${o.keywordListMatchType} cursor:${o.cursor} count:${o.count} res: totalCount:${m}`;return{code:0,data:{searchResultList:(null==y?void 0:y.map((e=>function(e){const{GroupFaceUrl:r,GroupID:t,GroupIntroduction:o,GroupMemberNum:s,GroupName:n,GroupOwnerTinyID:a,GroupOwnerUserID:i,GroupOwnerUserName:u,GroupType:c,GroupAddOption:d,GroupInviteOption:p}=e;return{avatar:r,groupID:t,introduction:o,memberCount:s,name:n,ownerTinyID:a,ownerID:i,ownerNick:u,type:c,joinOption:d,inviteOption:p}}(e))))||[],cursor:h,totalCount:m},successLog:{message:C}}}catch(e){const{errorCode:r,errorInfo:t}=e||{};this._handleError({errorCode:r,errorInfo:t,searchType:s,functionName:"searchCloudGroups"})}}))}_setTimeRangeParams(e,{timePeriod:r,timePosition:t}){r&&r>0&&(e.startTime=t&&t>0?t-r:this._core.helper.timeManager.getServerTimeSeconds()-r),e.startTime&&e.startTime<0&&(e.startTime=void 0),t&&t>0&&(e.endTime=t)}_handleError({errorCode:e,errorMessage:r,searchType:t}){const{helper:s}=this._core;let n=e;60020===e?n="SearchUnable":t!==o&&27003===e?n="SearchParamsError":t!==o&&60018===e&&(n="SearchOverLimit");throw new s.ChatError({code:n,message:r})}_isSearchingAllConversations(e){return this._core.helper.isEmpty(e.conversationID)}_setBirthdayRangeParams(e,r){const{miniBirthday:t,maxBirthday:o}=r;void 0!==t&&(e.miniBirthday=t,void 0===o&&(e.maxBirthday=4294967295)),void 0!==o&&(e.maxBirthday=o)}}}));
@@ -1 +1 @@
1
- var t=new class{constructor(){this._conversationGroupMap=new Map}init(t){this._core=t}getConversationGroupMap(){return this._conversationGroupMap}getConversationGroup(t){return this._conversationGroupMap.get(t)}setConversationGroup(t,o){this._conversationGroupMap.set(t,o)}};function o(t,o,e,n){return new(e||(e=Promise))(function(r,s){function a(t){try{c(n.next(t))}catch(t){s(t)}}function i(t){try{c(n.throw(t))}catch(t){s(t)}}function c(t){var o;t.done?r(t.value):(o=t.value,o instanceof e?o:new e(function(t){t(o)})).then(a,i)}c((n=n.apply(t,o||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const e=new class{init(t){this.core=t}},n="CONV_GROUP",r=2500,s=2503,a=1,i=2,c="NOT_STARTED",u="FETCHING",p="FINISHED",d="FAILED",v=0,l=1,C=1,h=2,m=3,f=1,I=2;function G(t){const{helper:o,constants:r}=e.core;if(!o.checkBusinessCapabilityBits(n))throw new o.ChatError({functionName:t,code:r.ERROR_CODE.NO_USE,replacement1:t})}function _(){const{notificationCenter:o,OuterEvent:n}=e.core;o.emitOuterEvent(n.CONVERSATION_GROUP_LIST_UPDATED,{name:n.CONVERSATION_GROUP_LIST_UPDATED,data:[...t.getConversationGroupMap().values()]})}function g(t){const{utils:{isUndefined:o},constants:{OuterConstant:n}}=e.core,{Type:r,To_Account:s,Peer_Account:c}=t;let u="";const p=t.ToGroupId||t.GroupId;return r===a?o(c)?o(s)||(u=`${n.CONV_C2C}${s}`):u=`${n.CONV_C2C}${c}`:r===i&&(u=`${n.CONV_GROUP}${p}`),u}function D(t){const o=[],{OuterConstant:n,common:{isC2CConv:r,isGroupConv:s}}=e.core,{conversationIDList:c,failureConversationIDList:u,additionalData:p={}}=t;return c.forEach(t=>{N(t,u),r(t)?o.push(Object.assign({ContactItem:{Type:a,To_Account:t.replace(n.CONV_C2C,"")}},p)):s(t)&&o.push(Object.assign({ContactItem:{Type:i,ToGroupId:t.replace(n.CONV_GROUP,"")}},p))}),o}function N(t,o){const{appStore:{conversationStore:n},common:{isC2CConv:a,isGroupConv:i}}=e.core;n.getConversation(t)?a(t)||i(t)||o.push({conversationID:t,code:s}):o.push({conversationID:t,code:r})}function L(t){const{utils:{isString:o}}=e.core,n=[];if(!o(t))return n;const r=t.length;if(0===r)return n;for(let o=r-1;o>=0;o--)"1"===t[o]&&n.push(Math.pow(2,r-o-1));return n}function E(t){null==t||t.forEach((o,n)=>{const{appStore:r}=e.core,{conversationID:s,data:a}=o,i=n===t.length-1;r.conversationStore.updateConversation(s,a,{emit:i})})}function O(t){const{conversationInfoList:o,fromAccount:n}=t,r={From_Account:n,MarkItem:o};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.mark_contact",data:r})}function S(t){const{fromAccount:o,groupName:n,conversationInfoList:r}=t,s={From_Account:o,UpdateType:1,UpdateGroup:{UpdateGroupType:I,OldGroupName:n,ContactUpdateItem:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:s})}var R=new class{init(t){const{helper:{registerApi:o}}=t;this._core=t,o({apiName:"createConversationGroup",context:this})}createConversationGroup(n){return o(this,void 0,void 0,function*(){const{utils:{isPlainObject:o,isArray:r},appStore:s}=this._core;G("createConversationGroup");const{groupName:a,conversationIDList:i}=n,c=[],u=this._generateConversationInfo(i,c);if(c.length===i.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:c}};try{const n=yield function(t){const{common:{buildAndSendPacket:o,getCurrentUserID:n}}=e.core,{item:r,groupName:s}=t;return o({servcmd:"recentcontact.create_contact_group",data:{From_Account:n(),GroupContactItem:[{GroupName:s,ContactItem:r}]}})}({groupName:a,item:u});if(n){const{GroupResultItem:e=[]}=n,{GroupItem:i,ResultItem:u}=(null==e?void 0:e[0])||{},p=[];if(o(i)){const{GroupName:o,GroupId:e}=i;t.setConversationGroup(e,o),_()}if(r(u)){const t=[];u.forEach(o=>{const{ContactItem:e,ResultCode:n,ResultInfo:r}=o,i=g(e);if(0===n){const o=s.conversationStore.getConversation(i);if(o&&!o.conversationGroupList.includes(a)){const e=o.conversationGroupList.slice();e.push(a),t.push({conversationID:i,data:{conversationGroupList:e}})}}else c.push({conversationID:i,code:n,message:r})}),t.length>0&&(E(t),_())}return{code:0,data:{successConversationIDList:p,failureConversationIDList:c}}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"createConversationGroup",code:o,message:e})}})}_generateConversationInfo(t,o,e={}){const n=[],{OuterConstant:r,common:{isC2CConv:s,isGroupConv:c}}=this._core;return t.forEach(t=>{N(t,o),s(t)?n.push(Object.assign({Type:a,To_Account:t.replace(r.CONV_C2C,"")},e)):c(t)&&n.push(Object.assign({Type:i,ToGroupId:t.replace(r.CONV_GROUP,"")},e))}),n}};var A=new class{constructor(){this._fetchConversationGroupStatus=c}init(t){const{helper:{registerApi:o,registerWorkflowStep:e},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:r}}=t;this._core=t,o({apiName:"getConversationGroupList",context:this}),e(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_LIST_SYNC,this._syncConversationGroupList,this),e(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_UPDATE,this._updateConversation,this)}getConversationGroupList(){return o(this,void 0,void 0,function*(){return G("getConversationGroupList"),this._fetchConversationGroupStatus===d&&(yield this._fetchConversationGroupList(0)),{code:0,data:[...t.getConversationGroupMap().values()]}})}_syncConversationGroupList(){return o(this,void 0,void 0,function*(){return yield this._fetchConversationGroupList(0)})}_fetchConversationGroupList(n){return o(this,arguments,void 0,function*(o,n=[]){const{common:{getCurrentUserID:r},utils:{isArray:s}}=this._core;this._fetchConversationGroupStatus=u;try{const a=r(),i=yield function(t){const{fromAccount:o,startIndex:n}=t,r={From_Account:o,StartIndex:n};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.get_contact_group",data:r})}({fromAccount:a,startIndex:o});if(i){const{CompleteFlag:o,ContactItem:e=[],NextStartIndex:r=0,GroupItem:a=[]}=i;if(s(a)&&a.forEach(o=>{const{GroupName:e,GroupId:n}=o;t.setConversationGroup(n,e)}),n.push(...e),o===v)return this._fetchConversationGroupList(r);if(o===l)return this._fetchConversationGroupStatus=p,n}}catch(t){this._fetchConversationGroupStatus=d,console.error(t)}})}_updateConversation(t){var o;const{constants:{WORKFLOW_STEP:e}}=this._core,n=(null===(o=null==t?void 0:t.result)||void 0===o?void 0:o[e.CONVERSATION_GROUP_LIST_SYNC])||[];E(this._generateConversationUpdateFields(n)),_()}_generateConversationUpdateFields(o){const{utils:{isArray:e},appStore:n}=this._core,r=[];if(e(o)){let s;o.forEach(o=>{const a=[],{StandardMark:i,CustomMark:c="",ContactGroupId:u}=o;e(u)&&u.forEach(o=>{t.getConversationGroupMap().has(o)&&a.push(t.getConversationGroup(o))});const p=g(o);s=n.conversationStore.getConversation(p),s&&r.push({conversationID:p,data:{markList:L(i),customData:c,conversationGroupList:[...a]}})})}return r}reset(){this._fetchConversationGroupStatus=c}dispose(){this.reset()}};var T=new class{init(t){const{notificationCenter:o,helper:{registerApi:e},InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{CONVERSATION_MARK_UPDATED:r,CONVERSATION_GROUP_ADD:s,CONVERSATION_GROUP_DELETED:a,CONVERSATION_GROUP_UPDATED:i}}=t;this._core=t,e({apiName:"renameConversationGroup",context:this}),e({apiName:"deleteConversationGroup",context:this}),e({apiName:"markConversation",context:this}),e({apiName:"setConversationCustomData",context:this}),e({apiName:"deleteConversationsFromGroup",context:this}),e({apiName:"addConversationsToGroup",context:this}),o.subscribeInnerEvent(n,s,this._handleConversationGroupAdd,this),o.subscribeInnerEvent(n,a,this._handleConversationGroupDeleted,this),o.subscribeInnerEvent(n,i,this._handleConversationGroupUpdated,this),o.subscribeInnerEvent(n,r,this._handleConversationMarkUpdated,this)}renameConversationGroup(n){return o(this,void 0,void 0,function*(){G("renameConversationGroup");const{common:{getCurrentUserID:o}}=this._core,{oldName:r,newName:s}=n,a=`oldName:${r} newName:${s}`;try{const n=yield function(t){const{fromAccount:o,oldName:n,newName:r}=t,s={From_Account:o,UpdateType:1,UpdateGroup:{UpdateGroupType:f,OldGroupName:n,NewGroupName:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:s})}({fromAccount:o(),oldName:r,newName:s});if(n){const{UpdateGroupResult:o}=n,{GroupId:e}=o;t.setConversationGroup(e,s),_(),this._updateLocalConversationGroupName({oldName:r,newName:s})}return{successLog:{message:a}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"renameConversationGroup",code:o,message:e,moreMessage:a})}})}deleteConversationGroup(n){return o(this,void 0,void 0,function*(){G("deleteConversationGroup");const{common:{getCurrentUserID:o}}=this._core;try{const r=yield function(t){const{fromAccount:o,groupName:n}=t,r={From_Account:o,GroupName:[n]};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.del_contact_group",data:r})}({fromAccount:o(),groupName:n});if(r){const{GroupItem:o}=r;let e=!1;return null==o||o.forEach(o=>{const{GroupId:n}=o,r=t.getConversationGroupMap();r.has(n)&&(r.delete(n),e=!0)}),e&&_(),this._deleteLocalConversationGroupName([n]),{successLog:{message:`groupName:${n}`}}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationGroup",code:o,message:e,moreMessage:`groupName:${n}`})}})}markConversation(t){return o(this,void 0,void 0,function*(){G("markConversation");const{utils:{isNumber:o},common:{getCurrentUserID:e},appStore:n}=this._core,{conversationIDList:r,markType:s,enableMark:a}=t,i=this._getFlagBit(s),c=[],u=[];let p,d;!0===a&&o(i)?p=[i]:d=[i];const v=D({conversationIDList:r,failureConversationIDList:c,additionalData:{SetMark:p,ClearMark:d,OptType:C}});if(c.length===r.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:c}};try{const t=yield O({conversationInfoList:v,fromAccount:e()});if(t){const{ResultItem:o}=t,e=[];o.forEach(t=>{const{ContactItem:o,ResultCode:r,ResultInfo:i}=t,p=g(o);if(0===r){u.push(p);const t=n.conversationStore.getConversation(p);if(t){const o=t.markList.indexOf(s),n=!1===a&&-1!==o;if(!0===a&&-1===o)e.push({conversationID:p,data:{markList:[...t.markList,s]}});else if(n){const n=t.markList.slice();n.splice(o,1),e.push({conversationID:p,data:{markList:n}})}}}else c.push({conversationID:p,code:r,message:i})}),E(e)}return{code:0,data:{successConversationIDList:u,failureConversationIDList:c}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"markConversation",code:o,message:e})}})}setConversationCustomData(t){return o(this,void 0,void 0,function*(){G("setConversationCustomData");const{common:{getCurrentUserID:o},appStore:e}=this._core,{conversationIDList:n,customData:r}=t,s=[],a=[],i=D({conversationIDList:n,failureConversationIDList:s,additionalData:{CustomMark:r,OptType:h}});if(s.length===n.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{const t=yield O({fromAccount:o(),conversationInfoList:i});if(t){const{ResultItem:o}=t,n=[];null==o||o.forEach(t=>{const{ContactItem:o,ResultCode:i,ResultInfo:c}=t;if(0===i){const t=g(o);a.push(t);const s=e.conversationStore.getConversation(t);s&&s.customData!==r&&n.push({conversationID:t,data:{customData:r}})}else s.push({conversationID:conversationID,code:i,message:c})}),E(n)}return{code:0,data:{successConversationIDList:a,failureConversationIDList:s}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"setConversationCustomData",code:o,message:e})}})}deleteConversationsFromGroup(t){return o(this,void 0,void 0,function*(){G("deleteConversationsFromGroup");const{common:{getCurrentUserID:o},appStore:e}=this._core,{conversationIDList:n,groupName:r}=t,s=[],a=[],i=D({conversationIDList:n,failureConversationIDList:s,additionalData:{ContactOptType:2}});if(s.length===n.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{const t=yield S({fromAccount:o(),groupName:r,conversationInfoList:i});if(t){const o=[],{UpdateGroupResult:{ContactResultItem:n}}=t;null==n||n.forEach(t=>{const n=g(t.ContactItem);if(0===t.ResultCode){const t=e.conversationStore.getConversation(n);if(t){const e=t.conversationGroupList.indexOf(r);if(-1!==e){const r=t.conversationGroupList.slice();r.splice(e,1),a.push(n),o.push({conversationID:n,data:{conversationGroupList:r}})}}}else s.push({conversationID:n,code:t.ResultCode,message:t.ResultInfo})}),o.length>0&&(_(),E(o))}return{code:0,data:{successConversationIDList:a,failureConversationIDList:s}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:o,message:e})}})}addConversationsToGroup(t){return o(this,void 0,void 0,function*(){G("deleteConversationsFromGroup");const{common:{getCurrentUserID:o},appStore:e}=this._core,{conversationIDList:n,groupName:r}=t,s=[],a=[],i=D({conversationIDList:n,failureConversationIDList:s,additionalData:{ContactOptType:1}});if(s.length===n.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{const t=yield S({fromAccount:o(),groupName:r,conversationInfoList:i});if(t){const o=[],{UpdateGroupResult:{ContactResultItem:n}}=t;null==n||n.forEach(t=>{const n=g(t.ContactItem);if(0===t.ResultCode){const t=e.conversationStore.getConversation(n);if(t){if(-1===t.conversationGroupList.indexOf(r)){const e=t.conversationGroupList.slice();e.push(r),a.push(n),o.push({conversationID:n,data:{conversationGroupList:e}})}}}else s.push({conversationID:n,code:t.ResultCode,message:t.ResultInfo})}),o.length>0&&(_(),E(o))}return{code:0,data:{successConversationIDList:a,failureConversationIDList:s}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:o,message:e})}})}_updateLocalConversationGroupName(t){const{appStore:o}=this._core,{oldName:e,newName:n}=t;let r=[];const s=[];let a=-1;Array.from(o.conversationStore.getConversationMap().values()).forEach(t=>{if(r=t.conversationGroupList,a=r.indexOf(e),-1!==a){const o=r.slice();o.splice(a,1,n),s.push({conversationID:t.conversationID,data:{conversationGroupList:o}})}}),E(s)}_deleteLocalConversationGroupName(t){const{utils:{isEmpty:o},appStore:e}=this._core;if(o(t))return;const n=[];Array.from(e.conversationStore.getConversationMap().values()).forEach(o=>{const{conversationID:e,conversationGroupList:r}=o,s=r.filter(o=>!t.includes(o));s.length<r.length&&n.push({conversationID:e,data:{conversationGroupList:s}})}),E(n)}_getFlagBit(t){const o=t.toString(2),e=o.length;for(let t=e-1;t>=0;t--)if("1"===o[t])return e-t-1}_handleConversationGroupAdd(o){var e;const{utils:{isArray:n},appStore:r}=this._core;null===(e=null==o?void 0:o.RecentContactMod)||void 0===e||e.forEach(o=>{const{RecentContactCreateContactGroup:{MsgContactGroupContactItem:e}}=o;let s=!1;null==e||e.forEach(o=>{const{MsgGroupItem:e,MsgRecentContactItem:a}=o,{GroupId:i,GroupName:c}=e,u=[];t.getConversationGroup(i)!==c&&(t.setConversationGroup(i,c),s=!0),n(a)&&a.forEach(t=>{var o;const e=g(t),n=r.conversationStore.getConversation(e);if(n&&!(null===(o=n.conversationGroupList)||void 0===o?void 0:o.includes(c))){const t=n.conversationGroupList.slice();t.push(c),u.push({conversationID:e,data:{conversationGroupList:t}})}}),s&&_(),E(u)})})}_handleConversationGroupDeleted(o){var e;const{utils:{isArray:n}}=this._core;null===(e=null==o?void 0:o.RecentContactMod)||void 0===e||e.forEach(o=>{const{MsgGroupItem:e}=(null==o?void 0:o.RecentContactDelContactGroup)||{};if(n(e)){let o=!1;const n=[];e.forEach(e=>{const{GroupId:r,GroupName:s}=e,a=t.getConversationGroupMap();a.has(r)&&(a.delete(r),o=!0,n.push(s))}),o&&_(),n.length>0&&this._deleteLocalConversationGroupName(n)}})}_handleConversationGroupUpdated(t){var o;null===(o=t.RecentContactMod)||void 0===o||o.forEach(t=>{const{RecentContactUpdateContactGroup:{MsgUpdateGroup:{GroupId:o,GroupName:e,OldGroupName:n,RecentContactUpdateGroupItem:r,UpdateGroupType:s}}}=t;1===s?this._handleGroupNameUpdated({groupID:o,newName:e,oldName:n}):2===s&&this._handleGroupAddOrDeleteFromConversation({groupInfoList:r,groupName:n})})}_handleConversationMarkUpdated(t){var o;const{appStore:e}=this._core;null===(o=null==t?void 0:t.RecentContactMod)||void 0===o||o.forEach(t=>{const{RecentContactMarkContact:{RecentContactMarkContactItem:o}}=t,n=[];null==o||o.forEach(t=>{const{RecentContactItem:o,CustomMark:r,StandardMark:s,OptType:a}=t,i=g(o),c=e.conversationStore.getConversation(i);c&&(a===C?this._updateStandMark({conversation:c,standardMark:s,updateConversationList:n}):a===h?this._updateCustomMark({conversation:c,customMark:r,updateConversationList:n}):a===m&&(this._updateStandMark({conversation:c,standardMark:s,updateConversationList:n}),this._updateCustomMark({conversation:c,customMark:r,updateConversationList:n})))}),E(n)})}_updateStandMark(t){const{conversation:o,standardMark:e,updateConversationList:n}=t,r=L(e);(function(t,o){if(t===o)return!0;if(!t||!o)return!1;if(t.length!==o.length)return!1;t.sort(),o.sort();for(let e=0,n=t.length;e<n;e++)if(t[e]!==o[e])return!1;return!0})(o.markList,r)||n.push({conversationID:o.conversationID,data:{markList:r}})}_updateCustomMark(t){const{conversation:o,customMark:e,updateConversationList:n}=t;o.customData!==e&&void 0!==e&&(o.customData=e,n.push({conversationID:o.conversationID,data:{customData:e}}))}_handleGroupNameUpdated(o){const{groupID:e,oldName:n,newName:r}=o;t.getConversationGroup(e)!==r&&(t.setConversationGroup(e,r),_(),this._updateLocalConversationGroupName({oldName:n,newName:r}))}_handleGroupAddOrDeleteFromConversation({groupInfoList:t,groupName:o}){const{appStore:e}=this._core,n=[];t.forEach(t=>{const{RecentContactItem:r,ContactOptType:s}=t,a=g(r),i=e.conversationStore.getConversation(a),c=i.conversationGroupList.indexOf(o);if(i){const t=i.conversationGroupList.slice();1===s&&-1===c?(t.push(o),n.push({conversationID:a,data:{conversationGroupList:t}})):2===s&&-1!==c&&(t.splice(c,1),n.push({conversationID:a,data:{conversationGroupList:t}}))}}),E(n)}dispose(){const{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:o},InnerEventSubType:{CONVERSATION_MARK_UPDATED:e,CONVERSATION_GROUP_ADD:n,CONVERSATION_GROUP_DELETED:r,CONVERSATION_GROUP_UPDATED:s}}=this._core;t.unSubscribeInnerEvent(o,n,this._handleConversationGroupAdd,this),t.unSubscribeInnerEvent(o,r,this._handleConversationGroupDeleted,this),t.unSubscribeInnerEvent(o,s,this._handleConversationGroupUpdated,this),t.unSubscribeInnerEvent(o,e,this._handleConversationMarkUpdated,this)}};const y={required:!0,rules:["string"],allowEmpty:!1},U={required:!0,rules:["array"],allowEmpty:!1},M={createConversationGroup:{groupName:y,conversationIDList:{required:!0,rules:["array"],allowEmpty:!1}},renameConversationGroup:{oldName:y,newName:Object.assign(Object.assign({},y),{customValidator:t=>!(t.length>32)||"newName length cannot longer than 32"})},deleteConversationGroup:[{required:!0,rules:["string"],allowEmpty:!1}],addConversationsToGroup:{conversationIDList:U,groupName:y},deleteConversationsFromGroup:{conversationIDList:U,groupName:y},markConversation:{conversationIDList:U,markType:{required:!0,rules:["number"],allowEmpty:!1,customValidator:t=>t<=0?"markType must be greater than 0":!(t>=Math.pow(2,64))||"markType must be less than 2^64"},enableMark:{required:!0,rules:["boolean"],allowEmpty:!1}},setConversationCustomData:{conversationIDList:U,customData:{required:!1,rules:["string"],allowEmpty:!0,customValidator:t=>"string"!=typeof t?"customData must be string":!(t.length>256)||"customData length cannot longer than 256"}}},k={createConversationGroup:!0,deleteConversationGroup:!0,renameConversationGroup:!0,getConversationGroupList:!0,addConversationsToGroup:!0,deleteConversationsFromGroup:!0,markConversation:!0,setConversationCustomData:!0};var b=new class{constructor(){this.name="ConversationGroup"}install(o){this._core=o,e.init(o),t.init(o),R.init(o),A.init(o),T.init(o),o.helper.registerValidateConfig({auth:k,params:M}),o.notificationCenter.subscribeInnerEvent(o.InnerEvent.LOGOUT,this.reset,this),o.notificationCenter.subscribeInnerEvent(o.InnerEvent.DESTROY,this.dispose,this)}dispose(){const{notificationCenter:t,InnerEvent:o}=this._core;t.unSubscribeInnerEvent(o.LOGOUT,this.reset,this),t.unSubscribeInnerEvent(o.DESTROY,this.dispose,this),T.dispose(),A.dispose()}reset(){A.reset()}};export{b as default};
1
+ var t=new class{constructor(){this._conversationGroupMap=new Map}init(t){this._core=t}getConversationGroupMap(){return this._conversationGroupMap}getConversationGroup(t){return this._conversationGroupMap.get(t)}setConversationGroup(t,o){this._conversationGroupMap.set(t,o)}};function o(t,o,e,n){return new(e||(e=Promise))((function(r,s){function a(t){try{c(n.next(t))}catch(t){s(t)}}function i(t){try{c(n.throw(t))}catch(t){s(t)}}function c(t){var o;t.done?r(t.value):(o=t.value,o instanceof e?o:new e((function(t){t(o)}))).then(a,i)}c((n=n.apply(t,o||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const e=new class{init(t){this.core=t}},n="CONV_GROUP",r=2500,s=2503,a=1,i=2,c="NOT_STARTED",u="FETCHING",p="FINISHED",d="FAILED",v=0,l=1,C=1,h=2,m=3,f=1,I=2;function G(t){const{helper:o,constants:r}=e.core;if(!o.checkBusinessCapabilityBits(n))throw new o.ChatError({functionName:t,code:r.ERROR_CODE.NO_USE,replacement1:t})}function _(){const{notificationCenter:o,OuterEvent:n}=e.core;o.emitOuterEvent(n.CONVERSATION_GROUP_LIST_UPDATED,{name:n.CONVERSATION_GROUP_LIST_UPDATED,data:[...t.getConversationGroupMap().values()]})}function g(t){const{utils:{isUndefined:o},constants:{OuterConstant:n}}=e.core,{Type:r,To_Account:s,Peer_Account:c}=t;let u="";const p=t.ToGroupId||t.GroupId;return r===a?o(c)?o(s)||(u=`${n.CONV_C2C}${s}`):u=`${n.CONV_C2C}${c}`:r===i&&(u=`${n.CONV_GROUP}${p}`),u}function D(t){const o=[],{OuterConstant:n,common:{isC2CConv:r,isGroupConv:s}}=e.core,{conversationIDList:c,failureConversationIDList:u,additionalData:p={}}=t;return c.forEach((t=>{N(t,u),r(t)?o.push(Object.assign({ContactItem:{Type:a,To_Account:t.replace(n.CONV_C2C,"")}},p)):s(t)&&o.push(Object.assign({ContactItem:{Type:i,ToGroupId:t.replace(n.CONV_GROUP,"")}},p))})),o}function N(t,o){const{appStore:{conversationStore:n},common:{isC2CConv:a,isGroupConv:i}}=e.core;n.getConversation(t)?a(t)||i(t)||o.push({conversationID:t,code:s}):o.push({conversationID:t,code:r})}function L(t){const{utils:{isString:o}}=e.core,n=[];if(!o(t))return n;const r=t.length;if(0===r)return n;for(let o=r-1;o>=0;o--)"1"===t[o]&&n.push(Math.pow(2,r-o-1));return n}function E(t){null==t||t.forEach(((o,n)=>{const{appStore:r}=e.core,{conversationID:s,data:a}=o,i=n===t.length-1;r.conversationStore.updateConversation(s,a,{emit:i})}))}function O(t){const{conversationInfoList:o,fromAccount:n}=t,r={From_Account:n,MarkItem:o};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.mark_contact",data:r})}function S(t){const{fromAccount:o,groupName:n,conversationInfoList:r}=t,s={From_Account:o,UpdateType:1,UpdateGroup:{UpdateGroupType:I,OldGroupName:n,ContactUpdateItem:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:s})}var R=new class{init(t){const{helper:{registerApi:o}}=t;this._core=t,o({apiName:"createConversationGroup",context:this})}createConversationGroup(n){return o(this,void 0,void 0,(function*(){const{utils:{isPlainObject:o,isArray:r},appStore:s}=this._core;G("createConversationGroup");const{groupName:a,conversationIDList:i}=n,c=[],u=this._generateConversationInfo(i,c);if(c.length===i.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:c}};try{const n=yield function(t){const{common:{buildAndSendPacket:o,getCurrentUserID:n}}=e.core,{item:r,groupName:s}=t;return o({servcmd:"recentcontact.create_contact_group",data:{From_Account:n(),GroupContactItem:[{GroupName:s,ContactItem:r}]}})}({groupName:a,item:u});if(n){const{GroupResultItem:e=[]}=n,{GroupItem:i,ResultItem:u}=(null==e?void 0:e[0])||{},p=[];if(o(i)){const{GroupName:o,GroupId:e}=i;t.setConversationGroup(e,o),_()}if(r(u)){const t=[];u.forEach((o=>{const{ContactItem:e,ResultCode:n,ResultInfo:r}=o,i=g(e);if(0===n){const o=s.conversationStore.getConversation(i);if(o&&!o.conversationGroupList.includes(a)){const e=o.conversationGroupList.slice();e.push(a),t.push({conversationID:i,data:{conversationGroupList:e}})}}else c.push({conversationID:i,code:n,message:r})})),t.length>0&&(E(t),_())}return{code:0,data:{successConversationIDList:p,failureConversationIDList:c}}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"createConversationGroup",code:o,message:e})}}))}_generateConversationInfo(t,o,e={}){const n=[],{OuterConstant:r,common:{isC2CConv:s,isGroupConv:c}}=this._core;return t.forEach((t=>{N(t,o),s(t)?n.push(Object.assign({Type:a,To_Account:t.replace(r.CONV_C2C,"")},e)):c(t)&&n.push(Object.assign({Type:i,ToGroupId:t.replace(r.CONV_GROUP,"")},e))})),n}};var A=new class{constructor(){this._fetchConversationGroupStatus=c}init(t){const{helper:{registerApi:o,registerWorkflowStep:e},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:r}}=t;this._core=t,o({apiName:"getConversationGroupList",context:this}),e(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_LIST_SYNC,this._syncConversationGroupList,this),e(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_UPDATE,this._updateConversation,this)}getConversationGroupList(){return o(this,void 0,void 0,(function*(){return G("getConversationGroupList"),this._fetchConversationGroupStatus===d&&(yield this._fetchConversationGroupList(0)),{code:0,data:[...t.getConversationGroupMap().values()]}}))}_syncConversationGroupList(){return o(this,void 0,void 0,(function*(){return yield this._fetchConversationGroupList(0)}))}_fetchConversationGroupList(n){return o(this,arguments,void 0,(function*(o,n=[]){const{common:{getCurrentUserID:r},utils:{isArray:s}}=this._core;this._fetchConversationGroupStatus=u;try{const a=r(),i=yield function(t){const{fromAccount:o,startIndex:n}=t,r={From_Account:o,StartIndex:n};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.get_contact_group",data:r})}({fromAccount:a,startIndex:o});if(i){const{CompleteFlag:o,ContactItem:e=[],NextStartIndex:r=0,GroupItem:a=[]}=i;if(s(a)&&a.forEach((o=>{const{GroupName:e,GroupId:n}=o;t.setConversationGroup(n,e)})),n.push(...e),o===v)return this._fetchConversationGroupList(r);if(o===l)return this._fetchConversationGroupStatus=p,n}}catch(t){this._fetchConversationGroupStatus=d,console.error(t)}}))}_updateConversation(t){var o;const{constants:{WORKFLOW_STEP:e}}=this._core,n=(null===(o=null==t?void 0:t.result)||void 0===o?void 0:o[e.CONVERSATION_GROUP_LIST_SYNC])||[];E(this._generateConversationUpdateFields(n)),_()}_generateConversationUpdateFields(o){const{utils:{isArray:e},appStore:n}=this._core,r=[];if(e(o)){let s;o.forEach((o=>{const a=[],{StandardMark:i,CustomMark:c="",ContactGroupId:u}=o;e(u)&&u.forEach((o=>{t.getConversationGroupMap().has(o)&&a.push(t.getConversationGroup(o))}));const p=g(o);s=n.conversationStore.getConversation(p),s&&r.push({conversationID:p,data:{markList:L(i),customData:c,conversationGroupList:[...a]}})}))}return r}reset(){this._fetchConversationGroupStatus=c}dispose(){this.reset()}};var T=new class{init(t){const{notificationCenter:o,helper:{registerApi:e},InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{CONVERSATION_MARK_UPDATED:r,CONVERSATION_GROUP_ADD:s,CONVERSATION_GROUP_DELETED:a,CONVERSATION_GROUP_UPDATED:i}}=t;this._core=t,e({apiName:"renameConversationGroup",context:this}),e({apiName:"deleteConversationGroup",context:this}),e({apiName:"markConversation",context:this}),e({apiName:"setConversationCustomData",context:this}),e({apiName:"deleteConversationsFromGroup",context:this}),e({apiName:"addConversationsToGroup",context:this}),o.subscribeInnerEvent(n,s,this._handleConversationGroupAdd,this),o.subscribeInnerEvent(n,a,this._handleConversationGroupDeleted,this),o.subscribeInnerEvent(n,i,this._handleConversationGroupUpdated,this),o.subscribeInnerEvent(n,r,this._handleConversationMarkUpdated,this)}renameConversationGroup(n){return o(this,void 0,void 0,(function*(){G("renameConversationGroup");const{common:{getCurrentUserID:o}}=this._core,{oldName:r,newName:s}=n,a=`oldName:${r} newName:${s}`;try{const n=yield function(t){const{fromAccount:o,oldName:n,newName:r}=t,s={From_Account:o,UpdateType:1,UpdateGroup:{UpdateGroupType:f,OldGroupName:n,NewGroupName:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:s})}({fromAccount:o(),oldName:r,newName:s});if(n){const{UpdateGroupResult:o}=n,{GroupId:e}=o;t.setConversationGroup(e,s),_(),this._updateLocalConversationGroupName({oldName:r,newName:s})}return{successLog:{message:a}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"renameConversationGroup",code:o,message:e,moreMessage:a})}}))}deleteConversationGroup(n){return o(this,void 0,void 0,(function*(){G("deleteConversationGroup");const{common:{getCurrentUserID:o}}=this._core;try{const r=yield function(t){const{fromAccount:o,groupName:n}=t,r={From_Account:o,GroupName:[n]};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.del_contact_group",data:r})}({fromAccount:o(),groupName:n});if(r){const{GroupItem:o}=r;let e=!1;return null==o||o.forEach((o=>{const{GroupId:n}=o,r=t.getConversationGroupMap();r.has(n)&&(r.delete(n),e=!0)})),e&&_(),this._deleteLocalConversationGroupName([n]),{successLog:{message:`groupName:${n}`}}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationGroup",code:o,message:e,moreMessage:`groupName:${n}`})}}))}markConversation(t){return o(this,void 0,void 0,(function*(){G("markConversation");const{utils:{isNumber:o},common:{getCurrentUserID:e},appStore:n}=this._core,{conversationIDList:r,markType:s,enableMark:a}=t,i=this._getFlagBit(s),c=[],u=[];let p,d;!0===a&&o(i)?p=[i]:d=[i];const v=D({conversationIDList:r,failureConversationIDList:c,additionalData:{SetMark:p,ClearMark:d,OptType:C}});if(c.length===r.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:c}};try{const t=yield O({conversationInfoList:v,fromAccount:e()});if(t){const{ResultItem:o}=t,e=[];o.forEach((t=>{const{ContactItem:o,ResultCode:r,ResultInfo:i}=t,p=g(o);if(0===r){u.push(p);const t=n.conversationStore.getConversation(p);if(t){const o=t.markList.indexOf(s),n=!1===a&&-1!==o;if(!0===a&&-1===o)e.push({conversationID:p,data:{markList:[...t.markList,s]}});else if(n){const n=t.markList.slice();n.splice(o,1),e.push({conversationID:p,data:{markList:n}})}}}else c.push({conversationID:p,code:r,message:i})})),E(e)}return{code:0,data:{successConversationIDList:u,failureConversationIDList:c}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"markConversation",code:o,message:e})}}))}setConversationCustomData(t){return o(this,void 0,void 0,(function*(){G("setConversationCustomData");const{common:{getCurrentUserID:o},appStore:e}=this._core,{conversationIDList:n,customData:r}=t,s=[],a=[],i=D({conversationIDList:n,failureConversationIDList:s,additionalData:{CustomMark:r,OptType:h}});if(s.length===n.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{const t=yield O({fromAccount:o(),conversationInfoList:i});if(t){const{ResultItem:o}=t,n=[];null==o||o.forEach((t=>{const{ContactItem:o,ResultCode:i,ResultInfo:c}=t;if(0===i){const t=g(o);a.push(t);const s=e.conversationStore.getConversation(t);s&&s.customData!==r&&n.push({conversationID:t,data:{customData:r}})}else s.push({conversationID:conversationID,code:i,message:c})})),E(n)}return{code:0,data:{successConversationIDList:a,failureConversationIDList:s}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"setConversationCustomData",code:o,message:e})}}))}deleteConversationsFromGroup(t){return o(this,void 0,void 0,(function*(){G("deleteConversationsFromGroup");const{common:{getCurrentUserID:o},appStore:e}=this._core,{conversationIDList:n,groupName:r}=t,s=[],a=[],i=D({conversationIDList:n,failureConversationIDList:s,additionalData:{ContactOptType:2}});if(s.length===n.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{const t=yield S({fromAccount:o(),groupName:r,conversationInfoList:i});if(t){const o=[],{UpdateGroupResult:{ContactResultItem:n}}=t;null==n||n.forEach((t=>{const n=g(t.ContactItem);if(0===t.ResultCode){const t=e.conversationStore.getConversation(n);if(t){const e=t.conversationGroupList.indexOf(r);if(-1!==e){const r=t.conversationGroupList.slice();r.splice(e,1),a.push(n),o.push({conversationID:n,data:{conversationGroupList:r}})}}}else s.push({conversationID:n,code:t.ResultCode,message:t.ResultInfo})})),o.length>0&&(_(),E(o))}return{code:0,data:{successConversationIDList:a,failureConversationIDList:s}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:o,message:e})}}))}addConversationsToGroup(t){return o(this,void 0,void 0,(function*(){G("deleteConversationsFromGroup");const{common:{getCurrentUserID:o},appStore:e}=this._core,{conversationIDList:n,groupName:r}=t,s=[],a=[],i=D({conversationIDList:n,failureConversationIDList:s,additionalData:{ContactOptType:1}});if(s.length===n.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{const t=yield S({fromAccount:o(),groupName:r,conversationInfoList:i});if(t){const o=[],{UpdateGroupResult:{ContactResultItem:n}}=t;null==n||n.forEach((t=>{const n=g(t.ContactItem);if(0===t.ResultCode){const t=e.conversationStore.getConversation(n);if(t){if(-1===t.conversationGroupList.indexOf(r)){const e=t.conversationGroupList.slice();e.push(r),a.push(n),o.push({conversationID:n,data:{conversationGroupList:e}})}}}else s.push({conversationID:n,code:t.ResultCode,message:t.ResultInfo})})),o.length>0&&(_(),E(o))}return{code:0,data:{successConversationIDList:a,failureConversationIDList:s}}}catch(t){const{errorCode:o,errorInfo:e}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:o,message:e})}}))}_updateLocalConversationGroupName(t){const{appStore:o}=this._core,{oldName:e,newName:n}=t;let r=[];const s=[];let a=-1;Array.from(o.conversationStore.getConversationMap().values()).forEach((t=>{if(r=t.conversationGroupList,a=r.indexOf(e),-1!==a){const o=r.slice();o.splice(a,1,n),s.push({conversationID:t.conversationID,data:{conversationGroupList:o}})}})),E(s)}_deleteLocalConversationGroupName(t){const{utils:{isEmpty:o},appStore:e}=this._core;if(o(t))return;const n=[];Array.from(e.conversationStore.getConversationMap().values()).forEach((o=>{const{conversationID:e,conversationGroupList:r}=o,s=r.filter((o=>!t.includes(o)));s.length<r.length&&n.push({conversationID:e,data:{conversationGroupList:s}})})),E(n)}_getFlagBit(t){const o=t.toString(2),e=o.length;for(let t=e-1;t>=0;t--)if("1"===o[t])return e-t-1}_handleConversationGroupAdd(o){var e;const{utils:{isArray:n},appStore:r}=this._core;null===(e=null==o?void 0:o.RecentContactMod)||void 0===e||e.forEach((o=>{const{RecentContactCreateContactGroup:{MsgContactGroupContactItem:e}}=o;let s=!1;null==e||e.forEach((o=>{const{MsgGroupItem:e,MsgRecentContactItem:a}=o,{GroupId:i,GroupName:c}=e,u=[];t.getConversationGroup(i)!==c&&(t.setConversationGroup(i,c),s=!0),n(a)&&a.forEach((t=>{var o;const e=g(t),n=r.conversationStore.getConversation(e);if(n&&!(null===(o=n.conversationGroupList)||void 0===o?void 0:o.includes(c))){const t=n.conversationGroupList.slice();t.push(c),u.push({conversationID:e,data:{conversationGroupList:t}})}})),s&&_(),E(u)}))}))}_handleConversationGroupDeleted(o){var e;const{utils:{isArray:n}}=this._core;null===(e=null==o?void 0:o.RecentContactMod)||void 0===e||e.forEach((o=>{const{MsgGroupItem:e}=(null==o?void 0:o.RecentContactDelContactGroup)||{};if(n(e)){let o=!1;const n=[];e.forEach((e=>{const{GroupId:r,GroupName:s}=e,a=t.getConversationGroupMap();a.has(r)&&(a.delete(r),o=!0,n.push(s))})),o&&_(),n.length>0&&this._deleteLocalConversationGroupName(n)}}))}_handleConversationGroupUpdated(t){var o;null===(o=t.RecentContactMod)||void 0===o||o.forEach((t=>{const{RecentContactUpdateContactGroup:{MsgUpdateGroup:{GroupId:o,GroupName:e,OldGroupName:n,RecentContactUpdateGroupItem:r,UpdateGroupType:s}}}=t;1===s?this._handleGroupNameUpdated({groupID:o,newName:e,oldName:n}):2===s&&this._handleGroupAddOrDeleteFromConversation({groupInfoList:r,groupName:n})}))}_handleConversationMarkUpdated(t){var o;const{appStore:e}=this._core;null===(o=null==t?void 0:t.RecentContactMod)||void 0===o||o.forEach((t=>{const{RecentContactMarkContact:{RecentContactMarkContactItem:o}}=t,n=[];null==o||o.forEach((t=>{const{RecentContactItem:o,CustomMark:r,StandardMark:s,OptType:a}=t,i=g(o),c=e.conversationStore.getConversation(i);c&&(a===C?this._updateStandMark({conversation:c,standardMark:s,updateConversationList:n}):a===h?this._updateCustomMark({conversation:c,customMark:r,updateConversationList:n}):a===m&&(this._updateStandMark({conversation:c,standardMark:s,updateConversationList:n}),this._updateCustomMark({conversation:c,customMark:r,updateConversationList:n})))})),E(n)}))}_updateStandMark(t){const{conversation:o,standardMark:e,updateConversationList:n}=t,r=L(e);(function(t,o){if(t===o)return!0;if(!t||!o)return!1;if(t.length!==o.length)return!1;t.sort(),o.sort();for(let e=0,n=t.length;e<n;e++)if(t[e]!==o[e])return!1;return!0})(o.markList,r)||n.push({conversationID:o.conversationID,data:{markList:r}})}_updateCustomMark(t){const{conversation:o,customMark:e,updateConversationList:n}=t;o.customData!==e&&void 0!==e&&(o.customData=e,n.push({conversationID:o.conversationID,data:{customData:e}}))}_handleGroupNameUpdated(o){const{groupID:e,oldName:n,newName:r}=o;t.getConversationGroup(e)!==r&&(t.setConversationGroup(e,r),_(),this._updateLocalConversationGroupName({oldName:n,newName:r}))}_handleGroupAddOrDeleteFromConversation({groupInfoList:t,groupName:o}){const{appStore:e}=this._core,n=[];t.forEach((t=>{const{RecentContactItem:r,ContactOptType:s}=t,a=g(r),i=e.conversationStore.getConversation(a),c=i.conversationGroupList.indexOf(o);if(i){const t=i.conversationGroupList.slice();1===s&&-1===c?(t.push(o),n.push({conversationID:a,data:{conversationGroupList:t}})):2===s&&-1!==c&&(t.splice(c,1),n.push({conversationID:a,data:{conversationGroupList:t}}))}})),E(n)}dispose(){const{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:o},InnerEventSubType:{CONVERSATION_MARK_UPDATED:e,CONVERSATION_GROUP_ADD:n,CONVERSATION_GROUP_DELETED:r,CONVERSATION_GROUP_UPDATED:s}}=this._core;t.unSubscribeInnerEvent(o,n,this._handleConversationGroupAdd,this),t.unSubscribeInnerEvent(o,r,this._handleConversationGroupDeleted,this),t.unSubscribeInnerEvent(o,s,this._handleConversationGroupUpdated,this),t.unSubscribeInnerEvent(o,e,this._handleConversationMarkUpdated,this)}};const y={required:!0,rules:["string"],allowEmpty:!1},U={required:!0,rules:["array"],allowEmpty:!1},M={createConversationGroup:{groupName:y,conversationIDList:{required:!0,rules:["array"],allowEmpty:!1}},renameConversationGroup:{oldName:y,newName:Object.assign(Object.assign({},y),{customValidator:t=>!(t.length>32)||"newName length cannot longer than 32"})},deleteConversationGroup:[{required:!0,rules:["string"],allowEmpty:!1}],addConversationsToGroup:{conversationIDList:U,groupName:y},deleteConversationsFromGroup:{conversationIDList:U,groupName:y},markConversation:{conversationIDList:U,markType:{required:!0,rules:["number"],allowEmpty:!1,customValidator:t=>t<=0?"markType must be greater than 0":!(t>=Math.pow(2,64))||"markType must be less than 2^64"},enableMark:{required:!0,rules:["boolean"],allowEmpty:!1}},setConversationCustomData:{conversationIDList:U,customData:{required:!1,rules:["string"],allowEmpty:!0,customValidator:t=>"string"!=typeof t?"customData must be string":!(t.length>256)||"customData length cannot longer than 256"}}},k={createConversationGroup:!0,deleteConversationGroup:!0,renameConversationGroup:!0,getConversationGroupList:!0,addConversationsToGroup:!0,deleteConversationsFromGroup:!0,markConversation:!0,setConversationCustomData:!0};var b=new class{constructor(){this.name="ConversationGroup"}install(o){this._core=o,e.init(o),t.init(o),R.init(o),A.init(o),T.init(o),o.helper.registerValidateConfig({auth:k,params:M}),o.notificationCenter.subscribeInnerEvent(o.InnerEvent.LOGOUT,this.reset,this),o.notificationCenter.subscribeInnerEvent(o.InnerEvent.DESTROY,this.dispose,this)}dispose(){const{notificationCenter:t,InnerEvent:o}=this._core;t.unSubscribeInnerEvent(o.LOGOUT,this.reset,this),t.unSubscribeInnerEvent(o.DESTROY,this.dispose,this),T.dispose(),A.dispose()}reset(){A.reset()}};export{b as default};