jugglechat-websdk 1.8.6 → 1.8.7
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/index.js +3 -3
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* JuggleIM.js v1.8.
|
|
2
|
+
* JuggleIM.js v1.8.7
|
|
3
3
|
* (c) 2022-2025 JuggleIM
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/const noop=()=>{},isObject=e=>"[object Object]"===Object.prototype.toString.call(e),isArray=e=>"[object Array]"===Object.prototype.toString.call(e),isFunction=e=>"[object Function]"===Object.prototype.toString.call(e),isString=e=>"[object String]"===Object.prototype.toString.call(e),isBoolean=e=>"[object Boolean]"===Object.prototype.toString.call(e),isUndefined=e=>"[object Undefined]"===Object.prototype.toString.call(e),isNull=e=>"[object Null]"===Object.prototype.toString.call(e),isNumber=e=>"[object Number]"===Object.prototype.toString.call(e),_isNaN=e=>isNaN(+e),stringify=e=>JSON.stringify(e),parse=t=>{let n={};try{n=JSON.parse(t)}catch(s){n=t}return n},forEach=(e,t)=>{t=t||noop;isObject(e)&&(()=>{for(var n in e)t(e[n],n,e)})(),isArray(e)&&(()=>{for(var n=0,s=e.length;n<s;n++)t(e[n],n,e)})()},isEmpty=e=>{let t=!0;return isObject(e)&&forEach(e,()=>{t=!1}),(isString(e)||isArray(e))&&(t=0===e.length),isNumber(e)&&(t=-1===e),t},rename=(e,t)=>{var n=isObject(e);n&&(e=[e]),e=parse(stringify(e));var s=function(e,n,s){delete s[n],n=t[n],s[n]=e};return forEach(e,e=>{forEach(e,(e,n,o)=>{var i=(n in t);(i?s:noop)(e,n,o)})}),isObject?e[0]:e},extend=(e,t)=>(t=isArray(t)?t:[t],forEach(t,t=>{for(let n in t){let s=t[n];isUndefined(s)||(e[n]=s)}}),e),Defer=Promise,deferred=e=>new Defer(e),templateFormat=(e,t,n)=>{isArray(t)||(t=[t]);let s=[],o=t=>e.replace(n||/\\?\{([^}]+)\}/g,(e,n)=>"\\"===e.charAt(0)?e.slice(1):void 0===t[n]?"{"+n+"}":t[n]);for(let r=0,i=t.length;r<i;r++)s.push(o(t[r]));return s.join("")},isContain=(e,t)=>-1<e.indexOf(t),isEqual=(e,t)=>e===t,Cache$1=e=>{isObject(e)||(e={});let t=(t,n)=>{e[t]=n},n=t=>e[t],s=t=>{delete e[t]},o=()=>{let t=[];for(let n in e)t.push(n);return t},i=()=>{e={}};return{set:t,get:n,remove:s,getKeys:o,clear:i}},map=(e,t)=>e.map(t),filter=(e,t)=>e.filter(t),uniq=(e,t)=>{let n=[],s={};return e.forEach(e=>{let n=t(e);s[n.key]=n.value}),forEach(s,e=>{n.push(e)}),n},some=(e,t)=>e.some(t),toJSON=e=>JSON.stringify(e),toArray=e=>{let t=[];return forEach(e,(e,n)=>{t.push([n,e])}),t},isInclude=(e,t)=>-1<e.indexOf(t),clone$1=e=>JSON.parse(JSON.stringify(e));// 暂时支持 String
|
|
@@ -17,7 +17,7 @@ let groupBy=(e,t)=>{let n={};return forEach(e,e=>{let s=[];forEach(e,(e,n)=>{isI
|
|
|
17
17
|
name: [event1, event2, ...]
|
|
18
18
|
}
|
|
19
19
|
*/let e={},t={},n=(t,n)=>{let s=e[t]||[];s.push(n);let o={};o[t]=s,utils.extend(e,o)},s=(e,n)=>{t[e]=n},o=n=>{delete e[n],delete t[n]},i=(n,s)=>{let o=e[n]||[];s=utils.isArray(s)?s:[s],utils.forEach(o,e=>{e(...s)});let i=t[n]||utils.noop;i(...s)},r=()=>{utils.forEach(e,(t,n)=>{delete e[n]})};return{on:n,off:o,emit:i,clear:r,once:s}}let STORAGE={PREFIX:"suprjj_im",NAVI:"navi",SYNC_CHATROOM_RECEIVED_MSG_TIME:"sync_chatroom_received_msg_time",SYNC_CHATROOM_ATTR_TIME:"sync_chatroom_attr_time",CLIENT_SESSION:"jgim_client_session",CRYPTO_RANDOM:"jg_crypto_randowm",//PC 端有同样的 KEY,如果修改 VALUE,需要一起修改
|
|
20
|
-
SYNC_CONVERSATION_TIME:"sync_conversation_time",SYNC_RECEIVED_MSG_TIME:"sync_received_msg_time",SYNC_SENT_MSG_TIME:"sync_sent_msg_time",APP_DEVICE:"app_device"},HEART_TIMEOUT=
|
|
20
|
+
SYNC_CONVERSATION_TIME:"sync_conversation_time",SYNC_RECEIVED_MSG_TIME:"sync_received_msg_time",SYNC_SENT_MSG_TIME:"sync_sent_msg_time",APP_DEVICE:"app_device"},HEART_TIMEOUT=10000,SYNC_MESSAGE_TIME=180000,CONNECT_ACK_INDEX="c_conn_ack_index",PONG_INDEX="c_pong_index",SIGNAL_NAME={CMD_RECEIVED:"cmd_inner_receive",CMD_CHATROOM_ATTR_RECEIVED:"cmd_inner_chatroom_attr_receive",CMD_CHATROOM_DESTROY:"cmd_inner_chatroom_destroy",CMD_SYNC_CONVERSATIONS_PROGRESS:"cmd_inner_sync_conversations_progress",CMD_SYNC_CONVERSATION_FINISHED:"cmd_inner_sync_conversations_finished",CMD_CONVERSATION_CHANGED:"cmd_inner_conversation_changed",CONN_CHANGED:"conn_inner_changed",CMD_SYNC_TAG_FINISHED:"cmd_inner_sync_tags_finished",CMD_CHATROOM_EVENT:"cmd_inner_chatroom_event",CMD_CHATROOM_REJOIN:"cmd_inner_chatroom_rejoin",CMD_RTC_INVITE_EVENT:"cmd_inner_rtc_invite_event",CMD_RTC_ROOM_EVENT:"cmd_inner_rtc_room_event",CMD_STREAM_APPENDED:"cmd_innter_stream_appended",CMD_STREAM_COMPLETED:"cmd_innter_stream_completed",// 与下行信令进行匹配,在 io.js 中进行派发
|
|
21
21
|
S_CONNECT_ACK:"s_connect_ack",S_DISCONNECT:"s_disconnect",S_PUBLICH_ACK:"s_publish_ack",S_QUERY_ACK:"s_query_ack",S_NTF:"s_ntf",S_CHATROOM_USER_NTF:"s_c_user_ntf",S_RTC_INVITE_NTF:"s_rtc_invite_ntf",S_RTC_ROOM_EVENT:"s_rtc_room_event_ntf",S_STREAM_EVENT:"s_stream_event",// PC 端自定义通知
|
|
22
22
|
S_SYNC_CONVERSATION_NTF:"s_sync_conversation_ntf",S_PONG:"s_pong",CLIENT_CLEAR_MEMORY_CACHE:"cmd_clear_memory_cache"},PLATFORM={WEB:"Web",DESKTOP:"PC"},MSG_TOP_ACTION_TYPE={ADD:0,REMOVE:1},SIGNAL_CMD={CONNECT:0,CONNECT_ACK:1,DISCONNECT:2,PUBLISH:3,PUBLISH_ACK:4,QUERY:5,QUERY_ACK:6,QUERY_CONFIRM:7,PING:8,PONG:9},QOS={YES:1,NO:0},FUNC_PARAM_CHECKER={CONNECT:[{name:"token"}],SENDMSG:[{name:"conversationType"},{name:"conversationId"},{name:"content"},{name:"name"}],INSERT_MESSAGE:[{name:"conversationType"},{name:"conversationId"},{name:"content"},{name:"name"},{name:"sentState"},{name:"sender",type:"Object"}],GETMSGS:[{name:"conversationType"},{name:"conversationId"}],GETMSG:[{name:"conversationType"},{name:"conversationId"},{name:"messageIds",type:"Array"}],REMOVEMSG:[{name:"conversationType"},{name:"conversationId"},{name:"messageId"}],CLEARMSG:[{name:"conversationType"},{name:"conversationId"},{name:"time",type:"Number"}],REMOVE_MSGS:[{name:"conversationType"},{name:"conversationId"},{name:"sentTime",type:"Number"},{name:"tid"},{name:"messageIndex"}],RECALLMSG:[{name:"conversationType"},{name:"conversationId"},{name:"messageId"},{name:"sentTime"}],READMESSAGE:[{name:"conversationType"},{name:"conversationId"},{name:"sentTime",type:"Number"},{name:"unreadIndex"}],GET_MESSAGE_READ_DETAILS:[{name:"conversationType"},{name:"conversationId"},{name:"messageId"}],UPDATEMESSAGE:[{name:"conversationType"},{name:"conversationId"},{name:"tid"},{name:"sentTime"},{name:"messageId"},{name:"content"}],GET_MENTIOIN_MESSAGES:[{name:"conversationType"},{name:"conversationId"}],SEARCH_MESSAGES:[{name:"keywords",type:"Array"}],UPDATE_MESSAGE_ATTR:[{name:"tid"},{name:"attribute",type:"String"}],SET_MESSAGE_SEARCH_CONTENT:[{name:"tid"},{name:"content",type:"String"}],UPLOAD_PUSH_TOKEN:[{name:"deviceId"},{name:"platform"},{name:"pushChannel"},{name:"pushToken"},{name:"packageName"}],SWITCH_PUSH:[{name:"isOpen"}],GET_FILE_TOKEN:[{name:"type"}],SEND_FILE_MESSAGE:[{name:"conversationType"},{name:"conversationId"},{name:"content",type:"Object"}],SEND_MERGE_MESSAGE:[{name:"conversationType"},{name:"conversationId"},{name:"title"},{name:"previewList",type:"Array"},{name:"messages",type:"Array",children:[{name:"conversationType"},{name:"conversationId"},{name:"messageId"},{name:"sentTime"},{name:"messageIndex"}]}],GET_MERGE_MESSAGES:[{name:"messageId"}],GET_FIRST_UNREAD_MSG:[{name:"conversationType"},{name:"conversationId"}],SUBSCRIBE_MESSAGE:[{name:"conversationType"},{name:"conversationId"}],GETCONVERSATIONS:[{name:"limit"}],GETCONVERSATION:[{name:"conversationType"},{name:"conversationId"}],MARK_UNREAD:[{name:"conversationType"},{name:"conversationId"},{name:"unreadTag",type:"Number"}],GET_TOTAL_UNREADCOUNT:[{name:"ignoreConversations",type:"Array",children:[{name:"conversationType"},{name:"conversationId"}]}],SET_ALL_DISTURB:[{name:"type"}// { name: 'timezone' },
|
|
23
23
|
// {
|
|
@@ -88,7 +88,7 @@ if(utils.isEqual(r,COMMAND_TOPICS.NTF)){let e=$root.lookup("codec.Notify"),t=e.d
|
|
|
88
88
|
utils.isEmpty(m)||Storage.setPrefix(`${d}_${m}`);let l=common.getNaviStorageKey(d,m),E=Storage.get(l);return utils.isEmpty(E)?void utils.forEach(e,t=>{let m=t.replace(/http:\/\/|https:\/\/|file:\/\//g,""),{http:E}=utils.getProtocol(t);m=`${E}//${m}/navigator/general`;let u={headers:{"x-appkey":d,"x-token":p}},g=jrequest.requestNormal(m,u,{success:function(e,t){if(!r){let{responseURL:i}=t,a=i.replace(/(\/navigator\/general)/g,"");r=!0;let{code:p,data:m={}}=e,{servers:E,user_id:u}=m,g={servers:E,userId:u,code:p,url:a};// 默认规则:导航和 CMP 的协议必须一致
|
|
89
89
|
utils.isEmpty(E)||(Storage.set(c,u),Storage.setPrefix(`${d}_${u}`),l=common.getNaviStorageKey(),Storage.set(l,g),o.info({tag:LOG_MODULE.NAV_REQEST,remote:g})),n(g),s()}},fail:function(t){a.push(t),utils.isEqual(a.length,e.length)&&n(t.result)}});i.push(g)}):(o.info({tag:LOG_MODULE.NAV_REQEST,local:E}),n(E))};var Network={detect,getNavis};function Consumer(){let e=[],t=!1,n=!1,s=(t,n)=>n?e.unshift(t):void e.push(t),o=s=>{// 如果正在执行,终止本次任务,执行任务结束后自动消费队列 ntf, 1 是首次,所以判断大于 1
|
|
90
90
|
if(n)return;n=!0,t=utils.isEqual(e.length,0);let i=e.shift(),r={item:i},a=()=>{n=!1,o(s)};t?n=!1:s(r,a)};return{consume:o,produce:s}}function MessageSyncer(e,t,n,{logger:s}){let o=Consumer(),i=i=>{function r(s,o){let{msg:i}=s,r=common.updateSyncTime({...i,io:n});if(r||utils.isEqual(i.name,MESSAGE_TYPE.STREAM_TEXT)){let{msgIndex:n,ackIndex:s}=i,o={msgIndex:n,ackIndex:s};e(SIGNAL_CMD.PUBLISH_ACK,o),t.emit(SIGNAL_NAME.CMD_RECEIVED,i)}o()}function a(i,r){let{user:a,msg:d,name:p,$message:c}=i,m=Storage.get(STORAGE.SYNC_RECEIVED_MSG_TIME).time||1700927161470,l=Storage.get(STORAGE.SYNC_SENT_MSG_TIME).time||1700927161470;// 如果本地记录时间戳大于 ntf 中的接收时间,认为消息已被当前端接收过,不再执行拉取动作
|
|
91
|
-
if(m>=d.receiveTime)return s.info({tag:LOG_MODULE.MSG_SYNC,syncReceiveTime:m,msg:d}),r();let E={userId:a.id,syncTime:m,containsSendBox:!0,sendBoxSyncTime:l,topic:COMMAND_TOPICS.SYNC_MESSAGES};e(SIGNAL_CMD.QUERY,E,({isFinished:e,messages:a,code:p})=>{if(a=a||[],s.info({tag:LOG_MODULE.MSG_SYNC,data:E,msg:d,code:p,count:a.length}),!utils.isEqual(p,ErrorType.COMMAND_SUCCESS.code))return r();let m=[];utils.forEach(a,(e,t)=>{let{flags:n,sentTime:s,isSender:o}=e,i=common.formatter.toMsg(n);i.isStorage&&m.push(e)}),c.insertBatchMsgs({msgs:utils.clone(m)}).then(()=>{utils.forEach(a,(s,o)=>{let{sentTime:i,isSender:r}=s,d=common.updateSyncTime({sentTime:i,isSender:r,io:n});if(d){let n=e&&utils.isEqual(a.length-1,o);t.emit(SIGNAL_NAME.CMD_RECEIVED,[s,n])}});let s=!e;s&&o.produce(i,s),r()})})}function d(n,i){let{user:r,name:a,time:d,$conversation:p}=n,c=Storage.get(STORAGE.SYNC_CONVERSATION_TIME).time||0;if(c>d)return s.info({tag:LOG_MODULE.CONV_SYNC,syncTime:c,time:d}),i();let m={userId:r.id,syncTime:c,topic:COMMAND_TOPICS.SYNC_CONVERSATIONS,count:200};e(SIGNAL_CMD.QUERY,m,e=>{let{isFinished:r,conversations:a,code:d}=e;if(s.info({tag:LOG_MODULE.CONV_SYNC,data:m,code:d,count:a.length}),!utils.isEqual(d,ErrorType.COMMAND_SUCCESS.code))return t.emit(SIGNAL_NAME.CMD_SYNC_CONVERSATION_FINISHED,{}),i();let l=a.length,E=a[l-1]||{syncTime:0},{syncTime:u}=E;u>c&&(Storage.set(STORAGE.SYNC_CONVERSATION_TIME,{time:u}),n=utils.extend(n,{time:u})),a=utils.clone(a),p._batchInsertConversations({conversations:a,syncTime:u}).then(e=>{t.emit(SIGNAL_NAME.CMD_SYNC_CONVERSATIONS_PROGRESS,e);let s=!r;s?o.produce(n,s):t.emit(SIGNAL_NAME.CMD_SYNC_CONVERSATION_FINISHED,{}),i()})})}o.produce(i),o.consume(({item:e},t)=>{let{name:n}=e;utils.isEqual(n,SIGNAL_NAME.CMD_RECEIVED)&&r(e,t),utils.isEqual(n,SIGNAL_NAME.S_SYNC_CONVERSATION_NTF)&&d(e,t),utils.isEqual(n,SIGNAL_NAME.S_NTF)&&a(e,t)})};return{exec:i}}let chatroomCacher=Cache();var chatroomCacher$1={set:(e,t)=>{let n=chatroomCacher.get(e),{msgs:s=[]}=t;200<=s.length&&(s.shift(0),t=utils.extend(t,{msgs:s})),n=utils.extend(n,t),chatroomCacher.set(e,n)},get:e=>{let t=chatroomCacher.get(e);return t},remove:e=>{chatroomCacher.remove(e)},getAll:()=>chatroomCacher.getAll()};function ChatroomSyncer(e,t,n,{logger:s}){let o=Consumer(),i=n=>{function i(e,t){let{msg:n}=e,o=chatroomCacher$1.get(n.targetId),{isJoined:i}=o;s.info({tag:LOG_MODULE.MSG_SYNC,...e,isJoined:i}),i?(utils.isEqual(n.type,NOTIFY_TYPE.CHATROOM)&&a(e,t),utils.isEqual(n.type,NOTIFY_TYPE.CHATROOM_DESTORY)&&r(e,t)):t()}function r(e,n){let{msg:s}=e,o=s.targetId;t.emit(SIGNAL_NAME.CMD_CHATROOM_DESTROY,{id:o}),n()}function a(n,o){let{msg:i}=n,r=i.targetId,a=d(r);if(a>=i.receiveTime&&0<i.receiveTime)return s.info({tag:LOG_MODULE.MSG_SYNC,syncTime:a,msg:i}),o();if(i.isNotSync)return s.info({tag:LOG_MODULE.MSG_SYNC,syncTime:a,msg:i}),p(i.targetId,i.receiveTime),o();let c=i.count||50,m={syncTime:a,chatroomId:r,count:c,topic:COMMAND_TOPICS.SYNC_CHATROOM_MESSAGES};e(SIGNAL_CMD.QUERY,m,({messages:e,code:n})=>{if(e=e||[],s.info({tag:LOG_MODULE.MSG_SYNC,data:m,msg:i,code:n,count:e.length}),!utils.isEqual(n,ErrorType.COMMAND_SUCCESS.code))return o();let{msgs:a=[]}=chatroomCacher$1.get(r);utils.forEach(e,e=>{p(e.conversationId,e.sentTime);let{messageId:n}=e,s=utils.isInclude(a,n);s||(a.push(n),t.emit(SIGNAL_NAME.CMD_RECEIVED,[e]))}),chatroomCacher$1.set(r,{msgs:a}),o()})}function d(e){let t=chatroomCacher$1.get(e);return t.syncMsgTime||0}function p(e,t){let n=d(e);t>n&&chatroomCacher$1.set(e,{syncMsgTime:t})}o.produce(n),o.consume(({item:e},t)=>{let{name:n}=e;utils.isEqual(n,SIGNAL_NAME.S_NTF)&&i(e,t)})};return{exec:i}}function ChatroomAttSyncer(e,t,n,{logger:s}){let o=Consumer(),i=n=>{function i(e,t){s.info({tag:LOG_MODULE.MSG_SYNC,...e});let{msg:n}=e,o=chatroomCacher$1.get(n.targetId),{isJoined:i}=o;utils.isEqual(n.type,NOTIFY_TYPE.CHATROOM_ATTR)&&i&&r(e,t)}function r(n,o){let{msg:i}=n,r=i.targetId,p=a(r);if(p>=i.receiveTime&&0<i.receiveTime)return o();let c={syncTime:p,chatroomId:r,targetId:r,topic:COMMAND_TOPICS.SYNC_CHATROOM_ATTRS};e(SIGNAL_CMD.QUERY,c,e=>{let{code:n,attrs:r,chatroomId:a}=e;return r=r||[],s.info({tag:LOG_MODULE.MSG_SYNC,data:c,msg:i,code:n,count:r.length}),utils.isEqual(n,ErrorType.COMMAND_SUCCESS.code)?void(utils.forEach(r,e=>{d(a,e.updateTime)}),t.emit(SIGNAL_NAME.CMD_CHATROOM_ATTR_RECEIVED,{attrs:r,chatroomId:a}),o()):o()})}function a(e){let t=chatroomCacher$1.get(e);return t.syncAttTime||0}function d(e,t){let n=a(e);t>n&&chatroomCacher$1.set(e,{syncAttTime:t})}o.produce(n),o.consume(({item:e},t)=>{let{name:n}=e;utils.isEqual(n,SIGNAL_NAME.S_NTF)&&i(e,t)})};return{exec:i}}function TagSyncer(e,t,n,{logger:s}){let o=({$conversation:e})=>{let{id:s}=n.getCurrentUser(),o={topic:COMMAND_TOPICS.CONVERSATION_TAG_QUERY,userId:s};n.sendCommand(SIGNAL_CMD.QUERY,o,n=>{let{code:s,tags:o}=n;utils.isEqual(ErrorType.COMMAND_SUCCESS.code,s)&&(utils.map(o,e=>{let t=CONVERSATION_TAG[e.id]||{};return utils.extend(e,t),e}),e._batchInsertTags(o).then(e=>{t.emit(SIGNAL_NAME.CMD_SYNC_TAG_FINISHED,e)}))})};return{exec:o}}function Timer(e={}){let t={timeout:60000};utils.extend(t,e);let{timeout:n}=t,s=0,o=utils.noop,i=e=>{o=e,s=setInterval(()=>{o()},n)},r=()=>{clearInterval(s)},a=()=>{r(),i(o)};return{resume:i,pause:r,reset:a}}function Counter(e={}){let t={timeout:
|
|
91
|
+
if(m>=d.receiveTime)return s.info({tag:LOG_MODULE.MSG_SYNC,syncReceiveTime:m,msg:d}),r();let E={userId:a.id,syncTime:m,containsSendBox:!0,sendBoxSyncTime:l,topic:COMMAND_TOPICS.SYNC_MESSAGES};e(SIGNAL_CMD.QUERY,E,({isFinished:e,messages:a,code:p})=>{if(a=a||[],s.info({tag:LOG_MODULE.MSG_SYNC,data:E,msg:d,code:p,count:a.length}),!utils.isEqual(p,ErrorType.COMMAND_SUCCESS.code))return r();let m=[];utils.forEach(a,(e,t)=>{let{flags:n,sentTime:s,isSender:o}=e,i=common.formatter.toMsg(n);i.isStorage&&m.push(e)}),c.insertBatchMsgs({msgs:utils.clone(m)}).then(()=>{utils.forEach(a,(s,o)=>{let{sentTime:i,isSender:r}=s,d=common.updateSyncTime({sentTime:i,isSender:r,io:n});if(d){let n=e&&utils.isEqual(a.length-1,o);t.emit(SIGNAL_NAME.CMD_RECEIVED,[s,n])}});let s=!e;s&&o.produce(i,s),r()})})}function d(n,i){let{user:r,name:a,time:d,$conversation:p}=n,c=Storage.get(STORAGE.SYNC_CONVERSATION_TIME).time||0;if(c>d)return s.info({tag:LOG_MODULE.CONV_SYNC,syncTime:c,time:d}),i();let m={userId:r.id,syncTime:c,topic:COMMAND_TOPICS.SYNC_CONVERSATIONS,count:200};e(SIGNAL_CMD.QUERY,m,e=>{let{isFinished:r,conversations:a,code:d}=e;if(s.info({tag:LOG_MODULE.CONV_SYNC,data:m,code:d,count:a.length}),!utils.isEqual(d,ErrorType.COMMAND_SUCCESS.code))return t.emit(SIGNAL_NAME.CMD_SYNC_CONVERSATION_FINISHED,{}),i();let l=a.length,E=a[l-1]||{syncTime:0},{syncTime:u}=E;u>c&&(Storage.set(STORAGE.SYNC_CONVERSATION_TIME,{time:u}),n=utils.extend(n,{time:u})),a=utils.clone(a),p._batchInsertConversations({conversations:a,syncTime:u}).then(e=>{t.emit(SIGNAL_NAME.CMD_SYNC_CONVERSATIONS_PROGRESS,e);let s=!r;s?o.produce(n,s):t.emit(SIGNAL_NAME.CMD_SYNC_CONVERSATION_FINISHED,{}),i()})})}o.produce(i),o.consume(({item:e},t)=>{let{name:n}=e;utils.isEqual(n,SIGNAL_NAME.CMD_RECEIVED)&&r(e,t),utils.isEqual(n,SIGNAL_NAME.S_SYNC_CONVERSATION_NTF)&&d(e,t),utils.isEqual(n,SIGNAL_NAME.S_NTF)&&a(e,t)})};return{exec:i}}let chatroomCacher=Cache();var chatroomCacher$1={set:(e,t)=>{let n=chatroomCacher.get(e),{msgs:s=[]}=t;200<=s.length&&(s.shift(0),t=utils.extend(t,{msgs:s})),n=utils.extend(n,t),chatroomCacher.set(e,n)},get:e=>{let t=chatroomCacher.get(e);return t},remove:e=>{chatroomCacher.remove(e)},getAll:()=>chatroomCacher.getAll()};function ChatroomSyncer(e,t,n,{logger:s}){let o=Consumer(),i=n=>{function i(e,t){let{msg:n}=e,o=chatroomCacher$1.get(n.targetId),{isJoined:i}=o;s.info({tag:LOG_MODULE.MSG_SYNC,...e,isJoined:i}),i?(utils.isEqual(n.type,NOTIFY_TYPE.CHATROOM)&&a(e,t),utils.isEqual(n.type,NOTIFY_TYPE.CHATROOM_DESTORY)&&r(e,t)):t()}function r(e,n){let{msg:s}=e,o=s.targetId;t.emit(SIGNAL_NAME.CMD_CHATROOM_DESTROY,{id:o}),n()}function a(n,o){let{msg:i}=n,r=i.targetId,a=d(r);if(a>=i.receiveTime&&0<i.receiveTime)return s.info({tag:LOG_MODULE.MSG_SYNC,syncTime:a,msg:i}),o();if(i.isNotSync)return s.info({tag:LOG_MODULE.MSG_SYNC,syncTime:a,msg:i}),p(i.targetId,i.receiveTime),o();let c=i.count||50,m={syncTime:a,chatroomId:r,count:c,topic:COMMAND_TOPICS.SYNC_CHATROOM_MESSAGES};e(SIGNAL_CMD.QUERY,m,({messages:e,code:n})=>{if(e=e||[],s.info({tag:LOG_MODULE.MSG_SYNC,data:m,msg:i,code:n,count:e.length}),!utils.isEqual(n,ErrorType.COMMAND_SUCCESS.code))return o();let{msgs:a=[]}=chatroomCacher$1.get(r);utils.forEach(e,e=>{p(e.conversationId,e.sentTime);let{messageId:n}=e,s=utils.isInclude(a,n);s||(a.push(n),t.emit(SIGNAL_NAME.CMD_RECEIVED,[e]))}),chatroomCacher$1.set(r,{msgs:a}),o()})}function d(e){let t=chatroomCacher$1.get(e);return t.syncMsgTime||0}function p(e,t){let n=d(e);t>n&&chatroomCacher$1.set(e,{syncMsgTime:t})}o.produce(n),o.consume(({item:e},t)=>{let{name:n}=e;utils.isEqual(n,SIGNAL_NAME.S_NTF)&&i(e,t)})};return{exec:i}}function ChatroomAttSyncer(e,t,n,{logger:s}){let o=Consumer(),i=n=>{function i(e,t){s.info({tag:LOG_MODULE.MSG_SYNC,...e});let{msg:n}=e,o=chatroomCacher$1.get(n.targetId),{isJoined:i}=o;utils.isEqual(n.type,NOTIFY_TYPE.CHATROOM_ATTR)&&i&&r(e,t)}function r(n,o){let{msg:i}=n,r=i.targetId,p=a(r);if(p>=i.receiveTime&&0<i.receiveTime)return o();let c={syncTime:p,chatroomId:r,targetId:r,topic:COMMAND_TOPICS.SYNC_CHATROOM_ATTRS};e(SIGNAL_CMD.QUERY,c,e=>{let{code:n,attrs:r,chatroomId:a}=e;return r=r||[],s.info({tag:LOG_MODULE.MSG_SYNC,data:c,msg:i,code:n,count:r.length}),utils.isEqual(n,ErrorType.COMMAND_SUCCESS.code)?void(utils.forEach(r,e=>{d(a,e.updateTime)}),t.emit(SIGNAL_NAME.CMD_CHATROOM_ATTR_RECEIVED,{attrs:r,chatroomId:a}),o()):o()})}function a(e){let t=chatroomCacher$1.get(e);return t.syncAttTime||0}function d(e,t){let n=a(e);t>n&&chatroomCacher$1.set(e,{syncAttTime:t})}o.produce(n),o.consume(({item:e},t)=>{let{name:n}=e;utils.isEqual(n,SIGNAL_NAME.S_NTF)&&i(e,t)})};return{exec:i}}function TagSyncer(e,t,n,{logger:s}){let o=({$conversation:e})=>{let{id:s}=n.getCurrentUser(),o={topic:COMMAND_TOPICS.CONVERSATION_TAG_QUERY,userId:s};n.sendCommand(SIGNAL_CMD.QUERY,o,n=>{let{code:s,tags:o}=n;utils.isEqual(ErrorType.COMMAND_SUCCESS.code,s)&&(utils.map(o,e=>{let t=CONVERSATION_TAG[e.id]||{};return utils.extend(e,t),e}),e._batchInsertTags(o).then(e=>{t.emit(SIGNAL_NAME.CMD_SYNC_TAG_FINISHED,e)}))})};return{exec:o}}function Timer(e={}){let t={timeout:60000};utils.extend(t,e);let{timeout:n}=t,s=0,o=utils.noop,i=e=>{o=e,s=setInterval(()=>{o()},n)},r=()=>{clearInterval(s)},a=()=>{r(),i(o)};return{resume:i,pause:r,reset:a}}function Counter(e={}){let t={timeout:9000};utils.extend(t,e);let{timeout:n}=t,s=0,o=e=>{s=setTimeout(()=>{e(t)},n)},i=()=>{clearTimeout(s)};return{start:o,clear:i}}let VERSION="1.8.7";var WebWS=WebSocket;function UniWS(e){let t={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},n={readyState:t.CONNECTING,onopen:()=>{},onclose:()=>{},onerror:()=>{},onmessage:()=>{}},s=uni.connectSocket({url:e,complete:()=>{}});return s.onOpen(()=>{n.readyState=t.OPEN,n.onopen()}),s.onClose(()=>{n.readyState=t.CLOSED,n.onclose()}),s.onError(()=>{n.readyState=t.CLOSED,n.onerror()}),s.onMessage(e=>{n.onmessage(e)}),n.send=e=>{s.send({data:e})},n.close=()=>{s.close()},n}let JWebSocket=WebWS;common.isUni()&&(JWebSocket=UniWS);var JWebSocket$1=JWebSocket;function NetworkWatcher(e){let t=()=>{let t=e.ononline||utils.noop;t()},n=()=>{"object"==typeof window&&window.addEventListener&&(window.removeEventListener("online",t),window.addEventListener("online",t))};return{watch:n}}/*
|
|
92
92
|
fileCompressLimit: 图片缩略图压缩限制,小于设置数值将不执行压缩,单位 KB
|
|
93
93
|
config = { appkey, nav, isSync, upload, uploadType, fileCompressLimit }
|
|
94
94
|
*/function IO(e){function t(){let e=s({ignores:[]}),t=utils.find(u,e=>e===g),n=u[t]||{};return P(),n.onmessage=utils.noop,n.onclose=utils.noop,n.onerror=utils.noop,_.remove(CONNECT_TOOL.RECONNECT_COUNT),_.remove(CONNECT_TOOL.RECONNECT_FREQUENCY),q(e,({next:e})=>{e=e||utils.noop,e()})}function n(){l&&H.exec({msg:{type:NOTIFY_TYPE.MSG},name:SIGNAL_NAME.S_NTF,$message:e.$message,user:{id:U.id}})}function s(e={}){let{ignores:t=["token"]}=e,n=utils.clone(U);return utils.forEach(t,e=>{delete n[e]}),n}function o(){return e}function i(t){utils.extend(e,t)}function r(e,t){let n={topic:COMMAND_TOPICS.GET_USER_INFO,userId:e.id};F(SIGNAL_CMD.QUERY,n,e=>{t(e)})}let a=Emitter(),{appkey:d,navList:p,serverList:m=[],isSync:l=!0,reconnectCount:E=100,logger:c}=e;utils.isArray(p)||(p=["https://nav.fake.com"]);/*
|