jugglechat-websdk 1.8.5 → 1.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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.6
|
|
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
|
|
@@ -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(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:10000};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.
|
|
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:10000};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.6";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"]);/*
|
|
@@ -191,7 +191,7 @@ let{poster:t}=E;if(t)return o(e,n);O({type:p,ext:"png"}).then(t=>utils.isEqual(E
|
|
|
191
191
|
conversationType: 1,
|
|
192
192
|
conversationId: '',
|
|
193
193
|
}
|
|
194
|
-
*/return{sendMessage:c,sendMassMessage:m,getMessages:l,removeMessages:g,getMessagesByIds:E,clearMessage:u,recallMessage:T,readMessage:y,getMessageReadDetails:_,updateMessage:C,insertMessage:x,updateMessageAttr:U,setSearchContent:b,getMentionMessages:S,getFileToken:O,sendFileMessage:I,sendImageMessage:R,sendVoiceMessage:A,sendVideoMessage:N,sendMergeMessage:M,getMergeMessages:v,getFirstUnreadMessage:h,searchMessages:D,addMessageReaction:G,removeMessageReaction:k,subscribeMessage:V,unsubscribeMessage:F,translate:q,setTopMessage:H,getTopMessage:B,addFavoriteMessages:j,removeFavoriteMessages:Y,getFavoriteMessages:Q,getContextMessages:s,_uploadFile:f}}function Socket$1(e,t,n){CONNECT_STATE.DISCONNECTED,e.on(SIGNAL_NAME.CONN_CHANGED,e=>{let{state:s,code:o="",user:i={}}=e;n.info({tag:LOG_MODULE.CON_STATUS,state:s,code:o,userId:i.id}),t.emit(EVENT.STATE_CHANGED,e)});let s=t=>utils.deferred((s,o)=>{let i=common.check(e,t,FUNC_PARAM_CHECKER.CONNECT,!0);if(!utils.isEmpty(i))return o(i);let{token:r=""}=t;return r=r.trim(),t=utils.extend(t,{token:r}),e.isNeedConnect()?void(n.info({tag:LOG_MODULE.CON_CONNECT}),e.connect(t,({error:t,user:n,next:i})=>{let{code:r,msg:a}=t;if(utils.isEqual(r,ErrorType.CONNECT_SUCCESS.code)){let t=e.getConfig();return t.isPC?(utils.extend(n,{code:r,next:i}),s(n)):(i(),s(n))}o({code:r,msg:a})})):o(ErrorType.REPREAT_CONNECTION)}),o=()=>utils.deferred(t=>{n.info({tag:LOG_MODULE.CON_DISCONNECT}),e.disconnect();let s=e.getConfig();s.isPC||e.emit(SIGNAL_NAME.CLIENT_CLEAR_MEMORY_CACHE,{}),t()}),i=()=>utils.deferred((e,t)=>{let n=Storage.get(STORAGE.APP_DEVICE),s=n.id||"";return utils.isEmpty(s)&&(s=utils.getDeviceID(),Storage.set(STORAGE.APP_DEVICE,{id:s})),e({id:s})}),r=t=>{utils.isFunction(t)||(t=utils.noop),e.setServerUrlProider(t)},a=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.UPLOAD_PUSH_TOKEN);if(!utils.isEmpty(o))return s(o);let{id:i}=e.getCurrentUser(),r={topic:COMMAND_TOPICS.UPLOAD_PUSH_TOKEN,...t,userId:i};e.sendCommand(SIGNAL_CMD.QUERY,r,e=>{let{code:t,msg:o}=e;return utils.isEqual(ErrorType.COMMAND_SUCCESS.code,t)?void n():s({code:t,msg:o})})}),d=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.SWITCH_PUSH);if(!utils.isEmpty(o))return s(o);let{id:i}=e.getCurrentUser(),r={topic:COMMAND_TOPICS.SWITCH_PUSH,...t,userId:i};e.sendCommand(SIGNAL_CMD.QUERY,r,e=>{let{code:t,msg:o}=e;return utils.isEqual(ErrorType.COMMAND_SUCCESS.code,t)?void n():s({code:t,msg:o})})});return{connect:s,disconnect:o,setServerUrlProider:r,getDevice:i,isNeedConnect:e.isNeedConnect,isConnected:e.isConnected,getCurrentUser:e.getCurrentUser,uploadPushToken:a,switchPush:d}}let cacher=Cache(),heap=({chatroomId:e,attrs:t})=>{let n=[],s=[],{attrs:o}=cacher.get(e);return o=o||[],utils.forEach(t,e=>{let{key:t,value:i,updateTime:r,userId:a,type:d}=e,p={key:t,value:i,updateTime:r,userId:a},c=utils.find(o,e=>utils.isEqual(e.key,t));utils.isEqual(c,-1)&&utils.isEqual(d,CHATROOM_ATTR_OP_TYPE.ADD)&&o.push(p),!utils.isEqual(c,-1)&&utils.isEqual(d,CHATROOM_ATTR_OP_TYPE.ADD)&&o.splice(c,1,p),utils.isEqual(d,CHATROOM_ATTR_OP_TYPE.DEL)?(o.splice(c,1),delete p.value,n.push(p)):s.push(p)}),cacher.set(e,{attrs:o}),{updates:s,dels:n}},removeAll=e=>{cacher.remove(e)},getAll=e=>{let{id:t}=e,n=cacher.get(t),{attrs:s=[]}=n;return{id:t,attributes:s}},removeAttrs=e=>{let{id:t,attributes:n}=e,s=utils.map(n,e=>({...e,type:CHATROOM_ATTR_OP_TYPE.DEL}));heap({chatroomId:t,attrs:s})},getAttrs=e=>{let{id:t,attributes:n}=e,{attrs:s=[]}=cacher.get(t),o=[];return utils.forEach(s,e=>{utils.forEach(n,t=>{utils.isEqual(t.key,e.key)&&o.push(e)})}),{id:t,attributes:o}};var attrCaher={heap,removeAll,getAll,getAttrs,removeAttrs};function Chatroom$1(e,t,n){function s(e){chatroomCacher$1.remove(e),attrCaher.removeAll(e)}function o(t){return utils.deferred((s,o)=>{let r=common.check(e,t,FUNC_PARAM_CHECKER.JOINCHATROOM);if(!utils.isEmpty(r))return o(r);let{id:a}=t,d=chatroomCacher$1.get(a);if(d.isJoined)return s();let p={...utils.clone(t),isAutoCreate:!0};n.info({tag:LOG_MODULE.CHATROOM_USER_JOIN,...p}),i(p,{success:s,fail:o})})}function i(t,s){let{id:o}=t,i={topic:COMMAND_TOPICS.JOIN_CHATROOM,chatroom:t,conversationId:o},r=t.count;utils.isUndefined(r)&&(r=50),e.sendCommand(SIGNAL_CMD.QUERY,i,i=>{let{code:a,timestamp:d}=i;if(n.info({tag:LOG_MODULE.CHATROOM_USER_JOIN,...t,code:a}),utils.isEqual(ErrorType.COMMAND_SUCCESS.code,a)){let n=chatroomCacher$1.get(t.id),i=n.syncMsgTime||0,a=utils.isEqual(0,r),p=i;a&&utils.isEqual(i,0)&&(p=d),0<p&&(p+=1);let c=[{name:SIGNAL_NAME.S_NTF,msg:{receiveTime:p,isNotSync:a,count:r,type:NOTIFY_TYPE.CHATROOM,targetId:o}},{name:SIGNAL_NAME.S_NTF,msg:{receiveTime:0,type:NOTIFY_TYPE.CHATROOM_ATTR,targetId:o}}];return
|
|
194
|
+
*/return{sendMessage:c,sendMassMessage:m,getMessages:l,removeMessages:g,getMessagesByIds:E,clearMessage:u,recallMessage:T,readMessage:y,getMessageReadDetails:_,updateMessage:C,insertMessage:x,updateMessageAttr:U,setSearchContent:b,getMentionMessages:S,getFileToken:O,sendFileMessage:I,sendImageMessage:R,sendVoiceMessage:A,sendVideoMessage:N,sendMergeMessage:M,getMergeMessages:v,getFirstUnreadMessage:h,searchMessages:D,addMessageReaction:G,removeMessageReaction:k,subscribeMessage:V,unsubscribeMessage:F,translate:q,setTopMessage:H,getTopMessage:B,addFavoriteMessages:j,removeFavoriteMessages:Y,getFavoriteMessages:Q,getContextMessages:s,_uploadFile:f}}function Socket$1(e,t,n){CONNECT_STATE.DISCONNECTED,e.on(SIGNAL_NAME.CONN_CHANGED,e=>{let{state:s,code:o="",user:i={}}=e;n.info({tag:LOG_MODULE.CON_STATUS,state:s,code:o,userId:i.id}),t.emit(EVENT.STATE_CHANGED,e)});let s=t=>utils.deferred((s,o)=>{let i=common.check(e,t,FUNC_PARAM_CHECKER.CONNECT,!0);if(!utils.isEmpty(i))return o(i);let{token:r=""}=t;return r=r.trim(),t=utils.extend(t,{token:r}),e.isNeedConnect()?void(n.info({tag:LOG_MODULE.CON_CONNECT}),e.connect(t,({error:t,user:n,next:i})=>{let{code:r,msg:a}=t;if(utils.isEqual(r,ErrorType.CONNECT_SUCCESS.code)){let t=e.getConfig();return t.isPC?(utils.extend(n,{code:r,next:i}),s(n)):(i(),s(n))}o({code:r,msg:a})})):o(ErrorType.REPREAT_CONNECTION)}),o=()=>utils.deferred(t=>{n.info({tag:LOG_MODULE.CON_DISCONNECT}),e.disconnect();let s=e.getConfig();s.isPC||e.emit(SIGNAL_NAME.CLIENT_CLEAR_MEMORY_CACHE,{}),t()}),i=()=>utils.deferred((e,t)=>{let n=Storage.get(STORAGE.APP_DEVICE),s=n.id||"";return utils.isEmpty(s)&&(s=utils.getDeviceID(),Storage.set(STORAGE.APP_DEVICE,{id:s})),e({id:s})}),r=t=>{utils.isFunction(t)||(t=utils.noop),e.setServerUrlProider(t)},a=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.UPLOAD_PUSH_TOKEN);if(!utils.isEmpty(o))return s(o);let{id:i}=e.getCurrentUser(),r={topic:COMMAND_TOPICS.UPLOAD_PUSH_TOKEN,...t,userId:i};e.sendCommand(SIGNAL_CMD.QUERY,r,e=>{let{code:t,msg:o}=e;return utils.isEqual(ErrorType.COMMAND_SUCCESS.code,t)?void n():s({code:t,msg:o})})}),d=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.SWITCH_PUSH);if(!utils.isEmpty(o))return s(o);let{id:i}=e.getCurrentUser(),r={topic:COMMAND_TOPICS.SWITCH_PUSH,...t,userId:i};e.sendCommand(SIGNAL_CMD.QUERY,r,e=>{let{code:t,msg:o}=e;return utils.isEqual(ErrorType.COMMAND_SUCCESS.code,t)?void n():s({code:t,msg:o})})});return{connect:s,disconnect:o,setServerUrlProider:r,getDevice:i,isNeedConnect:e.isNeedConnect,isConnected:e.isConnected,getCurrentUser:e.getCurrentUser,uploadPushToken:a,switchPush:d}}let cacher=Cache(),heap=({chatroomId:e,attrs:t})=>{let n=[],s=[],{attrs:o}=cacher.get(e);return o=o||[],utils.forEach(t,e=>{let{key:t,value:i,updateTime:r,userId:a,type:d}=e,p={key:t,value:i,updateTime:r,userId:a},c=utils.find(o,e=>utils.isEqual(e.key,t));utils.isEqual(c,-1)&&utils.isEqual(d,CHATROOM_ATTR_OP_TYPE.ADD)&&o.push(p),!utils.isEqual(c,-1)&&utils.isEqual(d,CHATROOM_ATTR_OP_TYPE.ADD)&&o.splice(c,1,p),utils.isEqual(d,CHATROOM_ATTR_OP_TYPE.DEL)?(o.splice(c,1),delete p.value,n.push(p)):s.push(p)}),cacher.set(e,{attrs:o}),{updates:s,dels:n}},removeAll=e=>{cacher.remove(e)},getAll=e=>{let{id:t}=e,n=cacher.get(t),{attrs:s=[]}=n;return{id:t,attributes:s}},removeAttrs=e=>{let{id:t,attributes:n}=e,s=utils.map(n,e=>({...e,type:CHATROOM_ATTR_OP_TYPE.DEL}));heap({chatroomId:t,attrs:s})},getAttrs=e=>{let{id:t,attributes:n}=e,{attrs:s=[]}=cacher.get(t),o=[];return utils.forEach(s,e=>{utils.forEach(n,t=>{utils.isEqual(t.key,e.key)&&o.push(e)})}),{id:t,attributes:o}};var attrCaher={heap,removeAll,getAll,getAttrs,removeAttrs};function Chatroom$1(e,t,n){function s(e){chatroomCacher$1.remove(e),attrCaher.removeAll(e)}function o(t){return utils.deferred((s,o)=>{let r=common.check(e,t,FUNC_PARAM_CHECKER.JOINCHATROOM);if(!utils.isEmpty(r))return o(r);let{id:a}=t,d=chatroomCacher$1.get(a);if(d.isJoined)return s();let p={...utils.clone(t),isAutoCreate:!0};n.info({tag:LOG_MODULE.CHATROOM_USER_JOIN,...p}),i(p,{success:s,fail:o})})}function i(t,s){let{id:o}=t,i={topic:COMMAND_TOPICS.JOIN_CHATROOM,chatroom:t,conversationId:o},r=t.count;utils.isUndefined(r)&&(r=50),chatroomCacher$1.set(t.id,{isJoined:!0}),e.sendCommand(SIGNAL_CMD.QUERY,i,i=>{let{code:a,timestamp:d}=i;if(n.info({tag:LOG_MODULE.CHATROOM_USER_JOIN,...t,code:a}),utils.isEqual(ErrorType.COMMAND_SUCCESS.code,a)){let n=chatroomCacher$1.get(t.id),i=n.syncMsgTime||0,a=utils.isEqual(0,r),p=i;a&&utils.isEqual(i,0)&&(p=d),0<p&&(p+=1);let c=[{name:SIGNAL_NAME.S_NTF,msg:{receiveTime:p,isNotSync:a,count:r,type:NOTIFY_TYPE.CHATROOM,targetId:o}},{name:SIGNAL_NAME.S_NTF,msg:{receiveTime:0,type:NOTIFY_TYPE.CHATROOM_ATTR,targetId:o}}];return e.sync(c),s.success()}let p=common.getError(a);s.fail(p)})}e.on(SIGNAL_NAME.CMD_CHATROOM_ATTR_RECEIVED,e=>{n.info({tag:LOG_MODULE.CHATROOM_ATTR_RECEIVE,...e});let{dels:s,updates:o}=attrCaher.heap(e),{chatroomId:i}=e;utils.isEmpty(s)||t.emit(EVENT.CHATROOM_ATTRIBUTE_DELETED,{id:i,attributes:s}),utils.isEmpty(o)||t.emit(EVENT.CHATROOM_ATTRIBUTE_UPDATED,{id:i,attributes:o})}),e.on(SIGNAL_NAME.CMD_CHATROOM_DESTROY,e=>{n.info({tag:LOG_MODULE.CHATROOM_DESTORYED,...e}),t.emit(EVENT.CHATROOM_DESTROYED,e)}),e.on(SIGNAL_NAME.CMD_CHATROOM_EVENT,e=>{let{type:o,chatroomId:i}=e;n.info({tag:LOG_MODULE.CHATROOM_SERVER_EVENT,...e}),(utils.isEqual(CHATROOM_EVENT_TYPE.FALLOUT,o)||utils.isEqual(CHATROOM_EVENT_TYPE.QUIT,o))&&(s(i),t.emit(EVENT.CHATROOM_USER_QUIT,e)),utils.isEqual(CHATROOM_EVENT_TYPE.KICK,o)&&(s(i),t.emit(EVENT.CHATROOM_USER_KICKED,e))}),e.on(SIGNAL_NAME.CMD_CHATROOM_REJOIN,()=>{let e=chatroomCacher$1.getAll(),t=[];utils.forEach(e,(e,n)=>{t.push(n)}),n.info({tag:LOG_MODULE.CHATROOM_USER_REJOIN,chatroomIds:t}),utils.iterator(t,(e,t,n)=>{let s={id:e},o=()=>{n||t()};i(s,{success:o,fail:o})})});let r=t=>utils.deferred((s,o)=>{let r=common.check(e,t,FUNC_PARAM_CHECKER.JOINCHATROOM);if(!utils.isEmpty(r))return o(r);let{id:a}=t,d=chatroomCacher$1.get(a);if(d.isJoined)return s();let p={...utils.clone(t),isAutoCreate:!1};n.info({tag:LOG_MODULE.CHATROOM_USER_JOIN,...p}),i(p,{success:s,fail:o})}),a=t=>utils.deferred((o,i)=>{let r=common.check(e,t,FUNC_PARAM_CHECKER.QUITCHATROOM);if(!utils.isEmpty(r))return i(r);let a=chatroomCacher$1.get(t.id);if(!a.isJoined)return o();n.info({tag:LOG_MODULE.CHATROOM_USER_QUIT,...t});let d={topic:COMMAND_TOPICS.QUIT_CHATROOM,chatroom:t};e.sendCommand(SIGNAL_CMD.QUERY,d,({code:e})=>{if(n.info({tag:LOG_MODULE.CHATROOM_USER_QUIT,...t,code:e}),utils.isEqual(ErrorType.COMMAND_SUCCESS.code,e))return s(t.id),o();let r=common.getError(e);i(r)})}),d=t=>(t=utils.clone(t),utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.SET_CHATROOM_ATTRS);if(!utils.isEmpty(o))return s(o);let{options:i}=t;utils.isObject(i)||(i={});let{notify:r}=i;if(!utils.isUndefined(r)&&!utils.isString(r)){let e=ErrorType.ILLEGAL_TYPE_PARAMS;return s({code:e.code,msg:`notify ${e.msg},必须是 String 类型`})}t=utils.extend(t,{options:i});let a={topic:COMMAND_TOPICS.SET_CHATROOM_ATTRIBUTES,chatroom:t};attrCaher.removeAttrs(t),e.sendCommand(SIGNAL_CMD.QUERY,a,e=>{let{code:t,success:o,fail:i}=e;if(utils.isEqual(ErrorType.COMMAND_SUCCESS.code,t))return n({success:o,fail:i});let r=common.getError(t);s(r)})})),p=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.REMOVE_CHATROOM_ATTRS);if(!utils.isEmpty(o))return s(o);let{options:i}=t;utils.isObject(i)||(i={});let{notify:r}=i;if(!utils.isUndefined(r)&&!utils.isString(r)){let e=ErrorType.ILLEGAL_TYPE_PARAMS;return s({code:e.code,msg:`notify ${e.msg},必须是 String 类型`})}t=utils.extend(t,{options:i});let a={topic:COMMAND_TOPICS.REMOVE_CHATROOM_ATTRIBUTES,chatroom:t};e.sendCommand(SIGNAL_CMD.QUERY,a,e=>{let{code:o,success:i,fail:r}=e;if(utils.isEqual(ErrorType.COMMAND_SUCCESS.code,o))return attrCaher.removeAttrs({id:t.id,attributes:i}),n({success:i,fail:r});let a=common.getError(o);s(a)})}),c=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.GET_CHATROOM_ATTRS);if(!utils.isEmpty(o))return s(o);let i=attrCaher.getAttrs(t);n(i)}),m=t=>utils.deferred((n,s)=>{let o=common.check(e,t,FUNC_PARAM_CHECKER.GET_ALL_CHATROOM_ATTRS);if(!utils.isEmpty(o))return s(o);let i=attrCaher.getAll(t);n(i)});/*
|
|
195
195
|
let chatroom = {
|
|
196
196
|
id: 'chatroomId',
|
|
197
197
|
attributes: [
|