@tencentcloud/lite-chat 1.6.2-beta.0 → 1.6.4

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,9 +1,31 @@
1
1
  {
2
2
  "name": "@tencentcloud/lite-chat",
3
- "version": "1.6.2-beta.0",
3
+ "version": "1.6.4",
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",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./index.d.ts",
10
+ "default": "./standard.js"
11
+ },
12
+ "./basic": {
13
+ "types": "./basic.d.ts",
14
+ "default": "./basic.js"
15
+ },
16
+ "./standard": {
17
+ "types": "./index.d.ts",
18
+ "default": "./standard.js"
19
+ },
20
+ "./professional": {
21
+ "types": "./professional.d.ts",
22
+ "default": "./professional.js"
23
+ },
24
+ "./plugins/*": {
25
+ "types": "./plugins/*.d.ts",
26
+ "default": "./plugins/*.js"
27
+ }
28
+ },
7
29
  "keywords": ["chat", "real-time chat", "uni-app", "React Native", "Donut", "push", "messaging", "IM", "trtc"],
8
30
  "repository": {
9
31
  "type": "git",
@@ -1 +1 @@
1
- let e=new class{init(e){this.core=e}};function t(e,t){var s={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(s[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(s[o[n]]=e[o[n]]);return s}function s(e,r,a,l){return new(a=a||Promise)(function(s,t){function n(e){try{i(l.next(e))}catch(e){t(e)}}function o(e){try{i(l.throw(e))}catch(e){t(e)}}function i(e){var t;e.done?s(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(n,o)}i((l=l.apply(e,r||[])).next())})}let 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){var{core:e,manager:t,groupID:s,getRequestParams:n,onSuccess:o,onFail:i}=e;this._name="Polling",this._core=e,this._manager=t,this._timeoutID=-1,this._isRunning=!1,this._groupID=s,this._getRequestParams=n,this._onSuccess=o,this._onFail=i}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{var e=yield function(o,i){return s(this,void 0,void 0,function*(){var{longPollingKey:e,startSequence:t,startBroadcastSeq:s,simplifiedMessage:n}=o;return i.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:{Key:e,StartSeq:t,StartBroadcastSeq:s,DownsizeFlag:n,USP:1,HoldTime:90}})})}(this._getRequestParams(this._groupID),this._core),t=(this._onSuccess(this._groupID,e),this._manager.getCurrentPollingInterval(this._groupID));this._runNextPolling(t)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}})}_runNextPolling(e){this.isRunning()&&(-1<this._timeoutID&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(this._name+".stop timerID:"+this._timeoutID),-1<this._timeoutID&&(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){let e=(null==(t=this._map.entries().next().value)?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()}}let _=e=>e===i.GROUP_TIPS_HAS_NO_ROAMING||e===i.GROUP_TIPS_HAS_ROAMING,m=e=>e===i.GROUP_SYSTEM_MESSAGE;function d(d){var s,n,o,r,a,l,u,g=function(){var{E:e,MCT:s,MR:n,MP:o,MTS:i,GId:r,MS:a,CCD:l,F_Account:u,IsSys:g,GInf:p,MsgBody:c}=d,h=t(d,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:e,MsgClientTime:s,MsgRandom:n,MsgPriority:o,MsgTimeStamp:i,ToGroupId:r,MsgSeq:a,CloudCustomData:l,From_Account:u,IsSystemMsg:g,GroupInfo:M(p),MsgBody:I(c)},h)}(),p=g,c=p["Event"];if((_(c)||m(c))&&(p.From_Account=p.From_Account||"@TIM#SYSTEM"),c===i.BROADCAST_MESSAGE||c===i.NORMAL_MESSAGE){var h=p;let s=e["core"]["OuterConstant"];h.CloudCustomData=h.CloudCustomData||"",h.MsgBody=h.MsgBody.map(e=>{var t;return e.MsgType===s.MSG_CUSTOM&&({content:t={}}=e,e.content=Object.assign({Data:"",Desc:"",Ext:""},t)),e})}return _(c)&&({GroupJoinType:s,MsgOperatorMemberExtraInfo:n={},MsgMemberExtraInfo:o,Operator_Account:r,List_Account:a,OpType:l}=(h=p).MsgBody||{},"number"==typeof s||1!==l&&2!==l||(h.MsgBody.GroupJoinType=2===l?0:1),o||(h.MsgBody.MsgMemberExtraInfo=a.map(e=>({UserId:e}))),1!==l||o||(h.MsgBody.MsgMemberExtraInfo=[{UserId:n.UserId}]),h.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:r,ImageUrl:"",NickName:""},n)),m(c)&&({MsgOperatorMemberExtraInfo:s={},Operator_Account:a}=(u=p).MsgBody||{},u.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:a,ImageUrl:"",NickName:""},s),u.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*u.MsgTimeStamp},u.MsgBody),u.MsgBody=Object.keys(u.MsgBody).filter(e=>"MsgOperatorMemberExtraInfo"!==e).reduce((e,t)=>Object.assign(Object.assign({},e),{[t]:u.MsgBody[t]}),{})),g}function M(e){var e=e||{},{GN:s,GT:n,F_Hd:o,F_NN:i,F_Ll:r}=e,e=t(e,["GN","GT","F_Hd","F_NN","F_Ll"]),s=Object.assign({GroupName:s,GroupType:n},e);return o&&(s.From_AccountHeadurl=o),i&&(s.From_AccountNick=i),r&&(s.From_AccountLevel=r),s}function I(e){let s=e;var n=(s=Array.isArray(e)?s:[e]).map(e=>{var{O_Account:s,Opt:n,L_Account:o,RT:i,UDF:r,OpInf:a,OnlineInf:l,MsgMemberExtraInfo:u}=e,e=t(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),s=Object.assign({Operator_Account:s,OpType:n,List_Account:o,ReportType:i,UserDefinedField:r},e);return a&&(s.MsgOperatorMemberExtraInfo=function(){var{Img:e,NN:s}=a,n=t(a,["Img","NN"]);return Object.assign({ImageUrl:e,NickName:s},n)}()),u&&(s.MsgMemberExtraInfo=u.map(e=>{var{Img:s,NN:n}=e,e=t(e,["Img","NN"]);return Object.assign({ImageUrl:s,NickName:n},e)})),l&&(s.OnlineMemberInfo=function(){var{ET:e,Num:t}=l;return{ExpireTime:e,OnlineMemberNum:t}}()),s});return Array.isArray(e)?n:n[0]}var v=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(i,t,r=!1){this._sortServerMessageList({groupID:i,serverMessageList:t,isHistoryMessage:r});var a=this._handleMessageList(i,t);if(0!==a.length){if(!r){let{appStore:{conversationStore:t},OuterConstant:{CONV_GROUP:s}}=this._core,n=(t=>{var{common:{getMessagePreviewText:s}}=e["core"];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}})(a[a.length-1]);t.updateConversation(""+s+i,{lastMessage:n})}this._checkMessageStacked(a);let t=a.filter(e=>!0===e.isModified),s=a.filter(e=>!1===e.isModified),{MESSAGE_RECEIVED:n,MESSAGE_MODIFIED:o}=this._core["OuterEvent"];0<t.length&&this._emitEvent({name:o,data:t}),0<s.length&&this._emitEvent({name:n,data:s})}}_sortServerMessageList(e){var{groupID:e,serverMessageList:t,isHistoryMessage:s}=e;let n=[];n=this._avChatRoomHandler.isPollingSimplifiedMessage()&&!s?(t.sort((e,t)=>e.MS-t.MS),t.map(e=>e.MS)):(t.sort((e,t)=>e.MsgSeq-t.MsgSeq),t.map(e=>e.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${e} count:${n.length} sequenceList:`+n),n.length=0}_handleMessageList(s,n){var o,i,{messageDataHandler:a,messageHelper:l}=this._core["message"],u=this._avChatRoomHandler.isPollingSimplifiedMessage(),g=[],e=n.length;for(let t=0;t<e;t++){let e=n[t];if(u&&(e=d(e)),m(e.Event)&&Object.values(r).includes(e.MsgBody.ReportType)){this._onGroupDismissed(s);break}null!==this._filterMessageItem(e)&&(this._patchMessageType(e),o=l.parseServerGroupMessage(e),(i=this._createMessage(o)).level=e.GroupInfo.From_AccountLevel,_(e.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(o)?this._avChatRoomHandler.handleGroupAttributesUpdated(o):null===this._filterDuplicateMessage(i)||a.isMessageSentByCurrentInstance(i)||(1===o.isModified&&(i.isModified=!0),_(e.Event)&&this._updateLocalOnlineMemberCountFromTips(e),g.push(i)))}return g}_patchMessageType(e){var t=this._core["OuterConstant"];_(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){var t=e["Event"];return Object.values(i).includes(t)?t===i.MESSAGE_REVOKED?(this._handleMessageRevoked(e),null):t===i.LIVE_CUSTOM_DATA?(this._onLiveCustomData(e),null):t===i.MESSAGE_REACTION?null:e:(console.warn(this._name+".onMessageReceived unknown event:"+t),null)}_createMessage(e){var{message:{messageFactory:t},OuterConstant:s}=this._core;let n=s.CONV_GROUP;e.event===i.GROUP_SYSTEM_MESSAGE&&(n=s.CONV_SYSTEM);s=!!e.isSystemMessage,t=t.createMessage(Object.assign(Object.assign({},e),{conversationType:n,isSystemMessage:s,flow:"in"}));return t.setElement(e.elements),t}_filterDuplicateMessage(e){var t=this._core["common"];if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}t=this._messageIDList.has(e.ID);return t?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:`+t),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){let{OuterConstant:o,OuterEvent:{MESSAGE_REVOKED:t}}=this._core,{ToGroupId:i,MsgBody:{RevokeMsgList:s},RevokerInfo:{Revoker_Account:r,Reason:a=""}}=e,l=[];s.forEach(e=>{var{TinyId:e,MsgClientTime:t,Random:s,MsgSeq:n}=e,e={conversationID:""+o.CONV_GROUP+i,ID:e+`-${t}-`+s,revoker:r,revokeReason:a,revokerInfo:{userID:r,nick:"",avatar:""},sequence:n};l.push(e)}),0!==l.length&&this._emitEvent({name:t,data:l})}_onLiveCustomData(e){var t=this._core["OuterEvent"]["ROOM_CUSTOM_DATA_RECEIVED"],{ToGroupId:e,MsgSeq:s,MsgTimeStamp:n,MsgBody:o}=e,o=(null==o?void 0:o.MsgContent)||"";this._emitEvent({name:t,data:o}),console.log(this._name+`._onLiveCustomData groupID:${e} sequence:${s} time:${n} data:`+o)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){var t=e["length"];if(100<=t&&this._reportMessageStackedCount<5){let 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(s){var{message:{messageHelper:n},OuterEvent:{MESSAGE_RECEIVED:e}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),r=[],a=s.length;for(let t=0;t<a;t++){let e=s[t];o&&(e=d(e));var l=n.parseServerGroupMessage(e);Object.values(i).includes(e.Event)?((l=this._createMessage(l)).isBroadcastMessage=!0,this._broadcastMessageIDMap.has(l.ID)||(r.push(l),this._broadcastMessageIDMap.set(l.ID,1))):console.warn(this._name+".onBroadcastMessageReceived unknown event:"+e.Event)}0<r.length&&this._emitEvent({name:e,data:r})}_updateLocalOnlineMemberCountFromTips(t){var s=this._core["utils"]["isEmpty"],{ToGroupId:t,MsgBody:{OnlineMemberInfo:n}}=t;if(!s(n)){var{OnlineMemberNum:n=0,ExpireTime:o=a}=n,i=Date.now();let e=this._avChatRoomHandler.getLocalOnlineMemberCount(t);s(e)?e={lastReqTime:0,lastSyncTime:0,latestUpdateTime:i,memberCount:n,expireTime:o}:(e.latestUpdateTime=i,e.memberCount=n),this._avChatRoomHandler.updateLocalOnlineMemberCount(t,e)}}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};let f=t=>{var{store:s}=e["core"];return(s.get("cloudConfig")||{})[t]},S=t=>{var{utils:{isUndefined:s}}=e["core"];return!s(t)},C=()=>{var e=f("polling_interval");return S(e)?parseInt(e,10):300},b=()=>{var 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,v.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){var t=this._core["OuterConstant"]["GRP_AVCHATROOM"],{GroupTips:s=[]}=e;for(let e=0;e<s.length;e++){var{MsgBody:n,GroupInfo:{GroupId:o,GroupType:i}}=s[e],n=Object.values(r).includes(n.ReportType);i===t&&n&&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(){let{GRP_LIVE:t}=this._core["OuterConstant"],e=[];return e=0<this._joinedGroupMap.size?[...this._joinedGroupMap.values()].filter(e=>e.type===t):e}handleJoinGroupResult(l){return s(this,void 0,void 0,function*(){var{utils:{isUndefined:e},OuterConstant:{CONV_GROUP:t},apiMap:{getConversationProfile:s},OuterConstant:n}=this._core,{longPollingKey:o,group:i,historyMessageList:r=[]}=l,a=i["groupID"];return yield this._preCheck(i),this._joinedGroupMap.set(a,i),this._parentPlugin.groupDataHandler.updateLocalGroup([i]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),s(""+t+a),0<r.length&&v.onMessageReceived(a,r,!0),e(o)?{status:n.JOIN_STATUS_SUCCESS,group:i}:this.startMessageLongPolling(l)})}_preCheck(i){return s(this,void 0,void 0,function*(){var{common:t,OuterConstant:e,helper:s,apiMap:{quitGroup:n},ssoLog:o}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(t=f("polling_count_limit"),S(t)&&0<t?parseInt(t,10):20))throw new s.ChatError({code:c,message:"the count of longPolling exceeds the max limit"})}else if(0!==this._joinedAVChatRoomCount()&&i.type!==e.GRP_LIVE){var[t,s]=this._joinedGroupMap.entries().next().value;if(s.selfInfo.role===e.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(t);else try{yield n(t)}catch(e){o.debug("quitGroup",this._name+`._preCheck quitGroup failed, groupID:${t} info:`,e)}this.reset(t)}})}startMessageLongPolling(e){var t=this._core["OuterConstant"],{longPollingKey:e,startSequence:s=1,group:n}=e,o=n["groupID"];return this._pollingRequestInfoMap.set(o,{longPollingKey:e,startSequence:s}),this._pollingIntervalMap.set(o,C()),this._startPolling(o),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:n}}_startPolling(t){if(this._core.ssoLog.debug("_startPolling",this._name+"._startPolling groupID:"+t),this._pollingInstanceMap.has(t)){let e=this._pollingInstanceMap.get(t);void((null==e?void 0:e.isRunning())||null==e||e.start())}else{let e=new p({core:this._core,manager:this,groupID:t,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});e.start(),this._pollingInstanceMap.set(t,e)}}_handleRequestParams(e){var{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(s,e){var n=e["ErrorCode"];if(0===n)this._hasJoinedAVChatRoom(s)&&this._handleResponseData(s,e);else{let{longPollingKey:e,startSequence:t}=this._pollingRequestInfoMap.get(s)||{};console.warn(`${this._name}._handleSuccess groupID:${s} key:${e} startSeq:${t} errorCode:`+n)}}_handleResponseData(t,e){var{Key:e,NextSeq:s,NextBroadcastSeq:n,RspMsgList:o=[],RspBroadcastMsgList:i=[]}=e;if(e&&s&&this._pollingRequestInfoMap.set(t,{longPollingKey:e,startSequence:s}),n&&n>this._startBroadcastSequence&&(this._startBroadcastSequence=n),0<o.length)0!==this._getPollingNoMessageCount(t)&&(this._updatePollingNoMessageCount(t,0),this._pollingIntervalMap.set(t,C())),v.onMessageReceived(t,o);else{e=this._getPollingNoMessageCount(t);if(this._updatePollingNoMessageCount(t,e+=1),e===(s=f("polling_no_msg_count"),S(s)?parseInt(s,10):20)){let e=C()+(n=f("polling_interval_plus"),S(n)?parseInt(n,10):2e3);this._pollingIntervalMap.set(t,e)}}0<i.length&&v.onBroadcastMessageReceived(i)}_handleFailure(e,t){var{ssoLog:s,utils:{safeStringify:n}}=this._core;s.warn("polling",this._name+`._handleFailure groupID:${e} error: `+n(t))}_joinedAVChatRoomCount(){let t=this._core["OuterConstant"],e=[];return(e=0<this._joinedGroupMap.size?this.getJoinedGroups().filter(e=>e.type===t.GRP_AVCHATROOM):e).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){v.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){var t,s,n,o;return!this._membersReqInfoMap.has(e)||({startTime:t,requestCount:s}=this._membersReqInfoMap.get(e),{interval:n,count:o}=(()=>{var e=f("av_members_freq_limit");if(S(e)){var{interval:e,count:t}=JSON.parse(e);if(0<t&&0<e)return{interval:e,count:t}}return{interval:30,count:4}})(),Date.now()-t>1e3*n)?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(this._membersReqInfoMap.set(e,{startTime:t,requestCount:s+=1}),o<s)}_stopPolling(e){var t,s;if(this._core.ssoLog.debug("_stopPolling",this._name+"._stopPolling groupID:"+e),e)({appStore:{conversationStore:s},OuterConstant:{CONV_GROUP:t}}=this._core),s.deleteConversation(""+t+e),null!=(s=this._pollingInstanceMap.get(e))&&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),this._membersReqInfoMap.delete(e);else{for(let 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(){var r=this._joinedGroupMap.size;if(1<r){let{common:e,OuterConstant:s,ssoLog:t}=this._core,n=e.isUnlimitedAVChatRoom()?1:0,o=[],i=[];this._joinedGroupMap.values().forEach(({groupID:e,type:t})=>{(t===s.GRP_LIVE?i:o).push(e)}),t.info("longPollingCount",String(r),{moreMessage:`av:${o.join(",")} live:${i.join(",")} code: `+n,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,v.reset()}},R=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"joinGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}joinGroup(o){return s(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.joinGroup(o),{status:s,group:{type:n}}=t["data"];return n!==e.GRP_AVCHATROOM||s===e.JOIN_STATUS_ALREADY_IN_GROUP?t:O.handleJoinGroupResult(t.data)})}},y=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"quitGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}quitGroup(n){return s(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.quitGroup(n),{type:s}=t["data"];return s===e.GRP_AVCHATROOM&&O.reset(n),t})}},P=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"dismissGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}dismissGroup(n){return s(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.dismissGroup(n),{type:s}=t["data"];return s===e.GRP_AVCHATROOM&&O.reset(n),t})}},G=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupMemberList(i){return s(this,void 0,void 0,function*(){var{appStore:{groupStore:e},helper:t,OuterConstant:s}=this._core,o=i["groupID"],e=e.getGroup(o);if((null==e?void 0:e.type)===s.GRP_AVCHATROOM&&t.checkBusinessCapabilityBits(n)){if(O.isOverFrequencyLimit(o))throw{code:2996,message:"Over frequency limit: get_members-"+o};return this._getGroupMemberList(i)}return this._parentPlugin.groupMember.getGroupMemberList(i)})}_getGroupMemberList(r){return s(this,void 0,void 0,function*(){let i="_getGroupMemberList",n=this._core["helper"];try{let e=yield function(n,o){return s(this,void 0,void 0,function*(){var{groupID:e,offset:t=0}=n;return o.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:{GroupId:e,Timestamp:t}})})}(r,this._core),{MemberList:t=[],NextTimestamp:n=0}=e||{},o=this._handleMemberList(t);return console.log(`${this._name}.${i} ok, groupID:${r.groupID} count:${o.length} nextOffset:`+n),{code:0,data:{memberList:o,offset:n}}}catch(e){let t=new n.ChatError({functionName:i,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(this._name+`.${i} fail:`,t),t}})}_handleMemberList(e){return e.map(e=>{var{Member_Account:e,NickName:t="",Avatar:s="",Remark:n="",JoinTime:o=0,Marks:i=[]}=e;return{userID:e,nick:t,avatar:s,remark:n,joinTime:o,marks:i,isOnline:!0}})}},D=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupOnlineMemberCount(n){return s(this,void 0,void 0,function*(){var{appStore:{groupStore:e},OuterConstant:t}=this._core,e=e.getGroup(n);return e?e.type===t.GRP_AVCHATROOM?this._getOnlineMemberCount(n):this._parentPlugin.groupAction.getGroupOnlineMemberCount(n):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(n){return s(this,void 0,void 0,function*(){let t="_getOnlineMemberCount",{isEmpty:e}=this._core["utils"],s=O.getLocalOnlineMemberCount(n);if(e(s)||this._isExpired(n)){let{memberCount:e=0}=yield this._getOnlineMemberCountFromServer(n);return console.log(`${this._name}.${t} ok, groupID:${n} memberCount:${e} from server.`),{code:0,data:{memberCount:e}}}return console.log(`${this._name}.${t} ok, groupID:${n} memberCount:${s.memberCount} from local.`),{code:0,data:{memberCount:s.memberCount}}})}_isExpired(e){var e=O.getLocalOnlineMemberCount(e),t=Date.now(),s=t-e.lastSyncTime>1e3*e.expireTime,n=1e4<t-e.latestUpdateTime,t=3e3<t-e.lastReqTime;return s&&n&&t}_getOnlineMemberCountFromServer(r){return s(this,void 0,void 0,function*(){let n="_getOnlineMemberCountFromServer";try{let e=yield function(e,t){return s(this,void 0,void 0,function*(){return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:{GroupId:e}})})}(r,this._core),{OnlineMemberNum:t=0,ExpireTime:n=a}=e||{},o=Date.now(),i={lastSyncTime:o,latestUpdateTime:o,lastReqTime:o,memberCount:t,expireTime:n};return O.updateLocalOnlineMemberCount(r,i),{memberCount:t}}catch(e){let t=new this._core.helper.ChatError({functionName:n,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${n} fail:`,t),t}})}},E=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}deleteGroupMember(a){return s(this,void 0,void 0,function*(){var e="deleteGroupMember",{appStore:{groupStore:t},utils:{isUndefined:s},helper:n,OuterConstant:i}=this._core,r=a["groupID"],t=t.getGroup(r);if(s(t))throw new n.ChatError({functionName:e,code:u});if(t.type!==i.GRP_AVCHATROOM)return this._parentPlugin.groupMember.deleteGroupMember(a);if(n.checkBusinessCapabilityBits(o))return this._deleteGroupMember(a);throw new n.ChatError({functionName:e,code:g})})}_deleteGroupMember(u){return s(this,void 0,void 0,function*(){var t="_deleteGroupMember",{appStore:{groupStore:e},helper:n,ssoLog:o}=this._core,{groupID:i,duration:r=0,userIDList:a}=u;if(0===r)throw new n.ChatError({functionName:t,code:l});try{return yield function(o,i){return s(this,void 0,void 0,function*(){var{groupID:e,userIDList:t,duration:s,reason:n}=o;return i.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:{GroupId:e,Members_Account:t,Duration:s,Description:n}})})}(u,this._core),o.debug(t,this._name+`.${t} ok, groupID:`+i),{code:0,data:{group:e.getGroup(i),userIDList:a}}}catch(e){throw new n.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}},A=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return s(this,void 0,void 0,function*(){var i="markGroupMemberList",{groupID:r,markType:a,enableMark:l,userIDList:u=[]}=e,g=this._generateRequestData(e);try{let e=yield function(n,o){return s(this,void 0,void 0,function*(){var{groupID:e,operationType:t,memberList:s}=n;return o.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:{GroupId:e,CommandType:t,MemberList:s}})})}(g,this._core),{MemberList:t=[]}=e||{},{successUserIDList:n,failureUserIDList:o}=this._handleResult(t,u);return{code:0,data:{successUserIDList:n,failureUserIDList:o},successLog:{message:`${this._name}.${i} ok, groupID:${r} markType:${a} enableMark:${l} success:${n.length} fail:`+o.length}}}catch(e){throw new this._core.helper.ChatError({functionName:i,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}_generateRequestData(e){let{groupID:t,markType:s,enableMark:n,userIDList:o=[]}=e,i=!0===n?1:2,r=[...o];return 500<r.length&&console.warn(this._name+"._generateRequestData, the length of userIDList cannot exceed 500"),{groupID:t,operationType:i,memberList:r.map(e=>({Member_Account:e,Marks:[s]}))}}_handleResult(e,t){let s=[],n=[];return e.length===t.length?s.push(...t):t.forEach(t=>{(e.find(e=>e.Member_Account===t)?s:n).push(t)}),{successUserIDList:s,failureUserIDList:n}}},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)}},T=new class{constructor(){this._name="LiveHandler"}init(e){var{helper:e,ssoLog:t}=this._core=e;e.registerExperimentalAPI("startMessageLongPolling",this),e.registerExperimentalAPI("stopMessageLongPolling",this),t.debug("LiveHandler.init")}startMessageLongPolling(e){var{common:t,utils:{isEmpty:s},OuterConstant:n,ssoLog:o}=this._core,{groupID:e,longPollingKey:i,longPollingSequence:r=1}=e;if(s(i))return o.warn("startMessageLongPolling",this._name+".startMessageLongPolling longPollingKey is empty."),Promise.resolve({});O.hasPollingInstance(e)&&this.stopMessageLongPolling({groupID:e});s=O.getJoinedLiveList(),t=t.isUnlimitedAVChatRoom(),!t&&0<s.length&&this.stopMessageLongPolling({groupID:s[0].groupID}),o.debug("startMessageLongPolling",this._name+`.startMessageLongPolling isUnlimited:${t} groupID:${e} longPollingKey:${i} longPollingSequence:`+r),s={groupID:e,type:n.GRP_LIVE};return O.updateLocalLiveGroup(e,s),this._getLiveHistoryMessages({groupID:e,longPollingKey:i,startSequence:r}),O.startMessageLongPolling({group:s,longPollingKey:i,startSequence:r})}stopMessageLongPolling(e){e=e.groupID;return O.reset(e),this._core.ssoLog.debug("stopMessageLongPolling",this._name+".stopMessageLongPolling ok, groupID:"+e),Promise.resolve({groupID:e})}_getLiveHistoryMessages(i){return s(this,void 0,void 0,function*(){var t=this._core["ssoLog"],n=i["groupID"];try{var e=yield function(n,o){return s(this,void 0,void 0,function*(){var{groupID:e,longPollingKey:t,startSequence:s}=n;return o.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:{GroupId:e,LongPollingKey:t,PullPreSeq:s}})})}(i,this._core),{RspMsgList:o=[]}=e||{};t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages ok, groupID:${n} count:`+o.length),0<o.length&&O.handleLiveHistoryMessages(n,o)}catch(e){t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages failed, groupID:${n} info:`+e.message)}})}},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);var{notificationCenter:s,InnerEvent:t}=t,n=s["InnerEventSubType"];s.subscribeInnerEvent(t.MESSAGE_PUSH,n.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),s.subscribeInnerEvent(t.LOGOUT,this._reset,this),s.subscribeInnerEvent(t.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){O.onAVChatRoomSystemNotification(e)}_reset(){O.reset()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core,s=e["InnerEventSubType"];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
+ let e=new class{init(e){this.core=e}};function t(e,t){var n={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var s=0,o=Object.getOwnPropertySymbols(e);s<o.length;s++)t.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(e,o[s])&&(n[o[s]]=e[o[s]]);return n}function n(e,r,a,l){return new(a=a||Promise)(function(n,t){function s(e){try{i(l.next(e))}catch(e){t(e)}}function o(e){try{i(l.throw(e))}catch(e){t(e)}}function i(e){var t;e.done?n(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(s,o)}i((l=l.apply(e,r||[])).next())})}let 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){var{core:e,manager:t,groupID:n,getRequestParams:s,onSuccess:o,onFail:i}=e;this._name="Polling",this._core=e,this._manager=t,this._timeoutID=-1,this._isRunning=!1,this._groupID=n,this._getRequestParams=s,this._onSuccess=o,this._onFail=i}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{var e=yield function(o,i){return n(this,void 0,void 0,function*(){var{longPollingKey:e,startSequence:t,startBroadcastSeq:n,simplifiedMessage:s}=o;return i.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:{Key:e,StartSeq:t,StartBroadcastSeq:n,DownsizeFlag:s,USP:1,HoldTime:90}})})}(this._getRequestParams(this._groupID),this._core),t=(this._onSuccess(this._groupID,e),this._manager.getCurrentPollingInterval(this._groupID));this._runNextPolling(t)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}})}_runNextPolling(e){this.isRunning()&&(-1<this._timeoutID&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(this._name+".stop timerID:"+this._timeoutID),-1<this._timeoutID&&(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){let e=(null==(t=this._map.entries().next().value)?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()}}let _=e=>e===i.GROUP_TIPS_HAS_NO_ROAMING||e===i.GROUP_TIPS_HAS_ROAMING,m=e=>e===i.GROUP_SYSTEM_MESSAGE;function d(d){var n,s,o,r,a,l,u,g=function(){var{E:e,MCT:n,MR:s,MP:o,MTS:i,GId:r,MS:a,CCD:l,F_Account:u,IsSys:g,GInf:p,MsgBody:c}=d,h=t(d,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:e,MsgClientTime:n,MsgRandom:s,MsgPriority:o,MsgTimeStamp:i,ToGroupId:r,MsgSeq:a,CloudCustomData:l,From_Account:u,IsSystemMsg:g,GroupInfo:M(p),MsgBody:v(c)},h)}(),p=g,c=p["Event"];if((_(c)||m(c))&&(p.From_Account=p.From_Account||"@TIM#SYSTEM"),c===i.BROADCAST_MESSAGE||c===i.NORMAL_MESSAGE){var h=p;let n=e["core"]["OuterConstant"];h.CloudCustomData=h.CloudCustomData||"",h.MsgBody=h.MsgBody.map(e=>{var t;return e.MsgType===n.MSG_CUSTOM&&({content:t={}}=e,e.content=Object.assign({Data:"",Desc:"",Ext:""},t)),e})}return _(c)&&({GroupJoinType:n,MsgOperatorMemberExtraInfo:s={},MsgMemberExtraInfo:o,Operator_Account:r,List_Account:a,OpType:l}=(h=p).MsgBody||{},"number"==typeof n||1!==l&&2!==l||(h.MsgBody.GroupJoinType=2===l?0:1),o||(h.MsgBody.MsgMemberExtraInfo=null==a?void 0:a.map(e=>({UserId:e}))),1!==l||o||(h.MsgBody.MsgMemberExtraInfo=[{UserId:s.UserId}]),h.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:r,ImageUrl:"",NickName:""},s)),m(c)&&({MsgOperatorMemberExtraInfo:n={},Operator_Account:a}=(u=p).MsgBody||{},u.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:a,ImageUrl:"",NickName:""},n),u.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*u.MsgTimeStamp},u.MsgBody),u.MsgBody=Object.keys(u.MsgBody).filter(e=>"MsgOperatorMemberExtraInfo"!==e).reduce((e,t)=>Object.assign(Object.assign({},e),{[t]:u.MsgBody[t]}),{})),g}function M(e){var e=e||{},{GN:n,GT:s,F_Hd:o,F_NN:i,F_Ll:r}=e,e=t(e,["GN","GT","F_Hd","F_NN","F_Ll"]),n=Object.assign({GroupName:n,GroupType:s},e);return o&&(n.From_AccountHeadurl=o),i&&(n.From_AccountNick=i),r&&(n.From_AccountLevel=r),n}function v(e){let n=e;var s=(n=Array.isArray(e)?n:[e]).map(e=>{var{O_Account:n,Opt:s,L_Account:o,RT:i,UDF:r,OpInf:a,OnlineInf:l,MsgMemberExtraInfo:u}=e,e=t(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),n=Object.assign({Operator_Account:n,OpType:s,List_Account:o,ReportType:i,UserDefinedField:r},e);return a&&(n.MsgOperatorMemberExtraInfo=function(){var{Img:e,NN:n}=a,s=t(a,["Img","NN"]);return Object.assign({ImageUrl:e,NickName:n},s)}()),u&&(n.MsgMemberExtraInfo=null==u?void 0:u.map(e=>{var{Img:n,NN:s}=e,e=t(e,["Img","NN"]);return Object.assign({ImageUrl:n,NickName:s},e)})),l&&(n.OnlineMemberInfo=function(){var{ET:e,Num:t}=l;return{ExpireTime:e,OnlineMemberNum:t}}()),n});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(i,t,r=!1){this._sortServerMessageList({groupID:i,serverMessageList:t,isHistoryMessage:r});var a=this._handleMessageList(i,t);if(0!==a.length){if(!r){let{appStore:{conversationStore:t},OuterConstant:{CONV_GROUP:n}}=this._core,s=(t=>{var{common:{getMessagePreviewText:n}}=e["core"];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}})(a[a.length-1]);t.updateConversation(""+n+i,{lastMessage:s})}this._checkMessageStacked(a);let t=a.filter(e=>!0===e.isModified),n=a.filter(e=>!1===e.isModified),{MESSAGE_RECEIVED:s,MESSAGE_MODIFIED:o}=this._core["OuterEvent"];0<t.length&&this._emitEvent({name:o,data:t}),0<n.length&&this._emitEvent({name:s,data:n})}}_sortServerMessageList(e){var{groupID:e,serverMessageList:t,isHistoryMessage:n}=e;let s=[];s=this._avChatRoomHandler.isPollingSimplifiedMessage()&&!n?(t.sort((e,t)=>e.MS-t.MS),t.map(e=>e.MS)):(t.sort((e,t)=>e.MsgSeq-t.MsgSeq),t.map(e=>e.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${e} count:${s.length} sequenceList:`+s),s.length=0}_handleMessageList(n,s){var o,i,{messageDataHandler:a,messageHelper:l}=this._core["message"],u=this._avChatRoomHandler.isPollingSimplifiedMessage(),g=[],e=s.length;for(let t=0;t<e;t++){let e=s[t];if(u&&(e=d(e)),m(e.Event)&&Object.values(r).includes(e.MsgBody.ReportType)){this._onGroupDismissed(n);break}null!==this._filterMessageItem(e)&&(this._patchMessageType(e),o=l.parseServerGroupMessage(e),(i=this._createMessage(o)).level=e.GroupInfo.From_AccountLevel,_(e.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(o)?this._avChatRoomHandler.handleGroupAttributesUpdated(o):null===this._filterDuplicateMessage(i)||a.isMessageSentByCurrentInstance(i)||(1===o.isModified&&(i.isModified=!0),_(e.Event)&&this._updateLocalOnlineMemberCountFromTips(e),g.push(i)))}return g}_patchMessageType(e){var t=this._core["OuterConstant"];_(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){var t=e["Event"];return Object.values(i).includes(t)?t===i.MESSAGE_REVOKED?(this._handleMessageRevoked(e),null):t===i.LIVE_CUSTOM_DATA?(this._onLiveCustomData(e),null):t===i.MESSAGE_REACTION?null:e:(console.warn(this._name+".onMessageReceived unknown event:"+t),null)}_createMessage(e){var{message:{messageFactory:t},OuterConstant:n}=this._core;let s=n.CONV_GROUP;e.event===i.GROUP_SYSTEM_MESSAGE&&(s=n.CONV_SYSTEM);n=!!e.isSystemMessage,t=t.createMessage(Object.assign(Object.assign({},e),{conversationType:s,isSystemMessage:n,flow:"in"}));return t.setElement(e.elements),t}_filterDuplicateMessage(e){var t=this._core["common"];if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}t=this._messageIDList.has(e.ID);return t?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:`+t),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){let{OuterConstant:o,OuterEvent:{MESSAGE_REVOKED:t}}=this._core,{ToGroupId:i,MsgBody:{RevokeMsgList:n},RevokerInfo:{Revoker_Account:r,Reason:a=""}}=e,l=[];n.forEach(e=>{var{TinyId:e,MsgClientTime:t,Random:n,MsgSeq:s}=e,e={conversationID:""+o.CONV_GROUP+i,ID:e+`-${t}-`+n,revoker:r,revokeReason:a,revokerInfo:{userID:r,nick:"",avatar:""},sequence:s};l.push(e)}),0!==l.length&&this._emitEvent({name:t,data:l})}_onLiveCustomData(e){var t=this._core["OuterEvent"]["ROOM_CUSTOM_DATA_RECEIVED"],{ToGroupId:e,MsgSeq:n,MsgTimeStamp:s,MsgBody:o}=e,o=(null==o?void 0:o.Content)||(null==o?void 0:o.MsgContent)||"";this._emitEvent({name:t,data:o}),console.log(this._name+`._onLiveCustomData groupID:${e} sequence:${n} time:${s} data:`+o)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){var t=e["length"];if(100<=t&&this._reportMessageStackedCount<5){let 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(n){var{message:{messageHelper:s},OuterEvent:{MESSAGE_RECEIVED:e}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),r=[],a=n.length;for(let t=0;t<a;t++){let e=n[t];o&&(e=d(e));var l=s.parseServerGroupMessage(e);Object.values(i).includes(e.Event)?((l=this._createMessage(l)).isBroadcastMessage=!0,this._broadcastMessageIDMap.has(l.ID)||(r.push(l),this._broadcastMessageIDMap.set(l.ID,1))):console.warn(this._name+".onBroadcastMessageReceived unknown event:"+e.Event)}0<r.length&&this._emitEvent({name:e,data:r})}_updateLocalOnlineMemberCountFromTips(t){var n=this._core["utils"]["isEmpty"],{ToGroupId:t,MsgBody:{OnlineMemberInfo:s}}=t;if(!n(s)){var{OnlineMemberNum:s=0,ExpireTime:o=a}=s,i=Date.now();let e=this._avChatRoomHandler.getLocalOnlineMemberCount(t);n(e)?e={lastReqTime:0,lastSyncTime:0,latestUpdateTime:i,memberCount:s,expireTime:o}:(e.latestUpdateTime=i,e.memberCount=s),this._avChatRoomHandler.updateLocalOnlineMemberCount(t,e)}}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};let f=t=>{var{store:n}=e["core"];return(n.get("cloudConfig")||{})[t]},S=t=>{var{utils:{isUndefined:n}}=e["core"];return!n(t)},C=()=>{var e=f("polling_interval");return S(e)?parseInt(e,10):300},b=()=>{var 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){var t=this._core["OuterConstant"]["GRP_AVCHATROOM"],{GroupTips:n=[]}=e;for(let e=0;e<n.length;e++){var{MsgBody:s,GroupInfo:{GroupId:o,GroupType:i}}=n[e],s=Object.values(r).includes(s.ReportType);i===t&&s&&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(){let{GRP_LIVE:t}=this._core["OuterConstant"],e=[];return e=0<this._joinedGroupMap.size?[...this._joinedGroupMap.values()].filter(e=>e.type===t):e}handleJoinGroupResult(l){return n(this,void 0,void 0,function*(){var{utils:{isUndefined:e},OuterConstant:{CONV_GROUP:t},apiMap:{getConversationProfile:n},OuterConstant:s}=this._core,{longPollingKey:o,group:i,historyMessageList:r=[]}=l,a=i["groupID"];return yield this._preCheck(i),this._joinedGroupMap.set(a,i),this._parentPlugin.groupDataHandler.updateLocalGroup([i]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),n(""+t+a),0<r.length&&I.onMessageReceived(a,r,!0),e(o)?{code:0,data:{status:s.JOIN_STATUS_SUCCESS,group:i}}:{code:0,data:this.startMessageLongPolling(l)}})}_preCheck(i){return n(this,void 0,void 0,function*(){var{common:t,OuterConstant:e,helper:n,apiMap:{quitGroup:s},ssoLog:o}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(t=f("polling_count_limit"),S(t)&&0<t?parseInt(t,10):20))throw new n.ChatError({code:c,message:"the count of longPolling exceeds the max limit"})}else if(0!==this._joinedAVChatRoomCount()&&i.type!==e.GRP_LIVE){var[t,n]=this._joinedGroupMap.entries().next().value;if(n.selfInfo.role===e.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(t);else try{yield s(t)}catch(e){o.debug("quitGroup",this._name+`._preCheck quitGroup failed, groupID:${t} info:`,e)}this.reset(t)}})}startMessageLongPolling(e){var t=this._core["OuterConstant"],{longPollingKey:e,startSequence:n=1,group:s}=e,o=s["groupID"];return this._pollingRequestInfoMap.set(o,{longPollingKey:e,startSequence:n}),this._pollingIntervalMap.set(o,C()),this._startPolling(o),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:s}}_startPolling(t){if(this._core.ssoLog.debug("_startPolling",this._name+"._startPolling groupID:"+t),this._pollingInstanceMap.has(t)){let e=this._pollingInstanceMap.get(t);void((null==e?void 0:e.isRunning())||null==e||e.start())}else{let e=new p({core:this._core,manager:this,groupID:t,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});e.start(),this._pollingInstanceMap.set(t,e)}}_handleRequestParams(e){var{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(n,e){var s=e["ErrorCode"];if(0!==s){let{longPollingKey:e,startSequence:t}=this._pollingRequestInfoMap.get(n)||{};void console.warn(`${this._name}._handleSuccess groupID:${n} key:${e} startSeq:${t} errorCode:`+s)}else this._hasJoinedAVChatRoom(n)&&this._handleResponseData(n,e)}_handleResponseData(t,e){var{Key:e,NextSeq:n,NextBroadcastSeq:s,RspMsgList:o=[],RspBroadcastMsgList:i=[]}=e;if(e&&n&&this._pollingRequestInfoMap.set(t,{longPollingKey:e,startSequence:n}),s&&s>this._startBroadcastSequence&&(this._startBroadcastSequence=s),0<o.length)0!==this._getPollingNoMessageCount(t)&&(this._updatePollingNoMessageCount(t,0),this._pollingIntervalMap.set(t,C())),I.onMessageReceived(t,o);else{e=this._getPollingNoMessageCount(t);if(this._updatePollingNoMessageCount(t,e+=1),e===(n=f("polling_no_msg_count"),S(n)?parseInt(n,10):20)){let e=C()+(s=f("polling_interval_plus"),S(s)?parseInt(s,10):2e3);this._pollingIntervalMap.set(t,e)}}0<i.length&&I.onBroadcastMessageReceived(i)}_handleFailure(e,t){var{ssoLog:n,utils:{safeStringify:s}}=this._core;n.warn("polling",this._name+`._handleFailure groupID:${e} error: `+s(t))}_joinedAVChatRoomCount(){let t=this._core["OuterConstant"],e=[];return(e=0<this._joinedGroupMap.size?this.getJoinedGroups().filter(e=>e.type===t.GRP_AVCHATROOM):e).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){var t,n,s,o;return!this._membersReqInfoMap.has(e)||({startTime:t,requestCount:n}=this._membersReqInfoMap.get(e),{interval:s,count:o}=(()=>{var e=f("av_members_freq_limit");if(S(e)){var{interval:e,count:t}=JSON.parse(e);if(0<t&&0<e)return{interval:e,count:t}}return{interval:30,count:4}})(),Date.now()-t>1e3*s)?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(this._membersReqInfoMap.set(e,{startTime:t,requestCount:n+=1}),o<n)}_stopPolling(e){var t,n;if(this._core.ssoLog.debug("_stopPolling",this._name+"._stopPolling groupID:"+e),e)({appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:t}}=this._core),n.deleteConversation(""+t+e),null!=(n=this._pollingInstanceMap.get(e))&&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),this._membersReqInfoMap.delete(e);else{for(let 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(){var r=this._joinedGroupMap.size;if(1<r){let{common:e,OuterConstant:n,ssoLog:t}=this._core,s=e.isUnlimitedAVChatRoom()?1:0,o=[],i=[];this._joinedGroupMap.values().forEach(({groupID:e,type:t})=>{(t===n.GRP_LIVE?i:o).push(e)}),t.info("longPollingCount",String(r),{moreMessage:`av:${o.join(",")} live:${i.join(",")} code: `+s,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,I.reset()}},R=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"joinGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}joinGroup(o){return n(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.joinGroup(o),{status:n,group:{type:s}}=t["data"];return s!==e.GRP_AVCHATROOM||n===e.JOIN_STATUS_ALREADY_IN_GROUP?t:O.handleJoinGroupResult(t.data)})}},y=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"quitGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}quitGroup(s){return n(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.quitGroup(s),{type:n}=t["data"];return n===e.GRP_AVCHATROOM&&O.reset(s),t})}},P=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"dismissGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}dismissGroup(s){return n(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.dismissGroup(s),{type:n}=t["data"];return n===e.GRP_AVCHATROOM&&O.reset(s),t})}},G=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupMemberList(i){return n(this,void 0,void 0,function*(){var{appStore:{groupStore:e},helper:t,OuterConstant:n}=this._core,o=i["groupID"],e=e.getGroup(o);if((null==e?void 0:e.type)===n.GRP_AVCHATROOM&&t.checkBusinessCapabilityBits(s)){if(O.isOverFrequencyLimit(o))throw{code:2996,message:"Over frequency limit: get_members-"+o};return this._getGroupMemberList(i)}return this._parentPlugin.groupMember.getGroupMemberList(i)})}_getGroupMemberList(r){return n(this,void 0,void 0,function*(){let i="_getGroupMemberList",s=this._core["helper"];try{let e=yield function(s,o){return n(this,void 0,void 0,function*(){var{groupID:e,offset:t=0}=s;return o.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:{GroupId:e,Timestamp:t}})})}(r,this._core),{MemberList:t=[],NextTimestamp:s=0}=e||{},o=this._handleMemberList(t);return console.log(`${this._name}.${i} ok, groupID:${r.groupID} count:${o.length} nextOffset:`+s),{code:0,data:{memberList:o,offset:s}}}catch(e){let t=new s.ChatError({functionName:i,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(this._name+`.${i} fail:`,t),t}})}_handleMemberList(e){return e.map(e=>{var{Member_Account:e,NickName:t="",Avatar:n="",Remark:s="",JoinTime:o=0,Marks:i=[]}=e;return{userID:e,nick:t,avatar:n,remark:s,joinTime:o,marks:i,isOnline:!0}})}},D=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupOnlineMemberCount(s){return n(this,void 0,void 0,function*(){var{appStore:{groupStore:e},OuterConstant:t}=this._core,e=e.getGroup(s);return e?e.type===t.GRP_AVCHATROOM?this._getOnlineMemberCount(s):this._parentPlugin.groupAction.getGroupOnlineMemberCount(s):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(s){return n(this,void 0,void 0,function*(){let t="_getOnlineMemberCount",{isEmpty:e}=this._core["utils"],n=O.getLocalOnlineMemberCount(s);if(e(n)||this._isExpired(s)){let{memberCount:e=0}=yield this._getOnlineMemberCountFromServer(s);return console.log(`${this._name}.${t} ok, groupID:${s} memberCount:${e} from server.`),{code:0,data:{memberCount:e}}}return console.log(`${this._name}.${t} ok, groupID:${s} memberCount:${n.memberCount} from local.`),{code:0,data:{memberCount:n.memberCount}}})}_isExpired(e){var e=O.getLocalOnlineMemberCount(e),t=Date.now(),n=t-e.lastSyncTime>1e3*e.expireTime,s=1e4<t-e.latestUpdateTime,t=3e3<t-e.lastReqTime;return n&&s&&t}_getOnlineMemberCountFromServer(r){return n(this,void 0,void 0,function*(){let s="_getOnlineMemberCountFromServer";try{let e=yield function(e,t){return n(this,void 0,void 0,function*(){return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:{GroupId:e}})})}(r,this._core),{OnlineMemberNum:t=0,ExpireTime:s=a}=e||{},o=Date.now(),i={lastSyncTime:o,latestUpdateTime:o,lastReqTime:o,memberCount:t,expireTime:s};return O.updateLocalOnlineMemberCount(r,i),{memberCount:t}}catch(e){let t=new this._core.helper.ChatError({functionName:s,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${s} fail:`,t),t}})}},E=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}deleteGroupMember(a){return n(this,void 0,void 0,function*(){var e="deleteGroupMember",{appStore:{groupStore:t},utils:{isUndefined:n},helper:s,OuterConstant:i}=this._core,r=a["groupID"],t=t.getGroup(r);if(n(t))throw new s.ChatError({functionName:e,code:u});if(t.type!==i.GRP_AVCHATROOM)return this._parentPlugin.groupMember.deleteGroupMember(a);if(s.checkBusinessCapabilityBits(o))return this._deleteGroupMember(a);throw new s.ChatError({functionName:e,code:g})})}_deleteGroupMember(u){return n(this,void 0,void 0,function*(){var t="_deleteGroupMember",{appStore:{groupStore:e},helper:s,ssoLog:o}=this._core,{groupID:i,duration:r=0,userIDList:a}=u;if(0===r)throw new s.ChatError({functionName:t,code:l});try{return yield function(o,i){return n(this,void 0,void 0,function*(){var{groupID:e,userIDList:t,duration:n,reason:s}=o;return i.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:{GroupId:e,Members_Account:t,Duration:n,Description:s}})})}(u,this._core),o.debug(t,this._name+`.${t} ok, groupID:`+i),{code:0,data:{group:e.getGroup(i),userIDList:a}}}catch(e){throw new s.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}},A=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return n(this,void 0,void 0,function*(){var i="markGroupMemberList",{groupID:r,markType:a,enableMark:l,userIDList:u=[]}=e,g=this._generateRequestData(e);try{let e=yield function(s,o){return n(this,void 0,void 0,function*(){var{groupID:e,operationType:t,memberList:n}=s;return o.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:{GroupId:e,CommandType:t,MemberList:n}})})}(g,this._core),{MemberList:t=[]}=e||{},{successUserIDList:s,failureUserIDList:o}=this._handleResult(t,u);return{code:0,data:{successUserIDList:s,failureUserIDList:o},successLog:{message:`${this._name}.${i} ok, groupID:${r} markType:${a} enableMark:${l} success:${s.length} fail:`+o.length}}}catch(e){throw new this._core.helper.ChatError({functionName:i,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}_generateRequestData(e){let{groupID:t,markType:n,enableMark:s,userIDList:o=[]}=e,i=!0===s?1:2,r=[...o];return 500<r.length&&console.warn(this._name+"._generateRequestData, the length of userIDList cannot exceed 500"),{groupID:t,operationType:i,memberList:r.map(e=>({Member_Account:e,Marks:[n]}))}}_handleResult(e,t){let n=[],s=[];return e.length===t.length?n.push(...t):t.forEach(t=>{(e.find(e=>e.Member_Account===t)?n:s).push(t)}),{successUserIDList:n,failureUserIDList:s}}},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)}},T=new class{constructor(){this._name="LiveHandler"}init(e){var{helper:e,ssoLog:t}=this._core=e;e.registerExperimentalAPI("startMessageLongPolling",this),e.registerExperimentalAPI("stopMessageLongPolling",this),t.debug("LiveHandler.init")}startMessageLongPolling(e){var{common:t,utils:{isEmpty:n},OuterConstant:s,ssoLog:o}=this._core,{groupID:e,longPollingKey:i,longPollingSequence:r=1}=e;if(n(i))return o.warn("startMessageLongPolling",this._name+".startMessageLongPolling longPollingKey is empty."),Promise.resolve({});O.hasPollingInstance(e)&&this.stopMessageLongPolling({groupID:e});n=O.getJoinedLiveList(),t=t.isUnlimitedAVChatRoom(),!t&&0<n.length&&this.stopMessageLongPolling({groupID:n[0].groupID}),o.debug("startMessageLongPolling",this._name+`.startMessageLongPolling isUnlimited:${t} groupID:${e} longPollingKey:${i} longPollingSequence:`+r),n={groupID:e,type:s.GRP_LIVE};return O.updateLocalLiveGroup(e,n),this._getLiveHistoryMessages({groupID:e,longPollingKey:i,startSequence:r}),O.startMessageLongPolling({group:n,longPollingKey:i,startSequence:r})}stopMessageLongPolling(e){e=e.groupID;return O.reset(e),this._core.ssoLog.debug("stopMessageLongPolling",this._name+".stopMessageLongPolling ok, groupID:"+e),Promise.resolve({groupID:e})}_getLiveHistoryMessages(i){return n(this,void 0,void 0,function*(){var t=this._core["ssoLog"],s=i["groupID"];try{var e=yield function(s,o){return n(this,void 0,void 0,function*(){var{groupID:e,longPollingKey:t,startSequence:n}=s;return o.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:{GroupId:e,LongPollingKey:t,PullPreSeq:n}})})}(i,this._core),{RspMsgList:o=[]}=e||{};t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages ok, groupID:${s} count:`+o.length),0<o.length&&O.handleLiveHistoryMessages(s,o)}catch(e){t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages failed, groupID:${s} info:`+e.message)}})}},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);var{notificationCenter:n,InnerEvent:t}=t,s=n["InnerEventSubType"];n.subscribeInnerEvent(t.MESSAGE_PUSH,s.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),n.subscribeInnerEvent(t.LOGOUT,this._reset,this),n.subscribeInnerEvent(t.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){O.onAVChatRoomSystemNotification(e)}_reset(){O.reset()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core,n=e["InnerEventSubType"];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 +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(){let p=new class{init(e){this.core=e}};function _(e,t){var s={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(s[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(s[o[n]]=e[o[n]]);return s}function g(e,i,a,l){return new(a=a||Promise)(function(s,t){function n(e){try{r(l.next(e))}catch(e){t(e)}}function o(e){try{r(l.throw(e))}catch(e){t(e)}}function r(e){var t;e.done?s(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(n,o)}r((l=l.apply(e,i||[])).next())})}let c={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},h={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21};class s{constructor(e){var{core:e,manager:t,groupID:s,getRequestParams:n,onSuccess:o,onFail:r}=e;this._name="Polling",this._core=e,this._manager=t,this._timeoutID=-1,this._isRunning=!1,this._groupID=s,this._getRequestParams=n,this._onSuccess=o,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 g(this,void 0,void 0,function*(){try{var e=yield function(o,r){return g(this,void 0,void 0,function*(){var{longPollingKey:e,startSequence:t,startBroadcastSeq:s,simplifiedMessage:n}=o;return r.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:{Key:e,StartSeq:t,StartBroadcastSeq:s,DownsizeFlag:n,USP:1,HoldTime:90}})})}(this._getRequestParams(this._groupID),this._core),t=(this._onSuccess(this._groupID,e),this._manager.getCurrentPollingInterval(this._groupID));this._runNextPolling(t)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}})}_runNextPolling(e){this.isRunning()&&(-1<this._timeoutID&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(this._name+".stop timerID:"+this._timeoutID),-1<this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class e{constructor(e){this._maxLength=e,this._map=new Map}set(e){var t;if(this._map.size>=this._maxLength){let e=(null==(t=this._map.entries().next().value)?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()}}let m=e=>e===c.GROUP_TIPS_HAS_NO_ROAMING||e===c.GROUP_TIPS_HAS_ROAMING,d=e=>e===c.GROUP_SYSTEM_MESSAGE;function M(h){var e,t,s,n,o,r,i,a=function(){var{E:e,MCT:t,MR:s,MP:n,MTS:o,GId:r,MS:i,CCD:a,F_Account:l,IsSys:u,GInf:g,MsgBody:p}=h,c=_(h,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:e,MsgClientTime:t,MsgRandom:s,MsgPriority:n,MsgTimeStamp:o,ToGroupId:r,MsgSeq:i,CloudCustomData:a,From_Account:l,IsSystemMsg:u,GroupInfo:function(e){var e=e||{},{GN:t,GT:s,F_Hd:n,F_NN:o,F_Ll:r}=e,e=_(e,["GN","GT","F_Hd","F_NN","F_Ll"]),t=Object.assign({GroupName:t,GroupType:s},e);return n&&(t.From_AccountHeadurl=n),o&&(t.From_AccountNick=o),r&&(t.From_AccountLevel=r),t}(g),MsgBody:function(e){let t=e,s=(t=Array.isArray(e)?t:[e]).map(e=>{var{O_Account:t,Opt:s,L_Account:n,RT:o,UDF:r,OpInf:i,OnlineInf:a,MsgMemberExtraInfo:l}=e,e=_(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),t=Object.assign({Operator_Account:t,OpType:s,List_Account:n,ReportType:o,UserDefinedField:r},e);return i&&(t.MsgOperatorMemberExtraInfo=function(){var{Img:e,NN:t}=i,s=_(i,["Img","NN"]);return Object.assign({ImageUrl:e,NickName:t},s)}()),l&&(t.MsgMemberExtraInfo=l.map(e=>{var{Img:t,NN:s}=e,e=_(e,["Img","NN"]);return Object.assign({ImageUrl:t,NickName:s},e)})),a&&(t.OnlineMemberInfo=function(){var{ET:e,Num:t}=a;return{ExpireTime:e,OnlineMemberNum:t}}()),t});return Array.isArray(e)?s:s[0]}(p)},c)}(),l=a,u=l["Event"];if((m(u)||d(u))&&(l.From_Account=l.From_Account||"@TIM#SYSTEM"),u===c.BROADCAST_MESSAGE||u===c.NORMAL_MESSAGE){var g=l;let s=p["core"]["OuterConstant"];g.CloudCustomData=g.CloudCustomData||"",g.MsgBody=g.MsgBody.map(e=>{var t;return e.MsgType===s.MSG_CUSTOM&&({content:t={}}=e,e.content=Object.assign({Data:"",Desc:"",Ext:""},t)),e})}return m(u)&&({GroupJoinType:e,MsgOperatorMemberExtraInfo:t={},MsgMemberExtraInfo:s,Operator_Account:n,List_Account:o,OpType:r}=(g=l).MsgBody||{},"number"==typeof e||1!==r&&2!==r||(g.MsgBody.GroupJoinType=2===r?0:1),s||(g.MsgBody.MsgMemberExtraInfo=o.map(e=>({UserId:e}))),1!==r||s||(g.MsgBody.MsgMemberExtraInfo=[{UserId:t.UserId}]),g.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:n,ImageUrl:"",NickName:""},t)),d(u)&&({MsgOperatorMemberExtraInfo:e={},Operator_Account:o}=(i=l).MsgBody||{},i.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:o,ImageUrl:"",NickName:""},e),i.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*i.MsgTimeStamp},i.MsgBody),i.MsgBody=Object.keys(i.MsgBody).filter(e=>"MsgOperatorMemberExtraInfo"!==e).reduce((e,t)=>Object.assign(Object.assign({},e),{[t]:i.MsgBody[t]}),{})),a}var u=new class{constructor(){this._name="MessageParser",this._sequenceList=new e(200),this._messageIDList=new e(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(e,t){this._core=e,this._avChatRoomHandler=t}onMessageReceived(o,e,r=!1){this._sortServerMessageList({groupID:o,serverMessageList:e,isHistoryMessage:r});var i=this._handleMessageList(o,e);if(0!==i.length){if(!r){let{appStore:{conversationStore:e},OuterConstant:{CONV_GROUP:t}}=this._core,s=(e=>{var{common:{getMessagePreviewText:t}}=p["core"];return{lastTime:(null==e?void 0:e.time)||(null==e?void 0:e.lastTime)||0,lastSequence:(null==e?void 0:e.sequence)||(null==e?void 0:e.lastSequence)||0,fromAccount:(null==e?void 0:e.from)||(null==e?void 0:e.fromAccount)||"",messageForShow:t(null==e?void 0:e.type,null==e?void 0:e.payload),payload:(null==e?void 0:e.payload)||null,type:(null==e?void 0:e.type)||"",isRevoked:(null==e?void 0:e.isRevoked)||!1,cloudCustomData:(null==e?void 0:e.cloudCustomData)||"",onlineOnlyFlag:(null==e?void 0:e._onlineOnlyFlag)||!1,nick:(null==e?void 0:e.nick)||"",nameCard:(null==e?void 0:e.nameCard)||"",version:(null==e?void 0:e.version)||0,isPeerRead:(null==e?void 0:e.isPeerRead)||!1,revoker:(null==e?void 0:e.revoker)||null}})(i[i.length-1]);e.updateConversation(""+t+o,{lastMessage:s})}this._checkMessageStacked(i);let e=i.filter(e=>!0===e.isModified),t=i.filter(e=>!1===e.isModified),{MESSAGE_RECEIVED:s,MESSAGE_MODIFIED:n}=this._core["OuterEvent"];0<e.length&&this._emitEvent({name:n,data:e}),0<t.length&&this._emitEvent({name:s,data:t})}}_sortServerMessageList(e){var{groupID:e,serverMessageList:t,isHistoryMessage:s}=e;let n=[];n=this._avChatRoomHandler.isPollingSimplifiedMessage()&&!s?(t.sort((e,t)=>e.MS-t.MS),t.map(e=>e.MS)):(t.sort((e,t)=>e.MsgSeq-t.MsgSeq),t.map(e=>e.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${e} count:${n.length} sequenceList:`+n),n.length=0}_handleMessageList(s,n){var o,r,{messageDataHandler:i,messageHelper:a}=this._core["message"],l=this._avChatRoomHandler.isPollingSimplifiedMessage(),u=[],e=n.length;for(let t=0;t<e;t++){let e=n[t];if(l&&(e=M(e)),d(e.Event)&&Object.values(h).includes(e.MsgBody.ReportType)){this._onGroupDismissed(s);break}null!==this._filterMessageItem(e)&&(this._patchMessageType(e),o=a.parseServerGroupMessage(e),(r=this._createMessage(o)).level=e.GroupInfo.From_AccountLevel,m(e.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(o)?this._avChatRoomHandler.handleGroupAttributesUpdated(o):null===this._filterDuplicateMessage(r)||i.isMessageSentByCurrentInstance(r)||(1===o.isModified&&(r.isModified=!0),m(e.Event)&&this._updateLocalOnlineMemberCountFromTips(e),u.push(r)))}return u}_patchMessageType(e){var t=this._core["OuterConstant"];m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),d(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){var t=e["Event"];return Object.values(c).includes(t)?t===c.MESSAGE_REVOKED?(this._handleMessageRevoked(e),null):t===c.LIVE_CUSTOM_DATA?(this._onLiveCustomData(e),null):t===c.MESSAGE_REACTION?null:e:(console.warn(this._name+".onMessageReceived unknown event:"+t),null)}_createMessage(e){var{message:{messageFactory:t},OuterConstant:s}=this._core;let n=s.CONV_GROUP;e.event===c.GROUP_SYSTEM_MESSAGE&&(n=s.CONV_SYSTEM);s=!!e.isSystemMessage,t=t.createMessage(Object.assign(Object.assign({},e),{conversationType:n,isSystemMessage:s,flow:"in"}));return t.setElement(e.elements),t}_filterDuplicateMessage(e){var t=this._core["common"];if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}t=this._messageIDList.has(e.ID);return t?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:`+t),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){let{OuterConstant:o,OuterEvent:{MESSAGE_REVOKED:t}}=this._core,{ToGroupId:r,MsgBody:{RevokeMsgList:s},RevokerInfo:{Revoker_Account:i,Reason:a=""}}=e,l=[];s.forEach(e=>{var{TinyId:e,MsgClientTime:t,Random:s,MsgSeq:n}=e,e={conversationID:""+o.CONV_GROUP+r,ID:e+`-${t}-`+s,revoker:i,revokeReason:a,revokerInfo:{userID:i,nick:"",avatar:""},sequence:n};l.push(e)}),0!==l.length&&this._emitEvent({name:t,data:l})}_onLiveCustomData(e){var t=this._core["OuterEvent"]["ROOM_CUSTOM_DATA_RECEIVED"],{ToGroupId:e,MsgSeq:s,MsgTimeStamp:n,MsgBody:o}=e,o=(null==o?void 0:o.MsgContent)||"";this._emitEvent({name:t,data:o}),console.log(this._name+`._onLiveCustomData groupID:${e} sequence:${s} time:${n} data:`+o)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){var t=e["length"];if(100<=t&&this._reportMessageStackedCount<5){let 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(s){var{message:{messageHelper:n},OuterEvent:{MESSAGE_RECEIVED:e}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),r=[],i=s.length;for(let t=0;t<i;t++){let e=s[t];o&&(e=M(e));var a=n.parseServerGroupMessage(e);Object.values(c).includes(e.Event)?((a=this._createMessage(a)).isBroadcastMessage=!0,this._broadcastMessageIDMap.has(a.ID)||(r.push(a),this._broadcastMessageIDMap.set(a.ID,1))):console.warn(this._name+".onBroadcastMessageReceived unknown event:"+e.Event)}0<r.length&&this._emitEvent({name:e,data:r})}_updateLocalOnlineMemberCountFromTips(t){var s=this._core["utils"]["isEmpty"],{ToGroupId:t,MsgBody:{OnlineMemberInfo:n}}=t;if(!s(n)){var{OnlineMemberNum:n=0,ExpireTime:o=60}=n,r=Date.now();let e=this._avChatRoomHandler.getLocalOnlineMemberCount(t);s(e)?e={lastReqTime:0,lastSyncTime:0,latestUpdateTime:r,memberCount:n,expireTime:o}:(e.latestUpdateTime=r,e.memberCount=n),this._avChatRoomHandler.updateLocalOnlineMemberCount(t,e)}}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};let i=e=>{var{store:t}=p["core"];return(t.get("cloudConfig")||{})[e]},a=e=>{var{utils:{isUndefined:t}}=p["core"];return!t(e)},l=()=>{var e=i("polling_interval");return a(e)?parseInt(e,10):300},n=()=>{var e=i("polling_simplified_msg");return a(e)?parseInt(e,10):0};var v=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,u.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){var t=this._core["OuterConstant"]["GRP_AVCHATROOM"],{GroupTips:s=[]}=e;for(let e=0;e<s.length;e++){var{MsgBody:n,GroupInfo:{GroupId:o,GroupType:r}}=s[e],n=Object.values(h).includes(n.ReportType);r===t&&n&&this.reset(o)}}getCurrentPollingInterval(e){return this._pollingIntervalMap.get(e)||l()}isPollingSimplifiedMessage(){return 0!==n()}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(){let{GRP_LIVE:t}=this._core["OuterConstant"],e=[];return e=0<this._joinedGroupMap.size?[...this._joinedGroupMap.values()].filter(e=>e.type===t):e}handleJoinGroupResult(l){return g(this,void 0,void 0,function*(){var{utils:{isUndefined:e},OuterConstant:{CONV_GROUP:t},apiMap:{getConversationProfile:s},OuterConstant:n}=this._core,{longPollingKey:o,group:r,historyMessageList:i=[]}=l,a=r["groupID"];return yield this._preCheck(r),this._joinedGroupMap.set(a,r),this._parentPlugin.groupDataHandler.updateLocalGroup([r]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),s(""+t+a),0<i.length&&u.onMessageReceived(a,i,!0),e(o)?{status:n.JOIN_STATUS_SUCCESS,group:r}:this.startMessageLongPolling(l)})}_preCheck(r){return g(this,void 0,void 0,function*(){var{common:t,OuterConstant:e,helper:s,apiMap:{quitGroup:n},ssoLog:o}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(t=i("polling_count_limit"),a(t)&&0<t?parseInt(t,10):20))throw new s.ChatError({code:2688,message:"the count of longPolling exceeds the max limit"})}else if(0!==this._joinedAVChatRoomCount()&&r.type!==e.GRP_LIVE){var[t,s]=this._joinedGroupMap.entries().next().value;if(s.selfInfo.role===e.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(t);else try{yield n(t)}catch(e){o.debug("quitGroup",this._name+`._preCheck quitGroup failed, groupID:${t} info:`,e)}this.reset(t)}})}startMessageLongPolling(e){var t=this._core["OuterConstant"],{longPollingKey:e,startSequence:s=1,group:n}=e,o=n["groupID"];return this._pollingRequestInfoMap.set(o,{longPollingKey:e,startSequence:s}),this._pollingIntervalMap.set(o,l()),this._startPolling(o),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:n}}_startPolling(t){if(this._core.ssoLog.debug("_startPolling",this._name+"._startPolling groupID:"+t),this._pollingInstanceMap.has(t)){let e=this._pollingInstanceMap.get(t);void((null==e?void 0:e.isRunning())||null==e||e.start())}else{let e=new s({core:this._core,manager:this,groupID:t,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});e.start(),this._pollingInstanceMap.set(t,e)}}_handleRequestParams(e){var{longPollingKey:t,startSequence:s}=this._pollingRequestInfoMap.get(e)||{};return e===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:t,startSequence:s,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:n()}:{longPollingKey:t,startSequence:s,simplifiedMessage:n()}}_handleSuccess(s,e){var n=e["ErrorCode"];if(0===n)this._hasJoinedAVChatRoom(s)&&this._handleResponseData(s,e);else{let{longPollingKey:e,startSequence:t}=this._pollingRequestInfoMap.get(s)||{};console.warn(`${this._name}._handleSuccess groupID:${s} key:${e} startSeq:${t} errorCode:`+n)}}_handleResponseData(t,e){var{Key:e,NextSeq:s,NextBroadcastSeq:n,RspMsgList:o=[],RspBroadcastMsgList:r=[]}=e;if(e&&s&&this._pollingRequestInfoMap.set(t,{longPollingKey:e,startSequence:s}),n&&n>this._startBroadcastSequence&&(this._startBroadcastSequence=n),0<o.length)0!==this._getPollingNoMessageCount(t)&&(this._updatePollingNoMessageCount(t,0),this._pollingIntervalMap.set(t,l())),u.onMessageReceived(t,o);else{e=this._getPollingNoMessageCount(t);if(this._updatePollingNoMessageCount(t,e+=1),e===(s=i("polling_no_msg_count"),a(s)?parseInt(s,10):20)){let e=l()+(n=i("polling_interval_plus"),a(n)?parseInt(n,10):2e3);this._pollingIntervalMap.set(t,e)}}0<r.length&&u.onBroadcastMessageReceived(r)}_handleFailure(e,t){var{ssoLog:s,utils:{safeStringify:n}}=this._core;s.warn("polling",this._name+`._handleFailure groupID:${e} error: `+n(t))}_joinedAVChatRoomCount(){let t=this._core["OuterConstant"],e=[];return(e=0<this._joinedGroupMap.size?this.getJoinedGroups().filter(e=>e.type===t.GRP_AVCHATROOM):e).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){u.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){var t,s,n,o;return!this._membersReqInfoMap.has(e)||({startTime:t,requestCount:s}=this._membersReqInfoMap.get(e),{interval:n,count:o}=(()=>{var e=i("av_members_freq_limit");if(a(e)){var{interval:e,count:t}=JSON.parse(e);if(0<t&&0<e)return{interval:e,count:t}}return{interval:30,count:4}})(),Date.now()-t>1e3*n)?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(this._membersReqInfoMap.set(e,{startTime:t,requestCount:s+=1}),o<s)}_stopPolling(e){var t,s;if(this._core.ssoLog.debug("_stopPolling",this._name+"._stopPolling groupID:"+e),e)({appStore:{conversationStore:s},OuterConstant:{CONV_GROUP:t}}=this._core),s.deleteConversation(""+t+e),null!=(s=this._pollingInstanceMap.get(e))&&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),this._membersReqInfoMap.delete(e);else{for(let 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(){var i=this._joinedGroupMap.size;if(1<i){let{common:e,OuterConstant:s,ssoLog:t}=this._core,n=e.isUnlimitedAVChatRoom()?1:0,o=[],r=[];this._joinedGroupMap.values().forEach(({groupID:e,type:t})=>{(t===s.GRP_LIVE?r:o).push(e)}),t.info("longPollingCount",String(i),{moreMessage:`av:${o.join(",")} live:${r.join(",")} code: `+n,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,u.reset()}},o=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"joinGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}joinGroup(o){return g(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.joinGroup(o),{status:s,group:{type:n}}=t["data"];return n!==e.GRP_AVCHATROOM||s===e.JOIN_STATUS_ALREADY_IN_GROUP?t:v.handleJoinGroupResult(t.data)})}},r=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"quitGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}quitGroup(n){return g(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.quitGroup(n),{type:s}=t["data"];return s===e.GRP_AVCHATROOM&&v.reset(n),t})}},I=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"dismissGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}dismissGroup(n){return g(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.dismissGroup(n),{type:s}=t["data"];return s===e.GRP_AVCHATROOM&&v.reset(n),t})}},f=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupMemberList(o){return g(this,void 0,void 0,function*(){var{appStore:{groupStore:e},helper:t,OuterConstant:s}=this._core,n=o["groupID"],e=e.getGroup(n);if((null==e?void 0:e.type)===s.GRP_AVCHATROOM&&t.checkBusinessCapabilityBits("AV_MBR_LIST")){if(v.isOverFrequencyLimit(n))throw{code:2996,message:"Over frequency limit: get_members-"+n};return this._getGroupMemberList(o)}return this._parentPlugin.groupMember.getGroupMemberList(o)})}_getGroupMemberList(r){return g(this,void 0,void 0,function*(){let o="_getGroupMemberList",s=this._core["helper"];try{let e=yield function(s,n){return g(this,void 0,void 0,function*(){var{groupID:e,offset:t=0}=s;return n.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:{GroupId:e,Timestamp:t}})})}(r,this._core),{MemberList:t=[],NextTimestamp:s=0}=e||{},n=this._handleMemberList(t);return console.log(`${this._name}.${o} ok, groupID:${r.groupID} count:${n.length} nextOffset:`+s),{code:0,data:{memberList:n,offset:s}}}catch(e){let t=new s.ChatError({functionName:o,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(this._name+`.${o} fail:`,t),t}})}_handleMemberList(e){return e.map(e=>{var{Member_Account:e,NickName:t="",Avatar:s="",Remark:n="",JoinTime:o=0,Marks:r=[]}=e;return{userID:e,nick:t,avatar:s,remark:n,joinTime:o,marks:r,isOnline:!0}})}},S=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupOnlineMemberCount(s){return g(this,void 0,void 0,function*(){var{appStore:{groupStore:e},OuterConstant:t}=this._core,e=e.getGroup(s);return e?e.type===t.GRP_AVCHATROOM?this._getOnlineMemberCount(s):this._parentPlugin.groupAction.getGroupOnlineMemberCount(s):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(n){return g(this,void 0,void 0,function*(){let t="_getOnlineMemberCount",{isEmpty:e}=this._core["utils"],s=v.getLocalOnlineMemberCount(n);if(e(s)||this._isExpired(n)){let{memberCount:e=0}=yield this._getOnlineMemberCountFromServer(n);return console.log(`${this._name}.${t} ok, groupID:${n} memberCount:${e} from server.`),{code:0,data:{memberCount:e}}}return console.log(`${this._name}.${t} ok, groupID:${n} memberCount:${s.memberCount} from local.`),{code:0,data:{memberCount:s.memberCount}}})}_isExpired(e){var e=v.getLocalOnlineMemberCount(e),t=Date.now(),s=t-e.lastSyncTime>1e3*e.expireTime,n=1e4<t-e.latestUpdateTime,t=3e3<t-e.lastReqTime;return s&&n&&t}_getOnlineMemberCountFromServer(r){return g(this,void 0,void 0,function*(){let s="_getOnlineMemberCountFromServer";try{let e=yield function(e,t){return g(this,void 0,void 0,function*(){return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:{GroupId:e}})})}(r,this._core),{OnlineMemberNum:t=0,ExpireTime:s=60}=e||{},n=Date.now(),o={lastSyncTime:n,latestUpdateTime:n,lastReqTime:n,memberCount:t,expireTime:s};return v.updateLocalOnlineMemberCount(r,o),{memberCount:t}}catch(e){let t=new this._core.helper.ChatError({functionName:s,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${s} fail:`,t),t}})}},C=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}deleteGroupMember(i){return g(this,void 0,void 0,function*(){var e="deleteGroupMember",{appStore:{groupStore:t},utils:{isUndefined:s},helper:n,OuterConstant:o}=this._core,r=i["groupID"],t=t.getGroup(r);if(s(t))throw new n.ChatError({functionName:e,code:2603});if(t.type!==o.GRP_AVCHATROOM)return this._parentPlugin.groupMember.deleteGroupMember(i);if(n.checkBusinessCapabilityBits("AV_BAN_MBR"))return this._deleteGroupMember(i);throw new n.ChatError({functionName:e,code:3122})})}_deleteGroupMember(a){return g(this,void 0,void 0,function*(){var t="_deleteGroupMember",{appStore:{groupStore:e},helper:s,ssoLog:n}=this._core,{groupID:o,duration:r=0,userIDList:i}=a;if(0===r)throw new s.ChatError({functionName:t,code:2686});try{return yield function(o,r){return g(this,void 0,void 0,function*(){var{groupID:e,userIDList:t,duration:s,reason:n}=o;return r.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:{GroupId:e,Members_Account:t,Duration:s,Description:n}})})}(a,this._core),n.debug(t,this._name+`.${t} ok, groupID:`+o),{code:0,data:{group:e.getGroup(o),userIDList:i}}}catch(e){throw new s.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}},b=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return g(this,void 0,void 0,function*(){var o="markGroupMemberList",{groupID:r,markType:i,enableMark:a,userIDList:l=[]}=e,u=this._generateRequestData(e);try{let e=yield function(n,o){return g(this,void 0,void 0,function*(){var{groupID:e,operationType:t,memberList:s}=n;return o.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:{GroupId:e,CommandType:t,MemberList:s}})})}(u,this._core),{MemberList:t=[]}=e||{},{successUserIDList:s,failureUserIDList:n}=this._handleResult(t,l);return{code:0,data:{successUserIDList:s,failureUserIDList:n},successLog:{message:`${this._name}.${o} ok, groupID:${r} markType:${i} enableMark:${a} success:${s.length} fail:`+n.length}}}catch(e){throw new this._core.helper.ChatError({functionName:o,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}_generateRequestData(e){let{groupID:t,markType:s,enableMark:n,userIDList:o=[]}=e,r=!0===n?1:2,i=[...o];return 500<i.length&&console.warn(this._name+"._generateRequestData, the length of userIDList cannot exceed 500"),{groupID:t,operationType:r,memberList:i.map(e=>({Member_Account:e,Marks:[s]}))}}_handleResult(e,t){let s=[],n=[];return e.length===t.length?s.push(...t):t.forEach(t=>{(e.find(e=>e.Member_Account===t)?s:n).push(t)}),{successUserIDList:s,failureUserIDList:n}}},O=new class{init(e,t){e.ssoLog.debug("AVChatRoomAction.init"),o.init(e,t),r.init(e,t),I.init(e,t),f.init(e,t),S.init(e,t),C.init(e,t),b.init(e)}},R=new class{constructor(){this._name="LiveHandler"}init(e){var{helper:e,ssoLog:t}=this._core=e;e.registerExperimentalAPI("startMessageLongPolling",this),e.registerExperimentalAPI("stopMessageLongPolling",this),t.debug("LiveHandler.init")}startMessageLongPolling(e){var{common:t,utils:{isEmpty:s},OuterConstant:n,ssoLog:o}=this._core,{groupID:e,longPollingKey:r,longPollingSequence:i=1}=e;if(s(r))return o.warn("startMessageLongPolling",this._name+".startMessageLongPolling longPollingKey is empty."),Promise.resolve({});v.hasPollingInstance(e)&&this.stopMessageLongPolling({groupID:e});s=v.getJoinedLiveList(),t=t.isUnlimitedAVChatRoom(),!t&&0<s.length&&this.stopMessageLongPolling({groupID:s[0].groupID}),o.debug("startMessageLongPolling",this._name+`.startMessageLongPolling isUnlimited:${t} groupID:${e} longPollingKey:${r} longPollingSequence:`+i),s={groupID:e,type:n.GRP_LIVE};return v.updateLocalLiveGroup(e,s),this._getLiveHistoryMessages({groupID:e,longPollingKey:r,startSequence:i}),v.startMessageLongPolling({group:s,longPollingKey:r,startSequence:i})}stopMessageLongPolling(e){e=e.groupID;return v.reset(e),this._core.ssoLog.debug("stopMessageLongPolling",this._name+".stopMessageLongPolling ok, groupID:"+e),Promise.resolve({groupID:e})}_getLiveHistoryMessages(o){return g(this,void 0,void 0,function*(){var t=this._core["ssoLog"],s=o["groupID"];try{var e=yield function(n,o){return g(this,void 0,void 0,function*(){var{groupID:e,longPollingKey:t,startSequence:s}=n;return o.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:{GroupId:e,LongPollingKey:t,PullPreSeq:s}})})}(o,this._core),{RspMsgList:n=[]}=e||{};t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages ok, groupID:${s} count:`+n.length),0<n.length&&v.handleLiveHistoryMessages(s,n)}catch(e){t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages failed, groupID:${s} info:`+e.message)}})}};return new class{constructor(){this.name="AVChatRoom"}install(e,t){this._core=e,p.init(e),v.init(e,t),O.init(e,t),R.init(e);var{notificationCenter:t,InnerEvent:e}=e,s=t["InnerEventSubType"];t.subscribeInnerEvent(e.MESSAGE_PUSH,s.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),t.subscribeInnerEvent(e.LOGOUT,this._reset,this),t.subscribeInnerEvent(e.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){v.onAVChatRoomSystemNotification(e)}_reset(){v.reset()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core,s=e["InnerEventSubType"];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)}}});
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(){let p=new class{init(e){this.core=e}};function _(e,t){var s={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(s[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var n=0,o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(s[o[n]]=e[o[n]]);return s}function g(e,r,a,l){return new(a=a||Promise)(function(s,t){function n(e){try{i(l.next(e))}catch(e){t(e)}}function o(e){try{i(l.throw(e))}catch(e){t(e)}}function i(e){var t;e.done?s(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(n,o)}i((l=l.apply(e,r||[])).next())})}let c={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},h={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21};class s{constructor(e){var{core:e,manager:t,groupID:s,getRequestParams:n,onSuccess:o,onFail:i}=e;this._name="Polling",this._core=e,this._manager=t,this._timeoutID=-1,this._isRunning=!1,this._groupID=s,this._getRequestParams=n,this._onSuccess=o,this._onFail=i}start(){this._isRunning=!0,this._request(),console.log(this._name+".start pollingInterval:"+this._manager.getCurrentPollingInterval(this._groupID))}isRunning(){return this._isRunning}_request(){return g(this,void 0,void 0,function*(){try{var e=yield function(o,i){return g(this,void 0,void 0,function*(){var{longPollingKey:e,startSequence:t,startBroadcastSeq:s,simplifiedMessage:n}=o;return i.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:{Key:e,StartSeq:t,StartBroadcastSeq:s,DownsizeFlag:n,USP:1,HoldTime:90}})})}(this._getRequestParams(this._groupID),this._core),t=(this._onSuccess(this._groupID,e),this._manager.getCurrentPollingInterval(this._groupID));this._runNextPolling(t)}catch(e){this._onFail(this._groupID,e),this._runNextPolling(2e3)}})}_runNextPolling(e){this.isRunning()&&(-1<this._timeoutID&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),e))}stop(){console.log(this._name+".stop timerID:"+this._timeoutID),-1<this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class e{constructor(e){this._maxLength=e,this._map=new Map}set(e){var t;if(this._map.size>=this._maxLength){let e=(null==(t=this._map.entries().next().value)?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()}}let m=e=>e===c.GROUP_TIPS_HAS_NO_ROAMING||e===c.GROUP_TIPS_HAS_ROAMING,d=e=>e===c.GROUP_SYSTEM_MESSAGE;function M(h){var e,t,s,n,o,i,r,a=function(){var{E:e,MCT:t,MR:s,MP:n,MTS:o,GId:i,MS:r,CCD:a,F_Account:l,IsSys:u,GInf:g,MsgBody:p}=h,c=_(h,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:e,MsgClientTime:t,MsgRandom:s,MsgPriority:n,MsgTimeStamp:o,ToGroupId:i,MsgSeq:r,CloudCustomData:a,From_Account:l,IsSystemMsg:u,GroupInfo:function(e){var e=e||{},{GN:t,GT:s,F_Hd:n,F_NN:o,F_Ll:i}=e,e=_(e,["GN","GT","F_Hd","F_NN","F_Ll"]),t=Object.assign({GroupName:t,GroupType:s},e);return n&&(t.From_AccountHeadurl=n),o&&(t.From_AccountNick=o),i&&(t.From_AccountLevel=i),t}(g),MsgBody:function(e){let t=e,s=(t=Array.isArray(e)?t:[e]).map(e=>{var{O_Account:t,Opt:s,L_Account:n,RT:o,UDF:i,OpInf:r,OnlineInf:a,MsgMemberExtraInfo:l}=e,e=_(e,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),t=Object.assign({Operator_Account:t,OpType:s,List_Account:n,ReportType:o,UserDefinedField:i},e);return r&&(t.MsgOperatorMemberExtraInfo=function(){var{Img:e,NN:t}=r,s=_(r,["Img","NN"]);return Object.assign({ImageUrl:e,NickName:t},s)}()),l&&(t.MsgMemberExtraInfo=null==l?void 0:l.map(e=>{var{Img:t,NN:s}=e,e=_(e,["Img","NN"]);return Object.assign({ImageUrl:t,NickName:s},e)})),a&&(t.OnlineMemberInfo=function(){var{ET:e,Num:t}=a;return{ExpireTime:e,OnlineMemberNum:t}}()),t});return Array.isArray(e)?s:s[0]}(p)},c)}(),l=a,u=l["Event"];if((m(u)||d(u))&&(l.From_Account=l.From_Account||"@TIM#SYSTEM"),u===c.BROADCAST_MESSAGE||u===c.NORMAL_MESSAGE){var g=l;let s=p["core"]["OuterConstant"];g.CloudCustomData=g.CloudCustomData||"",g.MsgBody=g.MsgBody.map(e=>{var t;return e.MsgType===s.MSG_CUSTOM&&({content:t={}}=e,e.content=Object.assign({Data:"",Desc:"",Ext:""},t)),e})}return m(u)&&({GroupJoinType:e,MsgOperatorMemberExtraInfo:t={},MsgMemberExtraInfo:s,Operator_Account:n,List_Account:o,OpType:i}=(g=l).MsgBody||{},"number"==typeof e||1!==i&&2!==i||(g.MsgBody.GroupJoinType=2===i?0:1),s||(g.MsgBody.MsgMemberExtraInfo=null==o?void 0:o.map(e=>({UserId:e}))),1!==i||s||(g.MsgBody.MsgMemberExtraInfo=[{UserId:t.UserId}]),g.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:n,ImageUrl:"",NickName:""},t)),d(u)&&({MsgOperatorMemberExtraInfo:e={},Operator_Account:o}=(r=l).MsgBody||{},r.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:o,ImageUrl:"",NickName:""},e),r.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*r.MsgTimeStamp},r.MsgBody),r.MsgBody=Object.keys(r.MsgBody).filter(e=>"MsgOperatorMemberExtraInfo"!==e).reduce((e,t)=>Object.assign(Object.assign({},e),{[t]:r.MsgBody[t]}),{})),a}var u=new class{constructor(){this._name="MessageParser",this._sequenceList=new e(200),this._messageIDList=new e(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(e,t){this._core=e,this._avChatRoomHandler=t}onMessageReceived(o,e,i=!1){this._sortServerMessageList({groupID:o,serverMessageList:e,isHistoryMessage:i});var r=this._handleMessageList(o,e);if(0!==r.length){if(!i){let{appStore:{conversationStore:e},OuterConstant:{CONV_GROUP:t}}=this._core,s=(e=>{var{common:{getMessagePreviewText:t}}=p["core"];return{lastTime:(null==e?void 0:e.time)||(null==e?void 0:e.lastTime)||0,lastSequence:(null==e?void 0:e.sequence)||(null==e?void 0:e.lastSequence)||0,fromAccount:(null==e?void 0:e.from)||(null==e?void 0:e.fromAccount)||"",messageForShow:t(null==e?void 0:e.type,null==e?void 0:e.payload),payload:(null==e?void 0:e.payload)||null,type:(null==e?void 0:e.type)||"",isRevoked:(null==e?void 0:e.isRevoked)||!1,cloudCustomData:(null==e?void 0:e.cloudCustomData)||"",onlineOnlyFlag:(null==e?void 0:e._onlineOnlyFlag)||!1,nick:(null==e?void 0:e.nick)||"",nameCard:(null==e?void 0:e.nameCard)||"",version:(null==e?void 0:e.version)||0,isPeerRead:(null==e?void 0:e.isPeerRead)||!1,revoker:(null==e?void 0:e.revoker)||null}})(r[r.length-1]);e.updateConversation(""+t+o,{lastMessage:s})}this._checkMessageStacked(r);let e=r.filter(e=>!0===e.isModified),t=r.filter(e=>!1===e.isModified),{MESSAGE_RECEIVED:s,MESSAGE_MODIFIED:n}=this._core["OuterEvent"];0<e.length&&this._emitEvent({name:n,data:e}),0<t.length&&this._emitEvent({name:s,data:t})}}_sortServerMessageList(e){var{groupID:e,serverMessageList:t,isHistoryMessage:s}=e;let n=[];n=this._avChatRoomHandler.isPollingSimplifiedMessage()&&!s?(t.sort((e,t)=>e.MS-t.MS),t.map(e=>e.MS)):(t.sort((e,t)=>e.MsgSeq-t.MsgSeq),t.map(e=>e.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${e} count:${n.length} sequenceList:`+n),n.length=0}_handleMessageList(s,n){var o,i,{messageDataHandler:r,messageHelper:a}=this._core["message"],l=this._avChatRoomHandler.isPollingSimplifiedMessage(),u=[],e=n.length;for(let t=0;t<e;t++){let e=n[t];if(l&&(e=M(e)),d(e.Event)&&Object.values(h).includes(e.MsgBody.ReportType)){this._onGroupDismissed(s);break}null!==this._filterMessageItem(e)&&(this._patchMessageType(e),o=a.parseServerGroupMessage(e),(i=this._createMessage(o)).level=e.GroupInfo.From_AccountLevel,m(e.Event)&&this._avChatRoomHandler.isGroupAttributesUpdated(o)?this._avChatRoomHandler.handleGroupAttributesUpdated(o):null===this._filterDuplicateMessage(i)||r.isMessageSentByCurrentInstance(i)||(1===o.isModified&&(i.isModified=!0),m(e.Event)&&this._updateLocalOnlineMemberCountFromTips(e),u.push(i)))}return u}_patchMessageType(e){var t=this._core["OuterConstant"];m(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_TIP),d(e.Event)&&(e.MsgBody.MsgType=t.MSG_GRP_SYS_NOTICE)}_filterMessageItem(e){var t=e["Event"];return Object.values(c).includes(t)?t===c.MESSAGE_REVOKED?(this._handleMessageRevoked(e),null):t===c.LIVE_CUSTOM_DATA?(this._onLiveCustomData(e),null):t===c.MESSAGE_REACTION?null:e:(console.warn(this._name+".onMessageReceived unknown event:"+t),null)}_createMessage(e){var{message:{messageFactory:t},OuterConstant:s}=this._core;let n=s.CONV_GROUP;e.event===c.GROUP_SYSTEM_MESSAGE&&(n=s.CONV_SYSTEM);s=!!e.isSystemMessage,t=t.createMessage(Object.assign(Object.assign({},e),{conversationType:n,isSystemMessage:s,flow:"in"}));return t.setElement(e.elements),t}_filterDuplicateMessage(e){var t=this._core["common"];if(!t.isUnlimitedAVChatRoom()){if(this._sequenceList.has(e.sequence))return null;this._sequenceList.set(e.sequence)}t=this._messageIDList.has(e.ID);return t?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${e.ID} has:`+t),null):(this._messageIDList.set(e.ID),e)}_handleMessageRevoked(e){let{OuterConstant:o,OuterEvent:{MESSAGE_REVOKED:t}}=this._core,{ToGroupId:i,MsgBody:{RevokeMsgList:s},RevokerInfo:{Revoker_Account:r,Reason:a=""}}=e,l=[];s.forEach(e=>{var{TinyId:e,MsgClientTime:t,Random:s,MsgSeq:n}=e,e={conversationID:""+o.CONV_GROUP+i,ID:e+`-${t}-`+s,revoker:r,revokeReason:a,revokerInfo:{userID:r,nick:"",avatar:""},sequence:n};l.push(e)}),0!==l.length&&this._emitEvent({name:t,data:l})}_onLiveCustomData(e){var t=this._core["OuterEvent"]["ROOM_CUSTOM_DATA_RECEIVED"],{ToGroupId:e,MsgSeq:s,MsgTimeStamp:n,MsgBody:o}=e,o=(null==o?void 0:o.Content)||(null==o?void 0:o.MsgContent)||"";this._emitEvent({name:t,data:o}),console.log(this._name+`._onLiveCustomData groupID:${e} sequence:${s} time:${n} data:`+o)}_onGroupDismissed(e){this._avChatRoomHandler.reset(e)}_checkMessageStacked(e){var t=e["length"];if(100<=t&&this._reportMessageStackedCount<5){let 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(s){var{message:{messageHelper:n},OuterEvent:{MESSAGE_RECEIVED:e}}=this._core,o=this._avChatRoomHandler.isPollingSimplifiedMessage(),i=[],r=s.length;for(let t=0;t<r;t++){let e=s[t];o&&(e=M(e));var a=n.parseServerGroupMessage(e);Object.values(c).includes(e.Event)?((a=this._createMessage(a)).isBroadcastMessage=!0,this._broadcastMessageIDMap.has(a.ID)||(i.push(a),this._broadcastMessageIDMap.set(a.ID,1))):console.warn(this._name+".onBroadcastMessageReceived unknown event:"+e.Event)}0<i.length&&this._emitEvent({name:e,data:i})}_updateLocalOnlineMemberCountFromTips(t){var s=this._core["utils"]["isEmpty"],{ToGroupId:t,MsgBody:{OnlineMemberInfo:n}}=t;if(!s(n)){var{OnlineMemberNum:n=0,ExpireTime:o=60}=n,i=Date.now();let e=this._avChatRoomHandler.getLocalOnlineMemberCount(t);s(e)?e={lastReqTime:0,lastSyncTime:0,latestUpdateTime:i,memberCount:n,expireTime:o}:(e.latestUpdateTime=i,e.memberCount=n),this._avChatRoomHandler.updateLocalOnlineMemberCount(t,e)}}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};let r=e=>{var{store:t}=p["core"];return(t.get("cloudConfig")||{})[e]},a=e=>{var{utils:{isUndefined:t}}=p["core"];return!t(e)},l=()=>{var e=r("polling_interval");return a(e)?parseInt(e,10):300},n=()=>{var e=r("polling_simplified_msg");return a(e)?parseInt(e,10):0};var v=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,u.init(e,this),e.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(e){var t=this._core["OuterConstant"]["GRP_AVCHATROOM"],{GroupTips:s=[]}=e;for(let e=0;e<s.length;e++){var{MsgBody:n,GroupInfo:{GroupId:o,GroupType:i}}=s[e],n=Object.values(h).includes(n.ReportType);i===t&&n&&this.reset(o)}}getCurrentPollingInterval(e){return this._pollingIntervalMap.get(e)||l()}isPollingSimplifiedMessage(){return 0!==n()}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(){let{GRP_LIVE:t}=this._core["OuterConstant"],e=[];return e=0<this._joinedGroupMap.size?[...this._joinedGroupMap.values()].filter(e=>e.type===t):e}handleJoinGroupResult(l){return g(this,void 0,void 0,function*(){var{utils:{isUndefined:e},OuterConstant:{CONV_GROUP:t},apiMap:{getConversationProfile:s},OuterConstant:n}=this._core,{longPollingKey:o,group:i,historyMessageList:r=[]}=l,a=i["groupID"];return yield this._preCheck(i),this._joinedGroupMap.set(a,i),this._parentPlugin.groupDataHandler.updateLocalGroup([i]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),s(""+t+a),0<r.length&&u.onMessageReceived(a,r,!0),e(o)?{code:0,data:{status:n.JOIN_STATUS_SUCCESS,group:i}}:{code:0,data:this.startMessageLongPolling(l)}})}_preCheck(i){return g(this,void 0,void 0,function*(){var{common:t,OuterConstant:e,helper:s,apiMap:{quitGroup:n},ssoLog:o}=this._core;if(t.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(t=r("polling_count_limit"),a(t)&&0<t?parseInt(t,10):20))throw new s.ChatError({code:2688,message:"the count of longPolling exceeds the max limit"})}else if(0!==this._joinedAVChatRoomCount()&&i.type!==e.GRP_LIVE){var[t,s]=this._joinedGroupMap.entries().next().value;if(s.selfInfo.role===e.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(t);else try{yield n(t)}catch(e){o.debug("quitGroup",this._name+`._preCheck quitGroup failed, groupID:${t} info:`,e)}this.reset(t)}})}startMessageLongPolling(e){var t=this._core["OuterConstant"],{longPollingKey:e,startSequence:s=1,group:n}=e,o=n["groupID"];return this._pollingRequestInfoMap.set(o,{longPollingKey:e,startSequence:s}),this._pollingIntervalMap.set(o,l()),this._startPolling(o),this._reportLongPollingCount(),{status:t.JOIN_STATUS_SUCCESS,group:n}}_startPolling(t){if(this._core.ssoLog.debug("_startPolling",this._name+"._startPolling groupID:"+t),this._pollingInstanceMap.has(t)){let e=this._pollingInstanceMap.get(t);void((null==e?void 0:e.isRunning())||null==e||e.start())}else{let e=new s({core:this._core,manager:this,groupID:t,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});e.start(),this._pollingInstanceMap.set(t,e)}}_handleRequestParams(e){var{longPollingKey:t,startSequence:s}=this._pollingRequestInfoMap.get(e)||{};return e===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:t,startSequence:s,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:n()}:{longPollingKey:t,startSequence:s,simplifiedMessage:n()}}_handleSuccess(s,e){var n=e["ErrorCode"];if(0!==n){let{longPollingKey:e,startSequence:t}=this._pollingRequestInfoMap.get(s)||{};void console.warn(`${this._name}._handleSuccess groupID:${s} key:${e} startSeq:${t} errorCode:`+n)}else this._hasJoinedAVChatRoom(s)&&this._handleResponseData(s,e)}_handleResponseData(t,e){var{Key:e,NextSeq:s,NextBroadcastSeq:n,RspMsgList:o=[],RspBroadcastMsgList:i=[]}=e;if(e&&s&&this._pollingRequestInfoMap.set(t,{longPollingKey:e,startSequence:s}),n&&n>this._startBroadcastSequence&&(this._startBroadcastSequence=n),0<o.length)0!==this._getPollingNoMessageCount(t)&&(this._updatePollingNoMessageCount(t,0),this._pollingIntervalMap.set(t,l())),u.onMessageReceived(t,o);else{e=this._getPollingNoMessageCount(t);if(this._updatePollingNoMessageCount(t,e+=1),e===(s=r("polling_no_msg_count"),a(s)?parseInt(s,10):20)){let e=l()+(n=r("polling_interval_plus"),a(n)?parseInt(n,10):2e3);this._pollingIntervalMap.set(t,e)}}0<i.length&&u.onBroadcastMessageReceived(i)}_handleFailure(e,t){var{ssoLog:s,utils:{safeStringify:n}}=this._core;s.warn("polling",this._name+`._handleFailure groupID:${e} error: `+n(t))}_joinedAVChatRoomCount(){let t=this._core["OuterConstant"],e=[];return(e=0<this._joinedGroupMap.size?this.getJoinedGroups().filter(e=>e.type===t.GRP_AVCHATROOM):e).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){u.onMessageReceived(e,t,!0)}isOverFrequencyLimit(e){var t,s,n,o;return!this._membersReqInfoMap.has(e)||({startTime:t,requestCount:s}=this._membersReqInfoMap.get(e),{interval:n,count:o}=(()=>{var e=r("av_members_freq_limit");if(a(e)){var{interval:e,count:t}=JSON.parse(e);if(0<t&&0<e)return{interval:e,count:t}}return{interval:30,count:4}})(),Date.now()-t>1e3*n)?(this._membersReqInfoMap.set(e,{startTime:Date.now(),requestCount:1}),!1):(this._membersReqInfoMap.set(e,{startTime:t,requestCount:s+=1}),o<s)}_stopPolling(e){var t,s;if(this._core.ssoLog.debug("_stopPolling",this._name+"._stopPolling groupID:"+e),e)({appStore:{conversationStore:s},OuterConstant:{CONV_GROUP:t}}=this._core),s.deleteConversation(""+t+e),null!=(s=this._pollingInstanceMap.get(e))&&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),this._membersReqInfoMap.delete(e);else{for(let 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(){var r=this._joinedGroupMap.size;if(1<r){let{common:e,OuterConstant:s,ssoLog:t}=this._core,n=e.isUnlimitedAVChatRoom()?1:0,o=[],i=[];this._joinedGroupMap.values().forEach(({groupID:e,type:t})=>{(t===s.GRP_LIVE?i:o).push(e)}),t.info("longPollingCount",String(r),{moreMessage:`av:${o.join(",")} live:${i.join(",")} code: `+n,eventType:29})}}reset(e){this._stopPolling(e),this._startBroadcastSequence=1,u.reset()}},o=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"joinGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}joinGroup(o){return g(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.joinGroup(o),{status:s,group:{type:n}}=t["data"];return n!==e.GRP_AVCHATROOM||s===e.JOIN_STATUS_ALREADY_IN_GROUP?t:v.handleJoinGroupResult(t.data)})}},i=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"quitGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}quitGroup(n){return g(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.quitGroup(n),{type:s}=t["data"];return s===e.GRP_AVCHATROOM&&v.reset(n),t})}},I=new class{init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"dismissGroup",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}dismissGroup(n){return g(this,void 0,void 0,function*(){var e=this._core["OuterConstant"],t=yield this._parentPlugin.groupAction.dismissGroup(n),{type:s}=t["data"];return s===e.GRP_AVCHATROOM&&v.reset(n),t})}},f=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupMemberList(o){return g(this,void 0,void 0,function*(){var{appStore:{groupStore:e},helper:t,OuterConstant:s}=this._core,n=o["groupID"],e=e.getGroup(n);if((null==e?void 0:e.type)===s.GRP_AVCHATROOM&&t.checkBusinessCapabilityBits("AV_MBR_LIST")){if(v.isOverFrequencyLimit(n))throw{code:2996,message:"Over frequency limit: get_members-"+n};return this._getGroupMemberList(o)}return this._parentPlugin.groupMember.getGroupMemberList(o)})}_getGroupMemberList(i){return g(this,void 0,void 0,function*(){let o="_getGroupMemberList",s=this._core["helper"];try{let e=yield function(s,n){return g(this,void 0,void 0,function*(){var{groupID:e,offset:t=0}=s;return n.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:{GroupId:e,Timestamp:t}})})}(i,this._core),{MemberList:t=[],NextTimestamp:s=0}=e||{},n=this._handleMemberList(t);return console.log(`${this._name}.${o} ok, groupID:${i.groupID} count:${n.length} nextOffset:`+s),{code:0,data:{memberList:n,offset:s}}}catch(e){let t=new s.ChatError({functionName:o,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(this._name+`.${o} fail:`,t),t}})}_handleMemberList(e){return e.map(e=>{var{Member_Account:e,NickName:t="",Avatar:s="",Remark:n="",JoinTime:o=0,Marks:i=[]}=e;return{userID:e,nick:t,avatar:s,remark:n,joinTime:o,marks:i,isOnline:!0}})}},S=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}getGroupOnlineMemberCount(s){return g(this,void 0,void 0,function*(){var{appStore:{groupStore:e},OuterConstant:t}=this._core,e=e.getGroup(s);return e?e.type===t.GRP_AVCHATROOM?this._getOnlineMemberCount(s):this._parentPlugin.groupAction.getGroupOnlineMemberCount(s):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(n){return g(this,void 0,void 0,function*(){let t="_getOnlineMemberCount",{isEmpty:e}=this._core["utils"],s=v.getLocalOnlineMemberCount(n);if(e(s)||this._isExpired(n)){let{memberCount:e=0}=yield this._getOnlineMemberCountFromServer(n);return console.log(`${this._name}.${t} ok, groupID:${n} memberCount:${e} from server.`),{code:0,data:{memberCount:e}}}return console.log(`${this._name}.${t} ok, groupID:${n} memberCount:${s.memberCount} from local.`),{code:0,data:{memberCount:s.memberCount}}})}_isExpired(e){var e=v.getLocalOnlineMemberCount(e),t=Date.now(),s=t-e.lastSyncTime>1e3*e.expireTime,n=1e4<t-e.latestUpdateTime,t=3e3<t-e.lastReqTime;return s&&n&&t}_getOnlineMemberCountFromServer(i){return g(this,void 0,void 0,function*(){let s="_getOnlineMemberCountFromServer";try{let e=yield function(e,t){return g(this,void 0,void 0,function*(){return t.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:{GroupId:e}})})}(i,this._core),{OnlineMemberNum:t=0,ExpireTime:s=60}=e||{},n=Date.now(),o={lastSyncTime:n,latestUpdateTime:n,lastReqTime:n,memberCount:t,expireTime:s};return v.updateLocalOnlineMemberCount(i,o),{memberCount:t}}catch(e){let t=new this._core.helper.ChatError({functionName:s,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo});throw console.error(`${this._name}.${s} fail:`,t),t}})}},C=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(e,t){this._core=e,this._parentPlugin=t;e=e.helper;e.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>0<t.getInstalledSubPlugins().length})}deleteGroupMember(r){return g(this,void 0,void 0,function*(){var e="deleteGroupMember",{appStore:{groupStore:t},utils:{isUndefined:s},helper:n,OuterConstant:o}=this._core,i=r["groupID"],t=t.getGroup(i);if(s(t))throw new n.ChatError({functionName:e,code:2603});if(t.type!==o.GRP_AVCHATROOM)return this._parentPlugin.groupMember.deleteGroupMember(r);if(n.checkBusinessCapabilityBits("AV_BAN_MBR"))return this._deleteGroupMember(r);throw new n.ChatError({functionName:e,code:3122})})}_deleteGroupMember(a){return g(this,void 0,void 0,function*(){var t="_deleteGroupMember",{appStore:{groupStore:e},helper:s,ssoLog:n}=this._core,{groupID:o,duration:i=0,userIDList:r}=a;if(0===i)throw new s.ChatError({functionName:t,code:2686});try{return yield function(o,i){return g(this,void 0,void 0,function*(){var{groupID:e,userIDList:t,duration:s,reason:n}=o;return i.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:{GroupId:e,Members_Account:t,Duration:s,Description:n}})})}(a,this._core),n.debug(t,this._name+`.${t} ok, groupID:`+o),{code:0,data:{group:e.getGroup(o),userIDList:r}}}catch(e){throw new s.ChatError({functionName:t,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}},b=new class{constructor(){this._name="MarkAVChatRoomMember"}init(e){e=(this._core=e).helper;e.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(e){return g(this,void 0,void 0,function*(){var o="markGroupMemberList",{groupID:i,markType:r,enableMark:a,userIDList:l=[]}=e,u=this._generateRequestData(e);try{let e=yield function(n,o){return g(this,void 0,void 0,function*(){var{groupID:e,operationType:t,memberList:s}=n;return o.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:{GroupId:e,CommandType:t,MemberList:s}})})}(u,this._core),{MemberList:t=[]}=e||{},{successUserIDList:s,failureUserIDList:n}=this._handleResult(t,l);return{code:0,data:{successUserIDList:s,failureUserIDList:n},successLog:{message:`${this._name}.${o} ok, groupID:${i} markType:${r} enableMark:${a} success:${s.length} fail:`+n.length}}}catch(e){throw new this._core.helper.ChatError({functionName:o,code:null==e?void 0:e.errorCode,message:null==e?void 0:e.errorInfo})}})}_generateRequestData(e){let{groupID:t,markType:s,enableMark:n,userIDList:o=[]}=e,i=!0===n?1:2,r=[...o];return 500<r.length&&console.warn(this._name+"._generateRequestData, the length of userIDList cannot exceed 500"),{groupID:t,operationType:i,memberList:r.map(e=>({Member_Account:e,Marks:[s]}))}}_handleResult(e,t){let s=[],n=[];return e.length===t.length?s.push(...t):t.forEach(t=>{(e.find(e=>e.Member_Account===t)?s:n).push(t)}),{successUserIDList:s,failureUserIDList:n}}},O=new class{init(e,t){e.ssoLog.debug("AVChatRoomAction.init"),o.init(e,t),i.init(e,t),I.init(e,t),f.init(e,t),S.init(e,t),C.init(e,t),b.init(e)}},R=new class{constructor(){this._name="LiveHandler"}init(e){var{helper:e,ssoLog:t}=this._core=e;e.registerExperimentalAPI("startMessageLongPolling",this),e.registerExperimentalAPI("stopMessageLongPolling",this),t.debug("LiveHandler.init")}startMessageLongPolling(e){var{common:t,utils:{isEmpty:s},OuterConstant:n,ssoLog:o}=this._core,{groupID:e,longPollingKey:i,longPollingSequence:r=1}=e;if(s(i))return o.warn("startMessageLongPolling",this._name+".startMessageLongPolling longPollingKey is empty."),Promise.resolve({});v.hasPollingInstance(e)&&this.stopMessageLongPolling({groupID:e});s=v.getJoinedLiveList(),t=t.isUnlimitedAVChatRoom(),!t&&0<s.length&&this.stopMessageLongPolling({groupID:s[0].groupID}),o.debug("startMessageLongPolling",this._name+`.startMessageLongPolling isUnlimited:${t} groupID:${e} longPollingKey:${i} longPollingSequence:`+r),s={groupID:e,type:n.GRP_LIVE};return v.updateLocalLiveGroup(e,s),this._getLiveHistoryMessages({groupID:e,longPollingKey:i,startSequence:r}),v.startMessageLongPolling({group:s,longPollingKey:i,startSequence:r})}stopMessageLongPolling(e){e=e.groupID;return v.reset(e),this._core.ssoLog.debug("stopMessageLongPolling",this._name+".stopMessageLongPolling ok, groupID:"+e),Promise.resolve({groupID:e})}_getLiveHistoryMessages(o){return g(this,void 0,void 0,function*(){var t=this._core["ssoLog"],s=o["groupID"];try{var e=yield function(n,o){return g(this,void 0,void 0,function*(){var{groupID:e,longPollingKey:t,startSequence:s}=n;return o.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:{GroupId:e,LongPollingKey:t,PullPreSeq:s}})})}(o,this._core),{RspMsgList:n=[]}=e||{};t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages ok, groupID:${s} count:`+n.length),0<n.length&&v.handleLiveHistoryMessages(s,n)}catch(e){t.debug("_getLiveHistoryMessages",this._name+`._getLiveHistoryMessages failed, groupID:${s} info:`+e.message)}})}};return new class{constructor(){this.name="AVChatRoom"}install(e,t){this._core=e,p.init(e),v.init(e,t),O.init(e,t),R.init(e);var{notificationCenter:t,InnerEvent:e}=e,s=t["InnerEventSubType"];t.subscribeInnerEvent(e.MESSAGE_PUSH,s.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),t.subscribeInnerEvent(e.LOGOUT,this._reset,this),t.subscribeInnerEvent(e.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(e){v.onAVChatRoomSystemNotification(e)}_reset(){v.reset()}_dispose(){this._reset();var{notificationCenter:e,InnerEvent:t}=this._core,s=e["InnerEventSubType"];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)}}});
@@ -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,e){this._conversationGroupMap.set(t,e)}};function o(t,s,i,c){return new(i=i||Promise)(function(o,e){function r(t){try{a(c.next(t))}catch(t){e(t)}}function n(t){try{a(c.throw(t))}catch(t){e(t)}}function a(t){var e;t.done?o(t.value):((e=t.value)instanceof i?e:new i(function(t){t(e)})).then(r,n)}a((c=c.apply(t,s||[])).next())})}let 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){var{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 _(){var{notificationCenter:o,OuterEvent:r}=e.core;o.emitOuterEvent(r.CONVERSATION_GROUP_LIST_UPDATED,{name:r.CONVERSATION_GROUP_LIST_UPDATED,data:[...t.getConversationGroupMap().values()]})}function g(t){var{utils:{isUndefined:o},constants:{OuterConstant:r}}=e.core,{Type:t,To_Account:n,GroupId:s,ToGroupId:s=s,Peer_Account:c}=t;let u="";return t===a?o(c)?o(n)||(u=""+r.CONV_C2C+n):u=""+r.CONV_C2C+c:t===i&&(u=""+r.CONV_GROUP+s),u}function D(t){let o=[],{OuterConstant:r,common:{isC2CConv:n,isGroupConv:s}}=e.core,{conversationIDList:c,failureConversationIDList:u,additionalData:p={}}=t;return c.forEach(t=>{N(t,u),n(t)?o.push(Object.assign({ContactItem:{Type:a,To_Account:t.replace(r.CONV_C2C,"")}},p)):s(t)&&o.push(Object.assign({ContactItem:{Type:i,ToGroupId:t.replace(r.CONV_GROUP,"")}},p))}),o}function N(t,o){var{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(o){var{isString:t}=e.core["utils"],r=[];if(t(o)){var n=o.length;if(0!==n)for(let t=n-1;0<=t;t--)"1"===o[t]&&r.push(Math.pow(2,n-t-1))}return r}function E(a){null!=a&&a.forEach((t,o)=>{var r=e.core["appStore"],{conversationID:t,data:n}=t,o=o===a.length-1;r.conversationStore.updateConversation(t,n,{emit:o})})}function O(t){var{conversationInfoList:t,fromAccount:o}=t,o={From_Account:o,MarkItem:t};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.mark_contact",data:o})}function S(t){var{fromAccount:t,groupName:o,conversationInfoList:r}=t,t={From_Account:t,UpdateType:1,UpdateGroup:{UpdateGroupType:I,OldGroupName:o,ContactUpdateItem:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:t})}var R=new class{init(t){var{registerApi:e}=t["helper"];this._core=t,e({apiName:"createConversationGroup",context:this})}createConversationGroup(n){return o(this,void 0,void 0,function*(){let{utils:{isPlainObject:s,isArray:i},appStore:c}=this._core,{groupName:u,conversationIDList:o}=(G("createConversationGroup"),n),p=[],r=this._generateConversationInfo(o,p);if(p.length===o.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:p}};try{let a=yield function(t){var{buildAndSendPacket:o,getCurrentUserID:r}=e.core["common"],{item:t,groupName:n}=t;return o({servcmd:"recentcontact.create_contact_group",data:{From_Account:r(),GroupContactItem:[{GroupName:n,ContactItem:t}]}})}({groupName:u,item:r});if(a){let{GroupResultItem:e=[]}=a,{GroupItem:r,ResultItem:o}=(null==e?void 0:e[0])||{},n=[];if(s(r)){let{GroupName:e,GroupId:o}=r;t.setConversationGroup(o,e),_()}if(i(o)){let a=[];o.forEach(t=>{let{ContactItem:e,ResultCode:o,ResultInfo:r}=t,n=g(e);if(0===o){let e=c.conversationStore.getConversation(n);if(e&&!e.conversationGroupList.includes(u)){let t=e.conversationGroupList.slice();t.push(u),a.push({conversationID:n,data:{conversationGroupList:t}})}}else p.push({conversationID:n,code:o,message:r})}),0<a.length&&(E(a),_())}return{code:0,data:{successConversationIDList:n,failureConversationIDList:p}}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"createConversationGroup",code:e,message:o})}})}_generateConversationInfo(t,e,o={}){let r=[],{OuterConstant:n,common:{isC2CConv:s,isGroupConv:c}}=this._core;return t.forEach(t=>{N(t,e),s(t)?r.push(Object.assign({Type:a,To_Account:t.replace(n.CONV_C2C,"")},o)):c(t)&&r.push(Object.assign({Type:i,ToGroupId:t.replace(n.CONV_GROUP,"")},o))}),r}},A=new class{constructor(){this._fetchConversationGroupStatus=c}init(t){var{helper:{registerApi:e,registerWorkflowStep:o},constants:{WORKFLOW_NAME:r,WORKFLOW_STEP:n}}=t;this._core=t,e({apiName:"getConversationGroupList",context:this}),o(r.SYNC_SERVER_INFO_AFTER_LOGIN,n.CONVERSATION_GROUP_LIST_SYNC,this._syncConversationGroupList,this),o(r.SYNC_SERVER_INFO_AFTER_LOGIN,n.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(r){return o(this,arguments,void 0,function*(n,s=[]){let{common:{getCurrentUserID:o},utils:{isArray:i}}=this._core;this._fetchConversationGroupStatus=u;try{let r=o(),a=yield function(){var{fromAccount:t,startIndex:o}={fromAccount:r,startIndex:n},t={From_Account:t,StartIndex:o};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.get_contact_group",data:t})}();if(a){let{CompleteFlag:e,ContactItem:o=[],NextStartIndex:r=0,GroupItem:n=[]}=a;return(i(n)&&n.forEach(e=>{var{GroupName:e,GroupId:o}=e;t.setConversationGroup(o,e)}),s.push(...o),e===v)?this._fetchConversationGroupList(r):e===l?(this._fetchConversationGroupStatus=p,s):void 0}}catch(t){this._fetchConversationGroupStatus=d,console.error(t)}})}_updateConversation(t){var e=this._core["constants"]["WORKFLOW_STEP"],t=(null==(t=null==t?void 0:t.result)?void 0:t[e.CONVERSATION_GROUP_LIST_SYNC])||[];E(this._generateConversationUpdateFields(t)),_()}_generateConversationUpdateFields(e){let{utils:{isArray:i},appStore:c}=this._core,u=[];if(i(e)){let s;e.forEach(e=>{let o=[],{StandardMark:r,CustomMark:n="",ContactGroupId:a}=e;i(a)&&a.forEach(e=>{t.getConversationGroupMap().has(e)&&o.push(t.getConversationGroup(e))});e=g(e);(s=c.conversationStore.getConversation(e))&&u.push({conversationID:e,data:{markList:L(r),customData:n,conversationGroupList:[...o]}})})}return u}reset(){this._fetchConversationGroupStatus=c}dispose(){this.reset()}},T=new class{init(t){var{notificationCenter:e,helper:{registerApi:o},InnerEvent:{MESSAGE_PUSH:r},InnerEventSubType:{CONVERSATION_MARK_UPDATED:n,CONVERSATION_GROUP_ADD:a,CONVERSATION_GROUP_DELETED:s,CONVERSATION_GROUP_UPDATED:i}}=t;this._core=t,o({apiName:"renameConversationGroup",context:this}),o({apiName:"deleteConversationGroup",context:this}),o({apiName:"markConversation",context:this}),o({apiName:"setConversationCustomData",context:this}),o({apiName:"deleteConversationsFromGroup",context:this}),o({apiName:"addConversationsToGroup",context:this}),e.subscribeInnerEvent(r,a,this._handleConversationGroupAdd,this),e.subscribeInnerEvent(r,s,this._handleConversationGroupDeleted,this),e.subscribeInnerEvent(r,i,this._handleConversationGroupUpdated,this),e.subscribeInnerEvent(r,n,this._handleConversationMarkUpdated,this)}renameConversationGroup(r){return o(this,void 0,void 0,function*(){G("renameConversationGroup");let{getCurrentUserID:n}=this._core["common"],{oldName:a,newName:s}=r,i=`oldName:${a} newName:`+s;try{let r=yield function(){var{fromAccount:t,oldName:o,newName:r}={fromAccount:n(),oldName:a,newName:s},t={From_Account:t,UpdateType:1,UpdateGroup:{UpdateGroupType:f,OldGroupName:o,NewGroupName:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:t})}();if(r){let e=r["UpdateGroupResult"],o=e["GroupId"];t.setConversationGroup(o,s),_(),this._updateLocalConversationGroupName({oldName:a,newName:s})}return{successLog:{message:i}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"renameConversationGroup",code:e,message:o,moreMessage:i})}})}deleteConversationGroup(n){return o(this,void 0,void 0,function*(){G("deleteConversationGroup");let{getCurrentUserID:r}=this._core["common"];try{var o=yield function(){var{fromAccount:t,groupName:o}={fromAccount:r(),groupName:n},t={From_Account:t,GroupName:[o]};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.del_contact_group",data:t})}();if(o){let e=o["GroupItem"],r=!1;return null!=e&&e.forEach(e=>{var e=e["GroupId"],o=t.getConversationGroupMap();o.has(e)&&(o.delete(e),r=!0)}),r&&_(),this._deleteLocalConversationGroupName([n]),{successLog:{message:"groupName:"+n}}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationGroup",code:e,message:o,moreMessage:"groupName:"+n})}})}markConversation(v){return o(this,void 0,void 0,function*(){G("markConversation");let{utils:{isNumber:t},common:{getCurrentUserID:o},appStore:s}=this._core,{conversationIDList:e,markType:i,enableMark:c}=v,r=this._getFlagBit(i),u=[],p=[],n,a;!0===c&&t(r)?n=[r]:a=[r];var l=D({conversationIDList:e,failureConversationIDList:u,additionalData:{SetMark:n,ClearMark:a,OptType:C}});if(u.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:u}};try{let e=yield O({conversationInfoList:l,fromAccount:o()});if(e){let t=e["ResultItem"],a=[];t.forEach(t=>{let{ContactItem:e,ResultCode:o,ResultInfo:r}=t,n=g(e);if(0===o){p.push(n);let o=s.conversationStore.getConversation(n);if(o){let e=o.markList.indexOf(i),t=!1===c&&-1!==e;if(!0===c&&-1===e)a.push({conversationID:n,data:{markList:[...o.markList,i]}});else if(t){let t=o.markList.slice();t.splice(e,1),a.push({conversationID:n,data:{markList:t}})}}}else u.push({conversationID:n,code:o,message:r})}),E(a)}return{code:0,data:{successConversationIDList:p,failureConversationIDList:u}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"markConversation",code:e,message:o})}})}setConversationCustomData(r){return o(this,void 0,void 0,function*(){G("setConversationCustomData");let{common:{getCurrentUserID:t},appStore:n}=this._core,{conversationIDList:e,customData:a}=r,s=[],i=[],o=D({conversationIDList:e,failureConversationIDList:s,additionalData:{CustomMark:a,OptType:h}});if(s.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let e=yield O({fromAccount:t(),conversationInfoList:o});if(e){let t=e["ResultItem"],r=[];null!=t&&t.forEach(t=>{var{ContactItem:o,ResultCode:t,ResultInfo:e}=t;if(0===t){let t=g(o),e=(i.push(t),n.conversationStore.getConversation(t));e&&e.customData!==a&&r.push({conversationID:t,data:{customData:a}})}else s.push({conversationID:conversationID,code:t,message:e})}),E(r)}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"setConversationCustomData",code:e,message:o})}})}deleteConversationsFromGroup(n){return o(this,void 0,void 0,function*(){G("deleteConversationsFromGroup");let{common:{getCurrentUserID:t},appStore:a}=this._core,{conversationIDList:e,groupName:s}=n,o=[],i=[],r=D({conversationIDList:e,failureConversationIDList:o,additionalData:{ContactOptType:2}});if(o.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:o}};try{let e=yield S({fromAccount:t(),groupName:s,conversationInfoList:r});if(e){let n=[],{ContactResultItem:t}=e["UpdateGroupResult"];null!=t&&t.forEach(t=>{var r=g(t.ContactItem);if(0===t.ResultCode){let o=a.conversationStore.getConversation(r);if(o){let e=o.conversationGroupList.indexOf(s);if(-1!==e){let t=o.conversationGroupList.slice();t.splice(e,1),i.push(r),n.push({conversationID:r,data:{conversationGroupList:t}})}}}else o.push({conversationID:r,code:t.ResultCode,message:t.ResultInfo})}),0<n.length&&(_(),E(n))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:o}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:e,message:o})}})}addConversationsToGroup(r){return o(this,void 0,void 0,function*(){G("deleteConversationsFromGroup");let{common:{getCurrentUserID:t},appStore:n}=this._core,{conversationIDList:e,groupName:a}=r,s=[],i=[],o=D({conversationIDList:e,failureConversationIDList:s,additionalData:{ContactOptType:1}});if(s.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let e=yield S({fromAccount:t(),groupName:a,conversationInfoList:o});if(e){let r=[],{ContactResultItem:t}=e["UpdateGroupResult"];null!=t&&t.forEach(t=>{var o=g(t.ContactItem);if(0===t.ResultCode){let e=n.conversationStore.getConversation(o);if(e&&-1===e.conversationGroupList.indexOf(a)){let t=e.conversationGroupList.slice();t.push(a),i.push(o),r.push({conversationID:o,data:{conversationGroupList:t}})}}else s.push({conversationID:o,code:t.ResultCode,message:t.ResultInfo})}),0<r.length&&(_(),E(r))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:e,message:o})}})}_updateLocalConversationGroupName(t){let e=this._core["appStore"],{oldName:o,newName:r}=t,n=[],a=[],s;Array.from(e.conversationStore.getConversationMap().values()).forEach(t=>{var e;n=t.conversationGroupList,-1!==(s=n.indexOf(o))&&((e=n.slice()).splice(s,1,r),a.push({conversationID:t.conversationID,data:{conversationGroupList:e}}))}),E(a)}_deleteLocalConversationGroupName(n){var{utils:{isEmpty:t},appStore:e}=this._core;if(!t(n)){let r=[];Array.from(e.conversationStore.getConversationMap().values()).forEach(t=>{var{conversationID:t,conversationGroupList:e}=t,o=e.filter(t=>!n.includes(t));o.length<e.length&&r.push({conversationID:t,data:{conversationGroupList:o}})}),E(r)}}_getFlagBit(t){var e=t.toString(2),o=e.length;for(let t=o-1;0<=t;t--)if("1"===e[t])return o-t-1}_handleConversationGroupAdd(e){let o,{utils:{isArray:c},appStore:u}=this._core;null!=(o=null==e?void 0:e.RecentContactMod)&&o.forEach(e=>{var e=e["RecentContactCreateContactGroup"]["MsgContactGroupContactItem"];let i=!1;null!=e&&e.forEach(e=>{let{MsgGroupItem:o,MsgRecentContactItem:r}=e,{GroupId:n,GroupName:a}=o,s=[];t.getConversationGroup(n)!==a&&(t.setConversationGroup(n,a),i=!0),c(r)&&r.forEach(t=>{var e=g(t),o=u.conversationStore.getConversation(e);if(o&&(null==(t=o.conversationGroupList)||!t.includes(a))){let t=o.conversationGroupList.slice();t.push(a),s.push({conversationID:e,data:{conversationGroupList:t}})}}),i&&_(),E(s)})})}_handleConversationGroupDeleted(e){let o,{isArray:r}=this._core.utils;null!=(o=null==e?void 0:e.RecentContactMod)&&o.forEach(e=>{e=((null==e?void 0:e.RecentContactDelContactGroup)||{}).MsgGroupItem;if(r(e)){let n=!1,a=[];e.forEach(e=>{var{GroupId:e,GroupName:o}=e,r=t.getConversationGroupMap();r.has(e)&&(r.delete(e),n=!0,a.push(o))}),n&&_(),0<a.length&&this._deleteLocalConversationGroupName(a)}})}_handleConversationGroupUpdated(t){null!=(t=t.RecentContactMod)&&t.forEach(t=>{var{GroupId:t,GroupName:e,OldGroupName:o,RecentContactUpdateGroupItem:r,UpdateGroupType:n}=t["RecentContactUpdateContactGroup"]["MsgUpdateGroup"];1===n?this._handleGroupNameUpdated({groupID:t,newName:e,oldName:o}):2===n&&this._handleGroupAddOrDeleteFromConversation({groupInfoList:r,groupName:o})})}_handleConversationMarkUpdated(t){let e,a=this._core.appStore;null!=(e=null==t?void 0:t.RecentContactMod)&&e.forEach(t=>{let{RecentContactMarkContactItem:e}=t["RecentContactMarkContact"],n=[];null!=e&&e.forEach(t=>{var{RecentContactItem:t,CustomMark:e,StandardMark:o,OptType:r}=t,t=g(t),t=a.conversationStore.getConversation(t);t&&(r===C?this._updateStandMark({conversation:t,standardMark:o,updateConversationList:n}):r===h?this._updateCustomMark({conversation:t,customMark:e,updateConversationList:n}):r===m&&(this._updateStandMark({conversation:t,standardMark:o,updateConversationList:n}),this._updateCustomMark({conversation:t,customMark:e,updateConversationList:n})))}),E(n)})}_updateStandMark(t){var{conversation:t,standardMark:e,updateConversationList:o}=t,e=L(e);!function(o,r){if(o===r)return 1;if(o&&r&&o.length===r.length){o.sort(),r.sort();for(let t=0,e=o.length;t<e;t++)if(o[t]!==r[t])return;return 1}}(t.markList,e)&&o.push({conversationID:t.conversationID,data:{markList:e}})}_updateCustomMark(t){var{conversation:t,customMark:e,updateConversationList:o}=t;t.customData!==e&&void 0!==e&&(t.customData=e,o.push({conversationID:t.conversationID,data:{customData:e}}))}_handleGroupNameUpdated(e){var{groupID:e,oldName:o,newName:r}=e;t.getConversationGroup(e)!==r&&(t.setConversationGroup(e,r),_(),this._updateLocalConversationGroupName({oldName:o,newName:r}))}_handleGroupAddOrDeleteFromConversation({groupInfoList:t,groupName:a}){let s=this._core["appStore"],i=[];t.forEach(t=>{var{RecentContactItem:t,ContactOptType:e}=t,o=g(t),r=s.conversationStore.getConversation(o),n=r.conversationGroupList.indexOf(a);if(r){let t=r.conversationGroupList.slice();1===e&&-1===n?(t.push(a),i.push({conversationID:o,data:{conversationGroupList:t}})):2===e&&-1!==n&&(t.splice(n,1),i.push({conversationID:o,data:{conversationGroupList:t}}))}}),E(i)}dispose(){var{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{CONVERSATION_MARK_UPDATED:o,CONVERSATION_GROUP_ADD:r,CONVERSATION_GROUP_DELETED:n,CONVERSATION_GROUP_UPDATED:a}}=this._core;t.unSubscribeInnerEvent(e,r,this._handleConversationGroupAdd,this),t.unSubscribeInnerEvent(e,n,this._handleConversationGroupDeleted,this),t.unSubscribeInnerEvent(e,a,this._handleConversationGroupUpdated,this),t.unSubscribeInnerEvent(e,o,this._handleConversationMarkUpdated,this)}};let 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=>!(32<t.length)||"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":!(256<t.length)||"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(){var{notificationCenter:t,InnerEvent:e}=this._core;t.unSubscribeInnerEvent(e.LOGOUT,this.reset,this),t.unSubscribeInnerEvent(e.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,e){this._conversationGroupMap.set(t,e)}};function o(t,s,i,c){return new(i=i||Promise)(function(o,e){function r(t){try{a(c.next(t))}catch(t){e(t)}}function n(t){try{a(c.throw(t))}catch(t){e(t)}}function a(t){var e;t.done?o(t.value):((e=t.value)instanceof i?e:new i(function(t){t(e)})).then(r,n)}a((c=c.apply(t,s||[])).next())})}let 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){var{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 _(){var{notificationCenter:o,OuterEvent:r}=e.core;o.emitOuterEvent(r.CONVERSATION_GROUP_LIST_UPDATED,{name:r.CONVERSATION_GROUP_LIST_UPDATED,data:[...t.getConversationGroupMap().values()]})}function g(t){var{utils:{isUndefined:o},constants:{OuterConstant:r}}=e.core,{Type:n,To_Account:s,Peer_Account:c}=t;let u="";t=t.ToGroupId||t.GroupId;return n===a?o(c)?o(s)||(u=""+r.CONV_C2C+s):u=""+r.CONV_C2C+c:n===i&&(u=""+r.CONV_GROUP+t),u}function D(t){let o=[],{OuterConstant:r,common:{isC2CConv:n,isGroupConv:s}}=e.core,{conversationIDList:c,failureConversationIDList:u,additionalData:p={}}=t;return c.forEach(t=>{N(t,u),n(t)?o.push(Object.assign({ContactItem:{Type:a,To_Account:t.replace(r.CONV_C2C,"")}},p)):s(t)&&o.push(Object.assign({ContactItem:{Type:i,ToGroupId:t.replace(r.CONV_GROUP,"")}},p))}),o}function N(t,o){var{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(o){var{isString:t}=e.core["utils"],r=[];if(t(o)){var n=o.length;if(0!==n)for(let t=n-1;0<=t;t--)"1"===o[t]&&r.push(Math.pow(2,n-t-1))}return r}function E(a){null!=a&&a.forEach((t,o)=>{var r=e.core["appStore"],{conversationID:t,data:n}=t,o=o===a.length-1;r.conversationStore.updateConversation(t,n,{emit:o})})}function O(t){var{conversationInfoList:t,fromAccount:o}=t,o={From_Account:o,MarkItem:t};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.mark_contact",data:o})}function S(t){var{fromAccount:t,groupName:o,conversationInfoList:r}=t,t={From_Account:t,UpdateType:1,UpdateGroup:{UpdateGroupType:I,OldGroupName:o,ContactUpdateItem:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:t})}var R=new class{init(t){var{registerApi:e}=t["helper"];this._core=t,e({apiName:"createConversationGroup",context:this})}createConversationGroup(n){return o(this,void 0,void 0,function*(){let{utils:{isPlainObject:s,isArray:i},appStore:c}=this._core,{groupName:u,conversationIDList:o}=(G("createConversationGroup"),n),p=[],r=this._generateConversationInfo(o,p);if(p.length===o.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:p}};try{let a=yield function(t){var{buildAndSendPacket:o,getCurrentUserID:r}=e.core["common"],{item:t,groupName:n}=t;return o({servcmd:"recentcontact.create_contact_group",data:{From_Account:r(),GroupContactItem:[{GroupName:n,ContactItem:t}]}})}({groupName:u,item:r});if(a){let{GroupResultItem:e=[]}=a,{GroupItem:r,ResultItem:o}=(null==e?void 0:e[0])||{},n=[];if(s(r)){let{GroupName:e,GroupId:o}=r;t.setConversationGroup(o,e),_()}if(i(o)){let a=[];o.forEach(t=>{let{ContactItem:e,ResultCode:o,ResultInfo:r}=t,n=g(e);if(0===o){let e=c.conversationStore.getConversation(n);if(e&&!e.conversationGroupList.includes(u)){let t=e.conversationGroupList.slice();t.push(u),a.push({conversationID:n,data:{conversationGroupList:t}})}}else p.push({conversationID:n,code:o,message:r})}),0<a.length&&(E(a),_())}return{code:0,data:{successConversationIDList:n,failureConversationIDList:p}}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"createConversationGroup",code:e,message:o})}})}_generateConversationInfo(t,e,o={}){let r=[],{OuterConstant:n,common:{isC2CConv:s,isGroupConv:c}}=this._core;return t.forEach(t=>{N(t,e),s(t)?r.push(Object.assign({Type:a,To_Account:t.replace(n.CONV_C2C,"")},o)):c(t)&&r.push(Object.assign({Type:i,ToGroupId:t.replace(n.CONV_GROUP,"")},o))}),r}},A=new class{constructor(){this._fetchConversationGroupStatus=c}init(t){var{helper:{registerApi:e,registerWorkflowStep:o},constants:{WORKFLOW_NAME:r,WORKFLOW_STEP:n}}=t;this._core=t,e({apiName:"getConversationGroupList",context:this}),o(r.SYNC_SERVER_INFO_AFTER_LOGIN,n.CONVERSATION_GROUP_LIST_SYNC,this._syncConversationGroupList,this),o(r.SYNC_SERVER_INFO_AFTER_LOGIN,n.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(r){return o(this,arguments,void 0,function*(n,s=[]){let{common:{getCurrentUserID:o},utils:{isArray:i}}=this._core;this._fetchConversationGroupStatus=u;try{let r=o(),a=yield function(){var{fromAccount:t,startIndex:o}={fromAccount:r,startIndex:n},t={From_Account:t,StartIndex:o};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.get_contact_group",data:t})}();if(a){let{CompleteFlag:e,ContactItem:o=[],NextStartIndex:r=0,GroupItem:n=[]}=a;return(i(n)&&n.forEach(e=>{var{GroupName:e,GroupId:o}=e;t.setConversationGroup(o,e)}),s.push(...o),e===v)?this._fetchConversationGroupList(r):e===l?(this._fetchConversationGroupStatus=p,s):void 0}}catch(t){this._fetchConversationGroupStatus=d,console.error(t)}})}_updateConversation(t){var e=this._core["constants"]["WORKFLOW_STEP"],t=(null==(t=null==t?void 0:t.result)?void 0:t[e.CONVERSATION_GROUP_LIST_SYNC])||[];E(this._generateConversationUpdateFields(t)),_()}_generateConversationUpdateFields(e){let{utils:{isArray:i},appStore:c}=this._core,u=[];if(i(e)){let s;e.forEach(e=>{let o=[],{StandardMark:r,CustomMark:n="",ContactGroupId:a}=e;i(a)&&a.forEach(e=>{t.getConversationGroupMap().has(e)&&o.push(t.getConversationGroup(e))});e=g(e);(s=c.conversationStore.getConversation(e))&&u.push({conversationID:e,data:{markList:L(r),customData:n,conversationGroupList:[...o]}})})}return u}reset(){this._fetchConversationGroupStatus=c}dispose(){this.reset()}},T=new class{init(t){var{notificationCenter:e,helper:{registerApi:o},InnerEvent:{MESSAGE_PUSH:r},InnerEventSubType:{CONVERSATION_MARK_UPDATED:n,CONVERSATION_GROUP_ADD:a,CONVERSATION_GROUP_DELETED:s,CONVERSATION_GROUP_UPDATED:i}}=t;this._core=t,o({apiName:"renameConversationGroup",context:this}),o({apiName:"deleteConversationGroup",context:this}),o({apiName:"markConversation",context:this}),o({apiName:"setConversationCustomData",context:this}),o({apiName:"deleteConversationsFromGroup",context:this}),o({apiName:"addConversationsToGroup",context:this}),e.subscribeInnerEvent(r,a,this._handleConversationGroupAdd,this),e.subscribeInnerEvent(r,s,this._handleConversationGroupDeleted,this),e.subscribeInnerEvent(r,i,this._handleConversationGroupUpdated,this),e.subscribeInnerEvent(r,n,this._handleConversationMarkUpdated,this)}renameConversationGroup(r){return o(this,void 0,void 0,function*(){G("renameConversationGroup");let{getCurrentUserID:n}=this._core["common"],{oldName:a,newName:s}=r,i=`oldName:${a} newName:`+s;try{let r=yield function(){var{fromAccount:t,oldName:o,newName:r}={fromAccount:n(),oldName:a,newName:s},t={From_Account:t,UpdateType:1,UpdateGroup:{UpdateGroupType:f,OldGroupName:o,NewGroupName:r}};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:t})}();if(r){let e=r["UpdateGroupResult"],o=e["GroupId"];t.setConversationGroup(o,s),_(),this._updateLocalConversationGroupName({oldName:a,newName:s})}return{successLog:{message:i}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"renameConversationGroup",code:e,message:o,moreMessage:i})}})}deleteConversationGroup(n){return o(this,void 0,void 0,function*(){G("deleteConversationGroup");let{getCurrentUserID:r}=this._core["common"];try{var o=yield function(){var{fromAccount:t,groupName:o}={fromAccount:r(),groupName:n},t={From_Account:t,GroupName:[o]};return e.core.common.buildAndSendPacket({servcmd:"recentcontact.del_contact_group",data:t})}();if(o){let e=o["GroupItem"],r=!1;return null!=e&&e.forEach(e=>{var e=e["GroupId"],o=t.getConversationGroupMap();o.has(e)&&(o.delete(e),r=!0)}),r&&_(),this._deleteLocalConversationGroupName([n]),{successLog:{message:"groupName:"+n}}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationGroup",code:e,message:o,moreMessage:"groupName:"+n})}})}markConversation(v){return o(this,void 0,void 0,function*(){G("markConversation");let{utils:{isNumber:t},common:{getCurrentUserID:o},appStore:s}=this._core,{conversationIDList:e,markType:i,enableMark:c}=v,r=this._getFlagBit(i),u=[],p=[],n,a;!0===c&&t(r)?n=[r]:a=[r];var l=D({conversationIDList:e,failureConversationIDList:u,additionalData:{SetMark:n,ClearMark:a,OptType:C}});if(u.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:u}};try{let e=yield O({conversationInfoList:l,fromAccount:o()});if(e){let t=e["ResultItem"],a=[];t.forEach(t=>{let{ContactItem:e,ResultCode:o,ResultInfo:r}=t,n=g(e);if(0===o){p.push(n);let o=s.conversationStore.getConversation(n);if(o){let e=o.markList.indexOf(i),t=!1===c&&-1!==e;if(!0===c&&-1===e)a.push({conversationID:n,data:{markList:[...o.markList,i]}});else if(t){let t=o.markList.slice();t.splice(e,1),a.push({conversationID:n,data:{markList:t}})}}}else u.push({conversationID:n,code:o,message:r})}),E(a)}return{code:0,data:{successConversationIDList:p,failureConversationIDList:u}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"markConversation",code:e,message:o})}})}setConversationCustomData(r){return o(this,void 0,void 0,function*(){G("setConversationCustomData");let{common:{getCurrentUserID:t},appStore:n}=this._core,{conversationIDList:e,customData:a}=r,s=[],i=[],o=D({conversationIDList:e,failureConversationIDList:s,additionalData:{CustomMark:a,OptType:h}});if(s.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let e=yield O({fromAccount:t(),conversationInfoList:o});if(e){let t=e["ResultItem"],r=[];null!=t&&t.forEach(t=>{var{ContactItem:o,ResultCode:t,ResultInfo:e}=t;if(0===t){let t=g(o),e=(i.push(t),n.conversationStore.getConversation(t));e&&e.customData!==a&&r.push({conversationID:t,data:{customData:a}})}else s.push({conversationID:conversationID,code:t,message:e})}),E(r)}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"setConversationCustomData",code:e,message:o})}})}deleteConversationsFromGroup(n){return o(this,void 0,void 0,function*(){G("deleteConversationsFromGroup");let{common:{getCurrentUserID:t},appStore:a}=this._core,{conversationIDList:e,groupName:s}=n,o=[],i=[],r=D({conversationIDList:e,failureConversationIDList:o,additionalData:{ContactOptType:2}});if(o.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:o}};try{let e=yield S({fromAccount:t(),groupName:s,conversationInfoList:r});if(e){let n=[],{ContactResultItem:t}=e["UpdateGroupResult"];null!=t&&t.forEach(t=>{var r=g(t.ContactItem);if(0===t.ResultCode){let o=a.conversationStore.getConversation(r);if(o){let e=o.conversationGroupList.indexOf(s);if(-1!==e){let t=o.conversationGroupList.slice();t.splice(e,1),i.push(r),n.push({conversationID:r,data:{conversationGroupList:t}})}}}else o.push({conversationID:r,code:t.ResultCode,message:t.ResultInfo})}),0<n.length&&(_(),E(n))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:o}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:e,message:o})}})}addConversationsToGroup(r){return o(this,void 0,void 0,function*(){G("deleteConversationsFromGroup");let{common:{getCurrentUserID:t},appStore:n}=this._core,{conversationIDList:e,groupName:a}=r,s=[],i=[],o=D({conversationIDList:e,failureConversationIDList:s,additionalData:{ContactOptType:1}});if(s.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let e=yield S({fromAccount:t(),groupName:a,conversationInfoList:o});if(e){let r=[],{ContactResultItem:t}=e["UpdateGroupResult"];null!=t&&t.forEach(t=>{var o=g(t.ContactItem);if(0===t.ResultCode){let e=n.conversationStore.getConversation(o);if(e&&-1===e.conversationGroupList.indexOf(a)){let t=e.conversationGroupList.slice();t.push(a),i.push(o),r.push({conversationID:o,data:{conversationGroupList:t}})}}else s.push({conversationID:o,code:t.ResultCode,message:t.ResultInfo})}),0<r.length&&(_(),E(r))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(t){let{errorCode:e,errorInfo:o}=t;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:e,message:o})}})}_updateLocalConversationGroupName(t){let e=this._core["appStore"],{oldName:o,newName:r}=t,n=[],a=[],s;Array.from(e.conversationStore.getConversationMap().values()).forEach(t=>{var e;n=t.conversationGroupList,-1!==(s=n.indexOf(o))&&((e=n.slice()).splice(s,1,r),a.push({conversationID:t.conversationID,data:{conversationGroupList:e}}))}),E(a)}_deleteLocalConversationGroupName(n){var{utils:{isEmpty:t},appStore:e}=this._core;if(!t(n)){let r=[];Array.from(e.conversationStore.getConversationMap().values()).forEach(t=>{var{conversationID:t,conversationGroupList:e}=t,o=e.filter(t=>!n.includes(t));o.length<e.length&&r.push({conversationID:t,data:{conversationGroupList:o}})}),E(r)}}_getFlagBit(t){var e=t.toString(2),o=e.length;for(let t=o-1;0<=t;t--)if("1"===e[t])return o-t-1}_handleConversationGroupAdd(e){let o,{utils:{isArray:c},appStore:u}=this._core;null!=(o=null==e?void 0:e.RecentContactMod)&&o.forEach(e=>{var e=e["RecentContactCreateContactGroup"]["MsgContactGroupContactItem"];let i=!1;null!=e&&e.forEach(e=>{let{MsgGroupItem:o,MsgRecentContactItem:r}=e,{GroupId:n,GroupName:a}=o,s=[];t.getConversationGroup(n)!==a&&(t.setConversationGroup(n,a),i=!0),c(r)&&r.forEach(t=>{var e=g(t),o=u.conversationStore.getConversation(e);if(o&&(null==(t=o.conversationGroupList)||!t.includes(a))){let t=o.conversationGroupList.slice();t.push(a),s.push({conversationID:e,data:{conversationGroupList:t}})}}),i&&_(),E(s)})})}_handleConversationGroupDeleted(e){let o,{isArray:r}=this._core.utils;null!=(o=null==e?void 0:e.RecentContactMod)&&o.forEach(e=>{e=((null==e?void 0:e.RecentContactDelContactGroup)||{}).MsgGroupItem;if(r(e)){let n=!1,a=[];e.forEach(e=>{var{GroupId:e,GroupName:o}=e,r=t.getConversationGroupMap();r.has(e)&&(r.delete(e),n=!0,a.push(o))}),n&&_(),0<a.length&&this._deleteLocalConversationGroupName(a)}})}_handleConversationGroupUpdated(t){null!=(t=t.RecentContactMod)&&t.forEach(t=>{var{GroupId:t,GroupName:e,OldGroupName:o,RecentContactUpdateGroupItem:r,UpdateGroupType:n}=t["RecentContactUpdateContactGroup"]["MsgUpdateGroup"];1===n?this._handleGroupNameUpdated({groupID:t,newName:e,oldName:o}):2===n&&this._handleGroupAddOrDeleteFromConversation({groupInfoList:r,groupName:o})})}_handleConversationMarkUpdated(t){let e,a=this._core.appStore;null!=(e=null==t?void 0:t.RecentContactMod)&&e.forEach(t=>{let{RecentContactMarkContactItem:e}=t["RecentContactMarkContact"],n=[];null!=e&&e.forEach(t=>{var{RecentContactItem:t,CustomMark:e,StandardMark:o,OptType:r}=t,t=g(t),t=a.conversationStore.getConversation(t);t&&(r===C?this._updateStandMark({conversation:t,standardMark:o,updateConversationList:n}):r===h?this._updateCustomMark({conversation:t,customMark:e,updateConversationList:n}):r===m&&(this._updateStandMark({conversation:t,standardMark:o,updateConversationList:n}),this._updateCustomMark({conversation:t,customMark:e,updateConversationList:n})))}),E(n)})}_updateStandMark(t){var{conversation:t,standardMark:e,updateConversationList:o}=t,e=L(e);!function(o,r){if(o===r)return 1;if(o&&r&&o.length===r.length){o.sort(),r.sort();for(let t=0,e=o.length;t<e;t++)if(o[t]!==r[t])return;return 1}}(t.markList,e)&&o.push({conversationID:t.conversationID,data:{markList:e}})}_updateCustomMark(t){var{conversation:t,customMark:e,updateConversationList:o}=t;t.customData!==e&&void 0!==e&&(t.customData=e,o.push({conversationID:t.conversationID,data:{customData:e}}))}_handleGroupNameUpdated(e){var{groupID:e,oldName:o,newName:r}=e;t.getConversationGroup(e)!==r&&(t.setConversationGroup(e,r),_(),this._updateLocalConversationGroupName({oldName:o,newName:r}))}_handleGroupAddOrDeleteFromConversation({groupInfoList:t,groupName:a}){let s=this._core["appStore"],i=[];t.forEach(t=>{var{RecentContactItem:t,ContactOptType:e}=t,o=g(t),r=s.conversationStore.getConversation(o),n=r.conversationGroupList.indexOf(a);if(r){let t=r.conversationGroupList.slice();1===e&&-1===n?(t.push(a),i.push({conversationID:o,data:{conversationGroupList:t}})):2===e&&-1!==n&&(t.splice(n,1),i.push({conversationID:o,data:{conversationGroupList:t}}))}}),E(i)}dispose(){var{notificationCenter:t,InnerEvent:{MESSAGE_PUSH:e},InnerEventSubType:{CONVERSATION_MARK_UPDATED:o,CONVERSATION_GROUP_ADD:r,CONVERSATION_GROUP_DELETED:n,CONVERSATION_GROUP_UPDATED:a}}=this._core;t.unSubscribeInnerEvent(e,r,this._handleConversationGroupAdd,this),t.unSubscribeInnerEvent(e,n,this._handleConversationGroupDeleted,this),t.unSubscribeInnerEvent(e,a,this._handleConversationGroupUpdated,this),t.unSubscribeInnerEvent(e,o,this._handleConversationMarkUpdated,this)}};let 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=>!(32<t.length)||"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":!(256<t.length)||"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(){var{notificationCenter:t,InnerEvent:e}=this._core;t.unSubscribeInnerEvent(e.LOGOUT,this.reset,this),t.unSubscribeInnerEvent(e.DESTROY,this.dispose,this),T.dispose(),A.dispose()}reset(){A.reset()}};export{b 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)["TencentCloudChatConversation-group"]=t()}(this,function(){var p=new class{constructor(){this._conversationGroupMap=new Map}init(e){this._core=e}getConversationGroupMap(){return this._conversationGroupMap}getConversationGroup(e){return this._conversationGroupMap.get(e)}setConversationGroup(e,t){this._conversationGroupMap.set(e,t)}};function t(e,s,i,c){return new(i=i||Promise)(function(o,t){function n(e){try{a(c.next(e))}catch(e){t(e)}}function r(e){try{a(c.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?o(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(n,r)}a((c=c.apply(e,s||[])).next())})}let l=new class{init(e){this.core=e}},e="NOT_STARTED",o="FAILED";function d(e){var{helper:t,constants:o}=l.core;if(!t.checkBusinessCapabilityBits("CONV_GROUP"))throw new t.ChatError({functionName:e,code:o.ERROR_CODE.NO_USE,replacement1:e})}function v(){var{notificationCenter:e,OuterEvent:t}=l.core;e.emitOuterEvent(t.CONVERSATION_GROUP_LIST_UPDATED,{name:t.CONVERSATION_GROUP_LIST_UPDATED,data:[...p.getConversationGroupMap().values()]})}function C(e){var{utils:{isUndefined:t},constants:{OuterConstant:o}}=l.core,{Type:e,To_Account:n,GroupId:r,ToGroupId:r=r,Peer_Account:a}=e;let s="";return 1===e?t(a)?t(n)||(s=""+o.CONV_C2C+n):s=""+o.CONV_C2C+a:2===e&&(s=""+o.CONV_GROUP+r),s}function h(e){let t=[],{OuterConstant:o,common:{isC2CConv:n,isGroupConv:r}}=l.core,{conversationIDList:a,failureConversationIDList:s,additionalData:i={}}=e;return a.forEach(e=>{c(e,s),n(e)?t.push(Object.assign({ContactItem:{Type:1,To_Account:e.replace(o.CONV_C2C,"")}},i)):r(e)&&t.push(Object.assign({ContactItem:{Type:2,ToGroupId:e.replace(o.CONV_GROUP,"")}},i))}),t}function c(e,t){var{appStore:{conversationStore:o},common:{isC2CConv:n,isGroupConv:r}}=l.core;o.getConversation(e)?n(e)||r(e)||t.push({conversationID:e,code:2503}):t.push({conversationID:e,code:2500})}function u(t){var{isString:e}=l.core["utils"],o=[];if(e(t)){var n=t.length;if(0!==n)for(let e=n-1;0<=e;e--)"1"===t[e]&&o.push(Math.pow(2,n-e-1))}return o}function m(r){null!=r&&r.forEach((e,t)=>{var o=l.core["appStore"],{conversationID:e,data:n}=e,t=t===r.length-1;o.conversationStore.updateConversation(e,n,{emit:t})})}function f(e){var{conversationInfoList:e,fromAccount:t}=e,t={From_Account:t,MarkItem:e};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.mark_contact",data:t})}function I(e){var{fromAccount:e,groupName:t,conversationInfoList:o}=e,e={From_Account:e,UpdateType:1,UpdateGroup:{UpdateGroupType:2,OldGroupName:t,ContactUpdateItem:o}};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:e})}var n=new class{init(e){var{registerApi:t}=e["helper"];this._core=e,t({apiName:"createConversationGroup",context:this})}createConversationGroup(o){return t(this,void 0,void 0,function*(){let{utils:{isPlainObject:a,isArray:s},appStore:i}=this._core,{groupName:c,conversationIDList:e}=(d("createConversationGroup"),o),u=[],t=this._generateConversationInfo(e,u);if(u.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:u}};try{let r=yield function(e){var{buildAndSendPacket:t,getCurrentUserID:o}=l.core["common"],{item:e,groupName:n}=e;return t({servcmd:"recentcontact.create_contact_group",data:{From_Account:o(),GroupContactItem:[{GroupName:n,ContactItem:e}]}})}({groupName:c,item:t});if(r){let{GroupResultItem:e=[]}=r,{GroupItem:o,ResultItem:t}=(null==e?void 0:e[0])||{},n=[];if(a(o)){let{GroupName:e,GroupId:t}=o;p.setConversationGroup(t,e),v()}if(s(t)){let a=[];t.forEach(e=>{let{ContactItem:t,ResultCode:o,ResultInfo:n}=e,r=C(t);if(0===o){let t=i.conversationStore.getConversation(r);if(t&&!t.conversationGroupList.includes(c)){let e=t.conversationGroupList.slice();e.push(c),a.push({conversationID:r,data:{conversationGroupList:e}})}}else u.push({conversationID:r,code:o,message:n})}),0<a.length&&(m(a),v())}return{code:0,data:{successConversationIDList:n,failureConversationIDList:u}}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"createConversationGroup",code:t,message:o})}})}_generateConversationInfo(e,t,o={}){let n=[],{OuterConstant:r,common:{isC2CConv:a,isGroupConv:s}}=this._core;return e.forEach(e=>{c(e,t),a(e)?n.push(Object.assign({Type:1,To_Account:e.replace(r.CONV_C2C,"")},o)):s(e)&&n.push(Object.assign({Type:2,ToGroupId:e.replace(r.CONV_GROUP,"")},o))}),n}},r=new class{constructor(){this._fetchConversationGroupStatus=e}init(e){var{helper:{registerApi:t,registerWorkflowStep:o},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:r}}=e;this._core=e,t({apiName:"getConversationGroupList",context:this}),o(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_LIST_SYNC,this._syncConversationGroupList,this),o(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_UPDATE,this._updateConversation,this)}getConversationGroupList(){return t(this,void 0,void 0,function*(){return d("getConversationGroupList"),this._fetchConversationGroupStatus===o&&(yield this._fetchConversationGroupList(0)),{code:0,data:[...p.getConversationGroupMap().values()]}})}_syncConversationGroupList(){return t(this,void 0,void 0,function*(){return yield this._fetchConversationGroupList(0)})}_fetchConversationGroupList(e){return t(this,arguments,void 0,function*(n,a=[]){let{common:{getCurrentUserID:e},utils:{isArray:s}}=this._core;this._fetchConversationGroupStatus="FETCHING";try{let o=e(),r=yield function(){var{fromAccount:e,startIndex:t}={fromAccount:o,startIndex:n},e={From_Account:e,StartIndex:t};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.get_contact_group",data:e})}();if(r){let{CompleteFlag:e,ContactItem:t=[],NextStartIndex:o=0,GroupItem:n=[]}=r;return(s(n)&&n.forEach(e=>{var{GroupName:e,GroupId:t}=e;p.setConversationGroup(t,e)}),a.push(...t),0===e)?this._fetchConversationGroupList(o):1===e?(this._fetchConversationGroupStatus="FINISHED",a):void 0}}catch(e){this._fetchConversationGroupStatus=o,console.error(e)}})}_updateConversation(e){var t=this._core["constants"]["WORKFLOW_STEP"],e=(null==(e=null==e?void 0:e.result)?void 0:e[t.CONVERSATION_GROUP_LIST_SYNC])||[];m(this._generateConversationUpdateFields(e)),v()}_generateConversationUpdateFields(e){let{utils:{isArray:s},appStore:i}=this._core,c=[];if(s(e)){let a;e.forEach(e=>{let t=[],{StandardMark:o,CustomMark:n="",ContactGroupId:r}=e;s(r)&&r.forEach(e=>{p.getConversationGroupMap().has(e)&&t.push(p.getConversationGroup(e))});e=C(e);(a=i.conversationStore.getConversation(e))&&c.push({conversationID:e,data:{markList:u(o),customData:n,conversationGroupList:[...t]}})})}return c}reset(){this._fetchConversationGroupStatus=e}dispose(){this.reset()}},a=new class{init(e){var{notificationCenter:t,helper:{registerApi:o},InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{CONVERSATION_MARK_UPDATED:r,CONVERSATION_GROUP_ADD:a,CONVERSATION_GROUP_DELETED:s,CONVERSATION_GROUP_UPDATED:i}}=e;this._core=e,o({apiName:"renameConversationGroup",context:this}),o({apiName:"deleteConversationGroup",context:this}),o({apiName:"markConversation",context:this}),o({apiName:"setConversationCustomData",context:this}),o({apiName:"deleteConversationsFromGroup",context:this}),o({apiName:"addConversationsToGroup",context:this}),t.subscribeInnerEvent(n,a,this._handleConversationGroupAdd,this),t.subscribeInnerEvent(n,s,this._handleConversationGroupDeleted,this),t.subscribeInnerEvent(n,i,this._handleConversationGroupUpdated,this),t.subscribeInnerEvent(n,r,this._handleConversationMarkUpdated,this)}renameConversationGroup(e){return t(this,void 0,void 0,function*(){d("renameConversationGroup");let{getCurrentUserID:n}=this._core["common"],{oldName:r,newName:a}=e,s=`oldName:${r} newName:`+a;try{let o=yield function(){var{fromAccount:e,oldName:t,newName:o}={fromAccount:n(),oldName:r,newName:a},e={From_Account:e,UpdateType:1,UpdateGroup:{UpdateGroupType:1,OldGroupName:t,NewGroupName:o}};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:e})}();if(o){let e=o["UpdateGroupResult"],t=e["GroupId"];p.setConversationGroup(t,a),v(),this._updateLocalConversationGroupName({oldName:r,newName:a})}return{successLog:{message:s}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"renameConversationGroup",code:t,message:o,moreMessage:s})}})}deleteConversationGroup(n){return t(this,void 0,void 0,function*(){d("deleteConversationGroup");let{getCurrentUserID:o}=this._core["common"];try{var t=yield function(){var{fromAccount:e,groupName:t}={fromAccount:o(),groupName:n},e={From_Account:e,GroupName:[t]};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.del_contact_group",data:e})}();if(t){let e=t["GroupItem"],o=!1;return null!=e&&e.forEach(e=>{var e=e["GroupId"],t=p.getConversationGroupMap();t.has(e)&&(t.delete(e),o=!0)}),o&&v(),this._deleteLocalConversationGroupName([n]),{successLog:{message:"groupName:"+n}}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"deleteConversationGroup",code:t,message:o,moreMessage:"groupName:"+n})}})}markConversation(v){return t(this,void 0,void 0,function*(){d("markConversation");let{utils:{isNumber:e},common:{getCurrentUserID:o},appStore:s}=this._core,{conversationIDList:t,markType:i,enableMark:c}=v,n=this._getFlagBit(i),u=[],p=[],r,a;!0===c&&e(n)?r=[n]:a=[n];var l=h({conversationIDList:t,failureConversationIDList:u,additionalData:{SetMark:r,ClearMark:a,OptType:1}});if(u.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:u}};try{let t=yield f({conversationInfoList:l,fromAccount:o()});if(t){let e=t["ResultItem"],a=[];e.forEach(e=>{let{ContactItem:t,ResultCode:o,ResultInfo:n}=e,r=C(t);if(0===o){p.push(r);let o=s.conversationStore.getConversation(r);if(o){let t=o.markList.indexOf(i),e=!1===c&&-1!==t;if(!0===c&&-1===t)a.push({conversationID:r,data:{markList:[...o.markList,i]}});else if(e){let e=o.markList.slice();e.splice(t,1),a.push({conversationID:r,data:{markList:e}})}}}else u.push({conversationID:r,code:o,message:n})}),m(a)}return{code:0,data:{successConversationIDList:p,failureConversationIDList:u}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"markConversation",code:t,message:o})}})}setConversationCustomData(n){return t(this,void 0,void 0,function*(){d("setConversationCustomData");let{common:{getCurrentUserID:e},appStore:r}=this._core,{conversationIDList:t,customData:a}=n,s=[],i=[],o=h({conversationIDList:t,failureConversationIDList:s,additionalData:{CustomMark:a,OptType:2}});if(s.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let t=yield f({fromAccount:e(),conversationInfoList:o});if(t){let e=t["ResultItem"],n=[];null!=e&&e.forEach(e=>{var{ContactItem:o,ResultCode:e,ResultInfo:t}=e;if(0===e){let e=C(o),t=(i.push(e),r.conversationStore.getConversation(e));t&&t.customData!==a&&n.push({conversationID:e,data:{customData:a}})}else s.push({conversationID:conversationID,code:e,message:t})}),m(n)}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"setConversationCustomData",code:t,message:o})}})}deleteConversationsFromGroup(r){return t(this,void 0,void 0,function*(){d("deleteConversationsFromGroup");let{common:{getCurrentUserID:e},appStore:a}=this._core,{conversationIDList:t,groupName:s}=r,o=[],i=[],n=h({conversationIDList:t,failureConversationIDList:o,additionalData:{ContactOptType:2}});if(o.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:o}};try{let t=yield I({fromAccount:e(),groupName:s,conversationInfoList:n});if(t){let r=[],{ContactResultItem:e}=t["UpdateGroupResult"];null!=e&&e.forEach(e=>{var n=C(e.ContactItem);if(0===e.ResultCode){let o=a.conversationStore.getConversation(n);if(o){let t=o.conversationGroupList.indexOf(s);if(-1!==t){let e=o.conversationGroupList.slice();e.splice(t,1),i.push(n),r.push({conversationID:n,data:{conversationGroupList:e}})}}}else o.push({conversationID:n,code:e.ResultCode,message:e.ResultInfo})}),0<r.length&&(v(),m(r))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:o}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:t,message:o})}})}addConversationsToGroup(n){return t(this,void 0,void 0,function*(){d("deleteConversationsFromGroup");let{common:{getCurrentUserID:e},appStore:r}=this._core,{conversationIDList:t,groupName:a}=n,s=[],i=[],o=h({conversationIDList:t,failureConversationIDList:s,additionalData:{ContactOptType:1}});if(s.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let t=yield I({fromAccount:e(),groupName:a,conversationInfoList:o});if(t){let n=[],{ContactResultItem:e}=t["UpdateGroupResult"];null!=e&&e.forEach(e=>{var o=C(e.ContactItem);if(0===e.ResultCode){let t=r.conversationStore.getConversation(o);if(t&&-1===t.conversationGroupList.indexOf(a)){let e=t.conversationGroupList.slice();e.push(a),i.push(o),n.push({conversationID:o,data:{conversationGroupList:e}})}}else s.push({conversationID:o,code:e.ResultCode,message:e.ResultInfo})}),0<n.length&&(v(),m(n))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:t,message:o})}})}_updateLocalConversationGroupName(e){let t=this._core["appStore"],{oldName:o,newName:n}=e,r=[],a=[],s;Array.from(t.conversationStore.getConversationMap().values()).forEach(e=>{var t;r=e.conversationGroupList,-1!==(s=r.indexOf(o))&&((t=r.slice()).splice(s,1,n),a.push({conversationID:e.conversationID,data:{conversationGroupList:t}}))}),m(a)}_deleteLocalConversationGroupName(r){var{utils:{isEmpty:e},appStore:t}=this._core;if(!e(r)){let n=[];Array.from(t.conversationStore.getConversationMap().values()).forEach(e=>{var{conversationID:e,conversationGroupList:t}=e,o=t.filter(e=>!r.includes(e));o.length<t.length&&n.push({conversationID:e,data:{conversationGroupList:o}})}),m(n)}}_getFlagBit(e){var t=e.toString(2),o=t.length;for(let e=o-1;0<=e;e--)if("1"===t[e])return o-e-1}_handleConversationGroupAdd(e){let t,{utils:{isArray:i},appStore:c}=this._core;null!=(t=null==e?void 0:e.RecentContactMod)&&t.forEach(e=>{var e=e["RecentContactCreateContactGroup"]["MsgContactGroupContactItem"];let s=!1;null!=e&&e.forEach(e=>{let{MsgGroupItem:t,MsgRecentContactItem:o}=e,{GroupId:n,GroupName:r}=t,a=[];p.getConversationGroup(n)!==r&&(p.setConversationGroup(n,r),s=!0),i(o)&&o.forEach(e=>{var t=C(e),o=c.conversationStore.getConversation(t);if(o&&(null==(e=o.conversationGroupList)||!e.includes(r))){let e=o.conversationGroupList.slice();e.push(r),a.push({conversationID:t,data:{conversationGroupList:e}})}}),s&&v(),m(a)})})}_handleConversationGroupDeleted(e){let t,{isArray:o}=this._core.utils;null!=(t=null==e?void 0:e.RecentContactMod)&&t.forEach(e=>{e=((null==e?void 0:e.RecentContactDelContactGroup)||{}).MsgGroupItem;if(o(e)){let n=!1,r=[];e.forEach(e=>{var{GroupId:e,GroupName:t}=e,o=p.getConversationGroupMap();o.has(e)&&(o.delete(e),n=!0,r.push(t))}),n&&v(),0<r.length&&this._deleteLocalConversationGroupName(r)}})}_handleConversationGroupUpdated(e){null!=(e=e.RecentContactMod)&&e.forEach(e=>{var{GroupId:e,GroupName:t,OldGroupName:o,RecentContactUpdateGroupItem:n,UpdateGroupType:r}=e["RecentContactUpdateContactGroup"]["MsgUpdateGroup"];1===r?this._handleGroupNameUpdated({groupID:e,newName:t,oldName:o}):2===r&&this._handleGroupAddOrDeleteFromConversation({groupInfoList:n,groupName:o})})}_handleConversationMarkUpdated(e){let t,a=this._core.appStore;null!=(t=null==e?void 0:e.RecentContactMod)&&t.forEach(e=>{let{RecentContactMarkContactItem:t}=e["RecentContactMarkContact"],r=[];null!=t&&t.forEach(e=>{var{RecentContactItem:e,CustomMark:t,StandardMark:o,OptType:n}=e,e=C(e),e=a.conversationStore.getConversation(e);e&&(1===n?this._updateStandMark({conversation:e,standardMark:o,updateConversationList:r}):2===n?this._updateCustomMark({conversation:e,customMark:t,updateConversationList:r}):3===n&&(this._updateStandMark({conversation:e,standardMark:o,updateConversationList:r}),this._updateCustomMark({conversation:e,customMark:t,updateConversationList:r})))}),m(r)})}_updateStandMark(e){var{conversation:e,standardMark:t,updateConversationList:o}=e,t=u(t);!function(o,n){if(o===n)return 1;if(o&&n&&o.length===n.length){o.sort(),n.sort();for(let e=0,t=o.length;e<t;e++)if(o[e]!==n[e])return;return 1}}(e.markList,t)&&o.push({conversationID:e.conversationID,data:{markList:t}})}_updateCustomMark(e){var{conversation:e,customMark:t,updateConversationList:o}=e;e.customData!==t&&void 0!==t&&(e.customData=t,o.push({conversationID:e.conversationID,data:{customData:t}}))}_handleGroupNameUpdated(e){var{groupID:e,oldName:t,newName:o}=e;p.getConversationGroup(e)!==o&&(p.setConversationGroup(e,o),v(),this._updateLocalConversationGroupName({oldName:t,newName:o}))}_handleGroupAddOrDeleteFromConversation({groupInfoList:e,groupName:a}){let s=this._core["appStore"],i=[];e.forEach(e=>{var{RecentContactItem:e,ContactOptType:t}=e,o=C(e),n=s.conversationStore.getConversation(o),r=n.conversationGroupList.indexOf(a);if(n){let e=n.conversationGroupList.slice();1===t&&-1===r?(e.push(a),i.push({conversationID:o,data:{conversationGroupList:e}})):2===t&&-1!==r&&(e.splice(r,1),i.push({conversationID:o,data:{conversationGroupList:e}}))}}),m(i)}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{CONVERSATION_MARK_UPDATED:o,CONVERSATION_GROUP_ADD:n,CONVERSATION_GROUP_DELETED:r,CONVERSATION_GROUP_UPDATED:a}}=this._core;e.unSubscribeInnerEvent(t,n,this._handleConversationGroupAdd,this),e.unSubscribeInnerEvent(t,r,this._handleConversationGroupDeleted,this),e.unSubscribeInnerEvent(t,a,this._handleConversationGroupUpdated,this),e.unSubscribeInnerEvent(t,o,this._handleConversationMarkUpdated,this)}};let s={required:!0,rules:["string"],allowEmpty:!1},i={required:!0,rules:["array"],allowEmpty:!1},G={createConversationGroup:{groupName:s,conversationIDList:{required:!0,rules:["array"],allowEmpty:!1}},renameConversationGroup:{oldName:s,newName:Object.assign(Object.assign({},s),{customValidator:e=>!(32<e.length)||"newName length cannot longer than 32"})},deleteConversationGroup:[{required:!0,rules:["string"],allowEmpty:!1}],addConversationsToGroup:{conversationIDList:i,groupName:s},deleteConversationsFromGroup:{conversationIDList:i,groupName:s},markConversation:{conversationIDList:i,markType:{required:!0,rules:["number"],allowEmpty:!1,customValidator:e=>e<=0?"markType must be greater than 0":!(e>=Math.pow(2,64))||"markType must be less than 2^64"},enableMark:{required:!0,rules:["boolean"],allowEmpty:!1}},setConversationCustomData:{conversationIDList:i,customData:{required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>"string"!=typeof e?"customData must be string":!(256<e.length)||"customData length cannot longer than 256"}}},_={createConversationGroup:!0,deleteConversationGroup:!0,renameConversationGroup:!0,getConversationGroupList:!0,addConversationsToGroup:!0,deleteConversationsFromGroup:!0,markConversation:!0,setConversationCustomData:!0};return new class{constructor(){this.name="ConversationGroup"}install(e){this._core=e,l.init(e),p.init(e),n.init(e),r.init(e),a.init(e),e.helper.registerValidateConfig({auth:_,params:G}),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.LOGOUT,this.reset,this),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.DESTROY,this.dispose,this)}dispose(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this.reset,this),e.unSubscribeInnerEvent(t.DESTROY,this.dispose,this),a.dispose(),r.dispose()}reset(){r.reset()}}});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["TencentCloudChatConversation-group"]=t()}(this,function(){var p=new class{constructor(){this._conversationGroupMap=new Map}init(e){this._core=e}getConversationGroupMap(){return this._conversationGroupMap}getConversationGroup(e){return this._conversationGroupMap.get(e)}setConversationGroup(e,t){this._conversationGroupMap.set(e,t)}};function t(e,s,i,c){return new(i=i||Promise)(function(o,t){function n(e){try{a(c.next(e))}catch(e){t(e)}}function r(e){try{a(c.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?o(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(n,r)}a((c=c.apply(e,s||[])).next())})}let l=new class{init(e){this.core=e}},e="NOT_STARTED",o="FAILED";function d(e){var{helper:t,constants:o}=l.core;if(!t.checkBusinessCapabilityBits("CONV_GROUP"))throw new t.ChatError({functionName:e,code:o.ERROR_CODE.NO_USE,replacement1:e})}function v(){var{notificationCenter:e,OuterEvent:t}=l.core;e.emitOuterEvent(t.CONVERSATION_GROUP_LIST_UPDATED,{name:t.CONVERSATION_GROUP_LIST_UPDATED,data:[...p.getConversationGroupMap().values()]})}function C(e){var{utils:{isUndefined:t},constants:{OuterConstant:o}}=l.core,{Type:n,To_Account:r,Peer_Account:a}=e;let s="";e=e.ToGroupId||e.GroupId;return 1===n?t(a)?t(r)||(s=""+o.CONV_C2C+r):s=""+o.CONV_C2C+a:2===n&&(s=""+o.CONV_GROUP+e),s}function h(e){let t=[],{OuterConstant:o,common:{isC2CConv:n,isGroupConv:r}}=l.core,{conversationIDList:a,failureConversationIDList:s,additionalData:i={}}=e;return a.forEach(e=>{c(e,s),n(e)?t.push(Object.assign({ContactItem:{Type:1,To_Account:e.replace(o.CONV_C2C,"")}},i)):r(e)&&t.push(Object.assign({ContactItem:{Type:2,ToGroupId:e.replace(o.CONV_GROUP,"")}},i))}),t}function c(e,t){var{appStore:{conversationStore:o},common:{isC2CConv:n,isGroupConv:r}}=l.core;o.getConversation(e)?n(e)||r(e)||t.push({conversationID:e,code:2503}):t.push({conversationID:e,code:2500})}function u(t){var{isString:e}=l.core["utils"],o=[];if(e(t)){var n=t.length;if(0!==n)for(let e=n-1;0<=e;e--)"1"===t[e]&&o.push(Math.pow(2,n-e-1))}return o}function m(r){null!=r&&r.forEach((e,t)=>{var o=l.core["appStore"],{conversationID:e,data:n}=e,t=t===r.length-1;o.conversationStore.updateConversation(e,n,{emit:t})})}function f(e){var{conversationInfoList:e,fromAccount:t}=e,t={From_Account:t,MarkItem:e};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.mark_contact",data:t})}function I(e){var{fromAccount:e,groupName:t,conversationInfoList:o}=e,e={From_Account:e,UpdateType:1,UpdateGroup:{UpdateGroupType:2,OldGroupName:t,ContactUpdateItem:o}};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:e})}var n=new class{init(e){var{registerApi:t}=e["helper"];this._core=e,t({apiName:"createConversationGroup",context:this})}createConversationGroup(o){return t(this,void 0,void 0,function*(){let{utils:{isPlainObject:a,isArray:s},appStore:i}=this._core,{groupName:c,conversationIDList:e}=(d("createConversationGroup"),o),u=[],t=this._generateConversationInfo(e,u);if(u.length===e.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:u}};try{let r=yield function(e){var{buildAndSendPacket:t,getCurrentUserID:o}=l.core["common"],{item:e,groupName:n}=e;return t({servcmd:"recentcontact.create_contact_group",data:{From_Account:o(),GroupContactItem:[{GroupName:n,ContactItem:e}]}})}({groupName:c,item:t});if(r){let{GroupResultItem:e=[]}=r,{GroupItem:o,ResultItem:t}=(null==e?void 0:e[0])||{},n=[];if(a(o)){let{GroupName:e,GroupId:t}=o;p.setConversationGroup(t,e),v()}if(s(t)){let a=[];t.forEach(e=>{let{ContactItem:t,ResultCode:o,ResultInfo:n}=e,r=C(t);if(0===o){let t=i.conversationStore.getConversation(r);if(t&&!t.conversationGroupList.includes(c)){let e=t.conversationGroupList.slice();e.push(c),a.push({conversationID:r,data:{conversationGroupList:e}})}}else u.push({conversationID:r,code:o,message:n})}),0<a.length&&(m(a),v())}return{code:0,data:{successConversationIDList:n,failureConversationIDList:u}}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"createConversationGroup",code:t,message:o})}})}_generateConversationInfo(e,t,o={}){let n=[],{OuterConstant:r,common:{isC2CConv:a,isGroupConv:s}}=this._core;return e.forEach(e=>{c(e,t),a(e)?n.push(Object.assign({Type:1,To_Account:e.replace(r.CONV_C2C,"")},o)):s(e)&&n.push(Object.assign({Type:2,ToGroupId:e.replace(r.CONV_GROUP,"")},o))}),n}},r=new class{constructor(){this._fetchConversationGroupStatus=e}init(e){var{helper:{registerApi:t,registerWorkflowStep:o},constants:{WORKFLOW_NAME:n,WORKFLOW_STEP:r}}=e;this._core=e,t({apiName:"getConversationGroupList",context:this}),o(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_LIST_SYNC,this._syncConversationGroupList,this),o(n.SYNC_SERVER_INFO_AFTER_LOGIN,r.CONVERSATION_GROUP_UPDATE,this._updateConversation,this)}getConversationGroupList(){return t(this,void 0,void 0,function*(){return d("getConversationGroupList"),this._fetchConversationGroupStatus===o&&(yield this._fetchConversationGroupList(0)),{code:0,data:[...p.getConversationGroupMap().values()]}})}_syncConversationGroupList(){return t(this,void 0,void 0,function*(){return yield this._fetchConversationGroupList(0)})}_fetchConversationGroupList(e){return t(this,arguments,void 0,function*(n,a=[]){let{common:{getCurrentUserID:e},utils:{isArray:s}}=this._core;this._fetchConversationGroupStatus="FETCHING";try{let o=e(),r=yield function(){var{fromAccount:e,startIndex:t}={fromAccount:o,startIndex:n},e={From_Account:e,StartIndex:t};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.get_contact_group",data:e})}();if(r){let{CompleteFlag:e,ContactItem:t=[],NextStartIndex:o=0,GroupItem:n=[]}=r;return(s(n)&&n.forEach(e=>{var{GroupName:e,GroupId:t}=e;p.setConversationGroup(t,e)}),a.push(...t),0===e)?this._fetchConversationGroupList(o):1===e?(this._fetchConversationGroupStatus="FINISHED",a):void 0}}catch(e){this._fetchConversationGroupStatus=o,console.error(e)}})}_updateConversation(e){var t=this._core["constants"]["WORKFLOW_STEP"],e=(null==(e=null==e?void 0:e.result)?void 0:e[t.CONVERSATION_GROUP_LIST_SYNC])||[];m(this._generateConversationUpdateFields(e)),v()}_generateConversationUpdateFields(e){let{utils:{isArray:s},appStore:i}=this._core,c=[];if(s(e)){let a;e.forEach(e=>{let t=[],{StandardMark:o,CustomMark:n="",ContactGroupId:r}=e;s(r)&&r.forEach(e=>{p.getConversationGroupMap().has(e)&&t.push(p.getConversationGroup(e))});e=C(e);(a=i.conversationStore.getConversation(e))&&c.push({conversationID:e,data:{markList:u(o),customData:n,conversationGroupList:[...t]}})})}return c}reset(){this._fetchConversationGroupStatus=e}dispose(){this.reset()}},a=new class{init(e){var{notificationCenter:t,helper:{registerApi:o},InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{CONVERSATION_MARK_UPDATED:r,CONVERSATION_GROUP_ADD:a,CONVERSATION_GROUP_DELETED:s,CONVERSATION_GROUP_UPDATED:i}}=e;this._core=e,o({apiName:"renameConversationGroup",context:this}),o({apiName:"deleteConversationGroup",context:this}),o({apiName:"markConversation",context:this}),o({apiName:"setConversationCustomData",context:this}),o({apiName:"deleteConversationsFromGroup",context:this}),o({apiName:"addConversationsToGroup",context:this}),t.subscribeInnerEvent(n,a,this._handleConversationGroupAdd,this),t.subscribeInnerEvent(n,s,this._handleConversationGroupDeleted,this),t.subscribeInnerEvent(n,i,this._handleConversationGroupUpdated,this),t.subscribeInnerEvent(n,r,this._handleConversationMarkUpdated,this)}renameConversationGroup(e){return t(this,void 0,void 0,function*(){d("renameConversationGroup");let{getCurrentUserID:n}=this._core["common"],{oldName:r,newName:a}=e,s=`oldName:${r} newName:`+a;try{let o=yield function(){var{fromAccount:e,oldName:t,newName:o}={fromAccount:n(),oldName:r,newName:a},e={From_Account:e,UpdateType:1,UpdateGroup:{UpdateGroupType:1,OldGroupName:t,NewGroupName:o}};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.update_contact_group",data:e})}();if(o){let e=o["UpdateGroupResult"],t=e["GroupId"];p.setConversationGroup(t,a),v(),this._updateLocalConversationGroupName({oldName:r,newName:a})}return{successLog:{message:s}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"renameConversationGroup",code:t,message:o,moreMessage:s})}})}deleteConversationGroup(n){return t(this,void 0,void 0,function*(){d("deleteConversationGroup");let{getCurrentUserID:o}=this._core["common"];try{var t=yield function(){var{fromAccount:e,groupName:t}={fromAccount:o(),groupName:n},e={From_Account:e,GroupName:[t]};return l.core.common.buildAndSendPacket({servcmd:"recentcontact.del_contact_group",data:e})}();if(t){let e=t["GroupItem"],o=!1;return null!=e&&e.forEach(e=>{var e=e["GroupId"],t=p.getConversationGroupMap();t.has(e)&&(t.delete(e),o=!0)}),o&&v(),this._deleteLocalConversationGroupName([n]),{successLog:{message:"groupName:"+n}}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"deleteConversationGroup",code:t,message:o,moreMessage:"groupName:"+n})}})}markConversation(v){return t(this,void 0,void 0,function*(){d("markConversation");let{utils:{isNumber:e},common:{getCurrentUserID:o},appStore:s}=this._core,{conversationIDList:t,markType:i,enableMark:c}=v,n=this._getFlagBit(i),u=[],p=[],r,a;!0===c&&e(n)?r=[n]:a=[n];var l=h({conversationIDList:t,failureConversationIDList:u,additionalData:{SetMark:r,ClearMark:a,OptType:1}});if(u.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:u}};try{let t=yield f({conversationInfoList:l,fromAccount:o()});if(t){let e=t["ResultItem"],a=[];e.forEach(e=>{let{ContactItem:t,ResultCode:o,ResultInfo:n}=e,r=C(t);if(0===o){p.push(r);let o=s.conversationStore.getConversation(r);if(o){let t=o.markList.indexOf(i),e=!1===c&&-1!==t;if(!0===c&&-1===t)a.push({conversationID:r,data:{markList:[...o.markList,i]}});else if(e){let e=o.markList.slice();e.splice(t,1),a.push({conversationID:r,data:{markList:e}})}}}else u.push({conversationID:r,code:o,message:n})}),m(a)}return{code:0,data:{successConversationIDList:p,failureConversationIDList:u}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"markConversation",code:t,message:o})}})}setConversationCustomData(n){return t(this,void 0,void 0,function*(){d("setConversationCustomData");let{common:{getCurrentUserID:e},appStore:r}=this._core,{conversationIDList:t,customData:a}=n,s=[],i=[],o=h({conversationIDList:t,failureConversationIDList:s,additionalData:{CustomMark:a,OptType:2}});if(s.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let t=yield f({fromAccount:e(),conversationInfoList:o});if(t){let e=t["ResultItem"],n=[];null!=e&&e.forEach(e=>{var{ContactItem:o,ResultCode:e,ResultInfo:t}=e;if(0===e){let e=C(o),t=(i.push(e),r.conversationStore.getConversation(e));t&&t.customData!==a&&n.push({conversationID:e,data:{customData:a}})}else s.push({conversationID:conversationID,code:e,message:t})}),m(n)}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"setConversationCustomData",code:t,message:o})}})}deleteConversationsFromGroup(r){return t(this,void 0,void 0,function*(){d("deleteConversationsFromGroup");let{common:{getCurrentUserID:e},appStore:a}=this._core,{conversationIDList:t,groupName:s}=r,o=[],i=[],n=h({conversationIDList:t,failureConversationIDList:o,additionalData:{ContactOptType:2}});if(o.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:o}};try{let t=yield I({fromAccount:e(),groupName:s,conversationInfoList:n});if(t){let r=[],{ContactResultItem:e}=t["UpdateGroupResult"];null!=e&&e.forEach(e=>{var n=C(e.ContactItem);if(0===e.ResultCode){let o=a.conversationStore.getConversation(n);if(o){let t=o.conversationGroupList.indexOf(s);if(-1!==t){let e=o.conversationGroupList.slice();e.splice(t,1),i.push(n),r.push({conversationID:n,data:{conversationGroupList:e}})}}}else o.push({conversationID:n,code:e.ResultCode,message:e.ResultInfo})}),0<r.length&&(v(),m(r))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:o}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:t,message:o})}})}addConversationsToGroup(n){return t(this,void 0,void 0,function*(){d("deleteConversationsFromGroup");let{common:{getCurrentUserID:e},appStore:r}=this._core,{conversationIDList:t,groupName:a}=n,s=[],i=[],o=h({conversationIDList:t,failureConversationIDList:s,additionalData:{ContactOptType:1}});if(s.length===t.length)return{code:0,data:{successConversationIDList:[],failureConversationIDList:s}};try{let t=yield I({fromAccount:e(),groupName:a,conversationInfoList:o});if(t){let n=[],{ContactResultItem:e}=t["UpdateGroupResult"];null!=e&&e.forEach(e=>{var o=C(e.ContactItem);if(0===e.ResultCode){let t=r.conversationStore.getConversation(o);if(t&&-1===t.conversationGroupList.indexOf(a)){let e=t.conversationGroupList.slice();e.push(a),i.push(o),n.push({conversationID:o,data:{conversationGroupList:e}})}}else s.push({conversationID:o,code:e.ResultCode,message:e.ResultInfo})}),0<n.length&&(v(),m(n))}return{code:0,data:{successConversationIDList:i,failureConversationIDList:s}}}catch(e){let{errorCode:t,errorInfo:o}=e;throw new this._core.helper.ChatError({functionName:"deleteConversationsFromGroup",code:t,message:o})}})}_updateLocalConversationGroupName(e){let t=this._core["appStore"],{oldName:o,newName:n}=e,r=[],a=[],s;Array.from(t.conversationStore.getConversationMap().values()).forEach(e=>{var t;r=e.conversationGroupList,-1!==(s=r.indexOf(o))&&((t=r.slice()).splice(s,1,n),a.push({conversationID:e.conversationID,data:{conversationGroupList:t}}))}),m(a)}_deleteLocalConversationGroupName(r){var{utils:{isEmpty:e},appStore:t}=this._core;if(!e(r)){let n=[];Array.from(t.conversationStore.getConversationMap().values()).forEach(e=>{var{conversationID:e,conversationGroupList:t}=e,o=t.filter(e=>!r.includes(e));o.length<t.length&&n.push({conversationID:e,data:{conversationGroupList:o}})}),m(n)}}_getFlagBit(e){var t=e.toString(2),o=t.length;for(let e=o-1;0<=e;e--)if("1"===t[e])return o-e-1}_handleConversationGroupAdd(e){let t,{utils:{isArray:i},appStore:c}=this._core;null!=(t=null==e?void 0:e.RecentContactMod)&&t.forEach(e=>{var e=e["RecentContactCreateContactGroup"]["MsgContactGroupContactItem"];let s=!1;null!=e&&e.forEach(e=>{let{MsgGroupItem:t,MsgRecentContactItem:o}=e,{GroupId:n,GroupName:r}=t,a=[];p.getConversationGroup(n)!==r&&(p.setConversationGroup(n,r),s=!0),i(o)&&o.forEach(e=>{var t=C(e),o=c.conversationStore.getConversation(t);if(o&&(null==(e=o.conversationGroupList)||!e.includes(r))){let e=o.conversationGroupList.slice();e.push(r),a.push({conversationID:t,data:{conversationGroupList:e}})}}),s&&v(),m(a)})})}_handleConversationGroupDeleted(e){let t,{isArray:o}=this._core.utils;null!=(t=null==e?void 0:e.RecentContactMod)&&t.forEach(e=>{e=((null==e?void 0:e.RecentContactDelContactGroup)||{}).MsgGroupItem;if(o(e)){let n=!1,r=[];e.forEach(e=>{var{GroupId:e,GroupName:t}=e,o=p.getConversationGroupMap();o.has(e)&&(o.delete(e),n=!0,r.push(t))}),n&&v(),0<r.length&&this._deleteLocalConversationGroupName(r)}})}_handleConversationGroupUpdated(e){null!=(e=e.RecentContactMod)&&e.forEach(e=>{var{GroupId:e,GroupName:t,OldGroupName:o,RecentContactUpdateGroupItem:n,UpdateGroupType:r}=e["RecentContactUpdateContactGroup"]["MsgUpdateGroup"];1===r?this._handleGroupNameUpdated({groupID:e,newName:t,oldName:o}):2===r&&this._handleGroupAddOrDeleteFromConversation({groupInfoList:n,groupName:o})})}_handleConversationMarkUpdated(e){let t,a=this._core.appStore;null!=(t=null==e?void 0:e.RecentContactMod)&&t.forEach(e=>{let{RecentContactMarkContactItem:t}=e["RecentContactMarkContact"],r=[];null!=t&&t.forEach(e=>{var{RecentContactItem:e,CustomMark:t,StandardMark:o,OptType:n}=e,e=C(e),e=a.conversationStore.getConversation(e);e&&(1===n?this._updateStandMark({conversation:e,standardMark:o,updateConversationList:r}):2===n?this._updateCustomMark({conversation:e,customMark:t,updateConversationList:r}):3===n&&(this._updateStandMark({conversation:e,standardMark:o,updateConversationList:r}),this._updateCustomMark({conversation:e,customMark:t,updateConversationList:r})))}),m(r)})}_updateStandMark(e){var{conversation:e,standardMark:t,updateConversationList:o}=e,t=u(t);!function(o,n){if(o===n)return 1;if(o&&n&&o.length===n.length){o.sort(),n.sort();for(let e=0,t=o.length;e<t;e++)if(o[e]!==n[e])return;return 1}}(e.markList,t)&&o.push({conversationID:e.conversationID,data:{markList:t}})}_updateCustomMark(e){var{conversation:e,customMark:t,updateConversationList:o}=e;e.customData!==t&&void 0!==t&&(e.customData=t,o.push({conversationID:e.conversationID,data:{customData:t}}))}_handleGroupNameUpdated(e){var{groupID:e,oldName:t,newName:o}=e;p.getConversationGroup(e)!==o&&(p.setConversationGroup(e,o),v(),this._updateLocalConversationGroupName({oldName:t,newName:o}))}_handleGroupAddOrDeleteFromConversation({groupInfoList:e,groupName:a}){let s=this._core["appStore"],i=[];e.forEach(e=>{var{RecentContactItem:e,ContactOptType:t}=e,o=C(e),n=s.conversationStore.getConversation(o),r=n.conversationGroupList.indexOf(a);if(n){let e=n.conversationGroupList.slice();1===t&&-1===r?(e.push(a),i.push({conversationID:o,data:{conversationGroupList:e}})):2===t&&-1!==r&&(e.splice(r,1),i.push({conversationID:o,data:{conversationGroupList:e}}))}}),m(i)}dispose(){var{notificationCenter:e,InnerEvent:{MESSAGE_PUSH:t},InnerEventSubType:{CONVERSATION_MARK_UPDATED:o,CONVERSATION_GROUP_ADD:n,CONVERSATION_GROUP_DELETED:r,CONVERSATION_GROUP_UPDATED:a}}=this._core;e.unSubscribeInnerEvent(t,n,this._handleConversationGroupAdd,this),e.unSubscribeInnerEvent(t,r,this._handleConversationGroupDeleted,this),e.unSubscribeInnerEvent(t,a,this._handleConversationGroupUpdated,this),e.unSubscribeInnerEvent(t,o,this._handleConversationMarkUpdated,this)}};let s={required:!0,rules:["string"],allowEmpty:!1},i={required:!0,rules:["array"],allowEmpty:!1},G={createConversationGroup:{groupName:s,conversationIDList:{required:!0,rules:["array"],allowEmpty:!1}},renameConversationGroup:{oldName:s,newName:Object.assign(Object.assign({},s),{customValidator:e=>!(32<e.length)||"newName length cannot longer than 32"})},deleteConversationGroup:[{required:!0,rules:["string"],allowEmpty:!1}],addConversationsToGroup:{conversationIDList:i,groupName:s},deleteConversationsFromGroup:{conversationIDList:i,groupName:s},markConversation:{conversationIDList:i,markType:{required:!0,rules:["number"],allowEmpty:!1,customValidator:e=>e<=0?"markType must be greater than 0":!(e>=Math.pow(2,64))||"markType must be less than 2^64"},enableMark:{required:!0,rules:["boolean"],allowEmpty:!1}},setConversationCustomData:{conversationIDList:i,customData:{required:!1,rules:["string"],allowEmpty:!0,customValidator:e=>"string"!=typeof e?"customData must be string":!(256<e.length)||"customData length cannot longer than 256"}}},_={createConversationGroup:!0,deleteConversationGroup:!0,renameConversationGroup:!0,getConversationGroupList:!0,addConversationsToGroup:!0,deleteConversationsFromGroup:!0,markConversation:!0,setConversationCustomData:!0};return new class{constructor(){this.name="ConversationGroup"}install(e){this._core=e,l.init(e),p.init(e),n.init(e),r.init(e),a.init(e),e.helper.registerValidateConfig({auth:_,params:G}),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.LOGOUT,this.reset,this),e.notificationCenter.subscribeInnerEvent(e.InnerEvent.DESTROY,this.dispose,this)}dispose(){var{notificationCenter:e,InnerEvent:t}=this._core;e.unSubscribeInnerEvent(t.LOGOUT,this.reset,this),e.unSubscribeInnerEvent(t.DESTROY,this.dispose,this),a.dispose(),r.dispose()}reset(){r.reset()}}});