diff --git a/playwright_test/tests/socketConnection.spec.js b/playwright_test/tests/socketConnection.spec.js new file mode 100644 index 000000000..b3bea16aa --- /dev/null +++ b/playwright_test/tests/socketConnection.spec.js @@ -0,0 +1,316 @@ +import { test, expect } from '@playwright/test'; +import { WIDGET_LOCATORS, LOCATORS } from '../locaterPackage/kmLocators'; +import { URL, APP_ID } from '../utils/kmSecret'; +import { SCRIPT } from '../utils/kmScript'; + +const isWidgetSocketUrl = (url) => /\/stomp/i.test(url) || /kommunicate\.(?:io|net)\/ws/i.test(url); + +const createSocketTracker = (page, log) => { + const socketRecords = []; + + page.on('websocket', (ws) => { + const url = ws.url(); + if (!isWidgetSocketUrl(url)) { + return; + } + + const record = { ws, url, openedAt: Date.now(), closedAt: null }; + socketRecords.push(record); + log?.(`socket:open url=${url} openedAt=${record.openedAt} total=${socketRecords.length}`); + + ws.on('close', () => { + record.closedAt = Date.now(); + log?.( + `socket:close url=${record.url} openedAt=${record.openedAt} closedAt=${record.closedAt}` + ); + }); + }); + + const waitForSocketRecord = async () => { + await page.waitForEvent('websocket', (ws) => isWidgetSocketUrl(ws.url())); + return socketRecords[socketRecords.length - 1]; + }; + + const waitForRecordClose = async (record) => { + if (record.closedAt != null) { + return; + } + await new Promise((resolve) => record.ws.on('close', resolve)); + }; + + const activeSocketCount = () => + socketRecords.filter((record) => record.closedAt === null).length; + + return { + socketRecords, + waitForSocketRecord, + waitForRecordClose, + activeSocketCount, + }; +}; + +const WIDGET_FRAME_NAME = 'Kommunicate widget iframe'; + +const waitForWidgetFrame = async (page, timeout = 5000) => { + const start = Date.now(); + while (Date.now() - start < timeout) { + const frame = page.frame({ name: WIDGET_FRAME_NAME }); + if (frame) { + return frame; + } + await page.waitForTimeout(50); + } + throw new Error('Kommunicate widget iframe not found'); +}; + +const waitForWidgetState = async (page, expectedState, log) => { + const frame = await waitForWidgetFrame(page); + await frame.waitForFunction( + (state) => + !!window.KommunicateCommons && window.KommunicateCommons.IS_WIDGET_OPEN === state, + expectedState, + { timeout: 5000 } + ); + log?.(`widget state ${expectedState ? 'open' : 'closed'}`); + return frame; +}; + +const closeWidgetUI = async (page, getCloseButtonLocator, log) => { + const closeButton = getCloseButtonLocator(); + let closeButtonVisible = false; + try { + await closeButton.waitFor({ state: 'visible', timeout: 500 }); + closeButtonVisible = true; + } catch (error) { + closeButtonVisible = false; + } + + if (closeButtonVisible) { + await closeButton.click(); + } else { + const frame = await waitForWidgetFrame(page); + await frame.evaluate(() => { + if (window.KommunicateCommons?.IS_WIDGET_OPEN) { + window.KommunicateCommons.setWidgetStateOpen(false); + } + }); + log?.('close fallback -> setWidgetStateOpen(false)'); + } + + await waitForWidgetState(page, false, log); +}; + +const configureWidgetPreview = async (page) => { + await page.goto(URL.kmWidgetURL); + + await page.waitForSelector(LOCATORS.envBtn); + await page.click(LOCATORS.envBtn); + await page.click(LOCATORS.appIdField); + await page.keyboard.press('Meta+A'); + await page.type(LOCATORS.appIdField, APP_ID.kmAppId); + await page.click(LOCATORS.scriptFiled); + await page.keyboard.press('Meta+A'); + await page.keyboard.press('Delete'); + await page.type(LOCATORS.scriptFiled, SCRIPT.kmAllBooleanIsTrue); + await page.click(LOCATORS.launchWidgetBtn); + + const iframeLocator = await page.frameLocator(WIDGET_LOCATORS.kmIframe); + const launcher = iframeLocator.locator(WIDGET_LOCATORS.kmLaunchWidget); + const getCloseButtonLocator = () => + page.frameLocator(WIDGET_LOCATORS.kmIframe).locator('#km-chat-widget-close-button'); + + return { iframeLocator, launcher, getCloseButtonLocator }; +}; + +const waitForSocketStatus = async (page, expectedStatus) => { + const iframe = await waitForWidgetFrame(page); + await iframe.waitForFunction( + (status) => window.IS_SOCKET_CONNECTED === status, + expectedStatus, + { timeout: 5000 } + ); + return iframe; +}; + +test.describe('Widget Socket Connection', () => { + test('creates a single socket connection when launcher is clicked', async ({ page }) => { + const log = (...parts) => console.log('[socket-test]', ...parts); + const tracker = createSocketTracker(page, log); + const { launcher, getCloseButtonLocator } = await configureWidgetPreview(page); + + const firstSocketPromise = tracker.waitForSocketRecord(); + const clickTimestamp = Date.now(); + await launcher.click(); + const socketRecord = await firstSocketPromise; + + expect(socketRecord.openedAt).toBeGreaterThanOrEqual(clickTimestamp); + expect(tracker.socketRecords.length).toBe(1); + expect(tracker.activeSocketCount()).toBe(1); + log( + `after first click sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + await waitForWidgetState(page, true, log); + const iframe = await waitForSocketStatus(page, true); + + const uniqueSocketUrls = new Set(tracker.socketRecords.map((record) => record.url)); + expect(uniqueSocketUrls.size).toBe(1); + + await closeWidgetUI(page, getCloseButtonLocator, log); + + expect(tracker.socketRecords.length).toBe(1); + expect(tracker.activeSocketCount()).toBe(1); + log( + `after close sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + // Cleanup to keep the test isolated + await iframe.evaluate(() => { + if (window.Applozic?.ALSocket) { + window.Applozic.ALSocket.disconnect(); + } + }); + await tracker.waitForRecordClose(socketRecord); + expect(tracker.activeSocketCount()).toBe(0); + log('cleanup complete active=0'); + }); + + test('reconnects once after manual disconnect and ignores repeated launcher clicks', async ({ + page, + }) => { + const log = (...parts) => console.log('[socket-test]', ...parts); + const tracker = createSocketTracker(page, log); + const { launcher, getCloseButtonLocator } = await configureWidgetPreview(page); + + const initialSocketPromise = tracker.waitForSocketRecord(); + await launcher.click(); + const initialSocket = await initialSocketPromise; + log( + `initial connect sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + await waitForSocketStatus(page, true); + await waitForWidgetState(page, true, log); + + // Close the widget UI but keep the socket alive + await closeWidgetUI(page, getCloseButtonLocator, log); + + expect(tracker.socketRecords.length).toBe(1); + expect(tracker.activeSocketCount()).toBe(1); + log( + `after closing UI sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + // Manually disconnect the socket and wait for closure + const iframe = await waitForWidgetFrame(page); + await iframe.evaluate(() => { + if (window.Applozic?.ALSocket) { + window.Applozic.ALSocket.disconnect(); + } + }); + log('manual disconnect invoked via iframe'); + await tracker.waitForRecordClose(initialSocket); + expect(tracker.activeSocketCount()).toBe(0); + log( + `after manual disconnect sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + await waitForSocketStatus(page, false); + + const openWidget = async ({ expectNewSocket }) => { + const beforeCount = tracker.socketRecords.length; + const socketPromise = expectNewSocket ? tracker.waitForSocketRecord() : null; + + await launcher.click(); + await waitForWidgetState(page, true, log); + log( + `launcher click expectNewSocket=${expectNewSocket} sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + if (expectNewSocket) { + const record = await socketPromise; + expect(tracker.socketRecords.length).toBe(beforeCount + 1); + expect(record.closedAt).toBeNull(); + log( + `new socket established url=${record.url} openedAt=${record.openedAt} total=${tracker.socketRecords.length}` + ); + return record; + } + + await page.waitForTimeout(500); + expect(tracker.socketRecords.length).toBe(beforeCount); + return tracker.socketRecords[tracker.socketRecords.length - 1]; + }; + + const closeWidget = async () => { + await closeWidgetUI(page, getCloseButtonLocator, log); + log( + `widget closed sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + }; + + const reconnectedSocket = await openWidget({ expectNewSocket: true }); + expect(tracker.activeSocketCount()).toBe(1); + log( + `after reconnection sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + const uniqueSocketUrls = new Set(tracker.socketRecords.map((record) => record.url)); + expect(uniqueSocketUrls.size).toBe(1); + + await closeWidget(); + expect(tracker.activeSocketCount()).toBe(1); + log( + `after closing post-reconnect sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + for (let attempt = 0; attempt < 3; attempt += 1) { + const beforeCount = tracker.socketRecords.length; + await openWidget({ expectNewSocket: false }); + expect(tracker.socketRecords.length).toBe(beforeCount); + expect(tracker.activeSocketCount()).toBe(1); + await closeWidget(); + log( + `repeat attempt=${attempt + 1} sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + } + + expect(tracker.socketRecords.length).toBe(2); + expect(tracker.activeSocketCount()).toBe(1); + log( + `before final cleanup sockets=${ + tracker.socketRecords.length + } active=${tracker.activeSocketCount()}` + ); + + // Final cleanup + await iframe.evaluate(() => { + if (window.Applozic?.ALSocket) { + window.Applozic.ALSocket.disconnect(); + } + }); + await tracker.waitForRecordClose(reconnectedSocket); + expect(tracker.activeSocketCount()).toBe(0); + log(`final cleanup active=${tracker.activeSocketCount()}`); + }); +}); diff --git a/webplugin/development.js b/webplugin/development.js index 1663598f1..33f12e980 100644 --- a/webplugin/development.js +++ b/webplugin/development.js @@ -133,7 +133,7 @@ const generateBuildFiles = () => { copyFileToBuild('template/chat.html', `${buildDir}/chat.html`); // copy applozic.chat.{version}.min.js to build - copyFileToBuild('js/app/applozic.chat-6.2.8.min.js', `${buildDir}/applozic.chat-6.2.8.min.js`); + copyFileToBuild('js/app/applozic.chat-6.3.0.min.js', `${buildDir}/applozic.chat-6.3.0.min.js`); THIRD_PARTY_FILE_INFO.forEach((fileData) => { if (Array.isArray(fileData.source)) { diff --git a/webplugin/gulpfile.js b/webplugin/gulpfile.js index f5f97848c..3035d3831 100644 --- a/webplugin/gulpfile.js +++ b/webplugin/gulpfile.js @@ -253,7 +253,7 @@ const generateBuildFiles = () => { copyFileToBuild('template/chat.html', `${buildDir}/chat.html`); // copy applozic.chat.{version}.min.js to build - copyFileToBuild('js/app/applozic.chat-6.2.8.min.js', `${buildDir}/applozic.chat-6.2.8.min.js`); + copyFileToBuild('js/app/applozic.chat-6.3.0.min.js', `${buildDir}/applozic.chat-6.3.0.min.js`); // Generate mck-sidebox.html file for build folder. minifyHtml( diff --git a/webplugin/js/app/applozic.chat-6.2.9.min.js b/webplugin/js/app/applozic.chat-6.2.9.min.js deleted file mode 100644 index f5d6c7f6f..000000000 --- a/webplugin/js/app/applozic.chat-6.2.9.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var e,t,n,o,r={}.hasOwnProperty,a=[].slice;e={LF:"\n",NULL:"\0"},n=function(){var t;function n(e,t,n){this.command=e,this.headers=null!=t?t:{},this.body=null!=n?n:""}return n.prototype.toString=function(){var t,o,a,s,i;for(o in t=[this.command],(a=!1===this.headers["content-length"])&&delete this.headers["content-length"],i=this.headers)r.call(i,o)&&(s=i[o],t.push(o+":"+s));return this.body&&!a&&t.push("content-length:"+n.sizeOfUTF8(this.body)),t.push(e.LF+this.body),t.join(e.LF)},n.sizeOfUTF8=function(e){return e?encodeURI(e).match(/%..|./g).length:0},t=function(t){var o,r,a,s,i,c,u,l,p,d,f,g,m,y,v,b,S;for(s=t.search(RegExp(""+e.LF+e.LF)),a=(i=t.substring(0,s).split(e.LF)).shift(),c={},g=function(e){return e.replace(/^\s+|\s+$/g,"")},m=0,v=(b=i.reverse()).length;mS)&&(r=t.charAt(u))!==e.NULL;u=f<=S?++y:--y)o+=r;return new n(a,c,o)},n.unmarshall=function(n){var o;return function(){var r,a,s,i;for(i=[],r=0,a=(s=n.split(RegExp(""+e.NULL+e.LF+"*"))).length;r0&&i.push(t(o));return i}()},n.marshall=function(t,o,r){return new n(t,o,r).toString()+e.NULL},n}(),t=function(){var t;function r(e){this.ws=e,this.ws.binaryType="arraybuffer",this.counter=0,this.connected=!1,this.heartbeat={outgoing:1e4,incoming:1e4},this.maxWebSocketFrameSize=16384,this.subscriptions={}}return r.prototype.debug=function(e){var t;return"undefined"!=typeof window&&null!==window&&null!=(t=window.console)?t.log(e):void 0},t=function(){return Date.now?Date.now():(new Date).valueOf},r.prototype._transmit=function(e,t,o){var r;for(r=n.marshall(e,t,o),"function"==typeof this.debug&&this.debug(">>> "+r);;){if(!(r.length>this.maxWebSocketFrameSize))return this.ws.send(r);this.ws.send(r.substring(0,this.maxWebSocketFrameSize)),r=r.substring(this.maxWebSocketFrameSize),"function"==typeof this.debug&&this.debug("remaining = "+r.length)}},r.prototype._setupHeartbeat=function(n){var r,a,s,i,c,u;if((c=n.version)===o.VERSIONS.V1_1||c===o.VERSIONS.V1_2)return a=(u=function(){var e,t,o,r;for(r=[],e=0,t=(o=n["heart-beat"].split(",")).length;e>> PING"):void 0}}(this))),0!==this.heartbeat.incoming&&0!==a?(s=Math.max(this.heartbeat.incoming,a),"function"==typeof this.debug&&this.debug("check PONG every "+s+"ms"),this.ponger=o.setInterval(s,function(e){return function(){var n;if((n=t()-e.serverActivity)>2*s)return"function"==typeof e.debug&&e.debug("did not receive server activity for the last "+n+"ms"),e.ws.close()}}(this))):void 0},r.prototype._parseConnect=function(){var e,t,n,o;switch(o={},(e=1<=arguments.length?a.call(arguments,0):[]).length){case 2:o=e[0],t=e[1];break;case 3:e[1]instanceof Function?(o=e[0],t=e[1],n=e[2]):(o.login=e[0],o.passcode=e[1],t=e[2]);break;case 4:o.login=e[0],o.passcode=e[1],t=e[2],n=e[3];break;default:o.login=e[0],o.passcode=e[1],t=e[2],n=e[3],o.host=e[4]}return[o,t,n]},r.prototype.connect=function(){var r,s,i,c;return r=1<=arguments.length?a.call(arguments,0):[],c=this._parseConnect.apply(this,r),i=c[0],this.connectCallback=c[1],s=c[2],"function"==typeof this.debug&&this.debug("Opening Web Socket..."),this.ws.onmessage=function(o){return function(r){var a,i,c,u,l,p,d,f,g,m,y,v;if(u="undefined"!=typeof ArrayBuffer&&r.data instanceof ArrayBuffer?(a=new Uint8Array(r.data),"function"==typeof o.debug&&o.debug("--- got data length: "+a.length),function(){var e,t,n;for(n=[],e=0,t=a.length;e0&&(n.innerHTML=t<99?t:"99+",n.classList.add("mck-badge-count")),!0===e&&0===t&&(n.innerHTML="",n.classList.remove("mck-badge-count"))},e.randomId=function(){return w.Math.random().toString(36).substring(7)},e.textVal=function(e){for(var n=[],o=[],r=function(){n.push(o.join("")),o=[]},a=function(e){if(3===e.nodeType)o.push(e.nodeValue);else if(1===e.nodeType){var n=e.tagName.toLowerCase(),s=-1!==t.indexOf(n);if(s&&o.length&&r(),"img"===n){var i=e.getAttribute("alt")||"";return void(i&&o.push(i))}if("style"===n)return;"br"===n&&r();for(var c=e.childNodes,u=0;u=0&&e[n]===t[n];--n)continue;return n<0},e.setEndOfContenteditable=function(e){var t,n;document.createRange?((t=document.createRange()).selectNodeContents(e),t.collapse(!1),(n=window.getSelection()).removeAllRanges(),n.addRange(t)):document.selection&&((t=document.body.createTextRange()).moveToElementText(e),t.collapse(!1),t.select())},e.b64EncodeUnicode=function(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)})))},e.b64DecodeUnicode=function(e){return decodeURIComponent(Array.prototype.map.call(atob(e),(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))},e.checkIfB64Encoded=function(e){return/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(e)},e.encrypt128=function(e){var t=CryptoJS.enc.Utf8.parse(e.encryptionKey);return CryptoJS.AES.encrypt(e.data,t,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.ZeroPadding}).toString()},e.encrypt256=function(t){var n=CryptoJS.enc.Base64.parse(t.encryptionKey),o=CryptoJS.enc.Latin1.parse(e.getCryptographyUtils().ENCRYPTION_IV);return CryptoJS.AES.encrypt(t.data,n,{iv:o}).ciphertext.toString(CryptoJS.enc.Base64)},e.encrypt=function(t,n){return n?e.isAES256EncryptionType()?e.encrypt256({data:t,encryptionKey:n}):e.encrypt128({data:t,encryptionKey:n}):t},e.decrypt128=function(e){var t=CryptoJS.enc.Utf8.parse(e.encryptionKey),n=CryptoJS.lib.CipherParams.create({ciphertext:CryptoJS.enc.Base64.parse(e.data)});return CryptoJS.AES.decrypt(n,t,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.ZeroPadding}).toString(CryptoJS.enc.Utf8).replace(/\\u0000/g,"").replace(/^\s*|\s*[\x00-\x10]*$/g,"")},e.decrypt256=function(t){var n=CryptoJS.enc.Base64.parse(t.encryptionKey),o=CryptoJS.enc.Latin1.parse(e.getCryptographyUtils().ENCRYPTION_IV),r=CryptoJS.lib.CipherParams.create({ciphertext:CryptoJS.enc.Base64.parse(t.data)});return CryptoJS.AES.decrypt(r,n,{iv:o}).toString(CryptoJS.enc.Utf8)},e.decrypt=function(t,n){return n?e.isAES256EncryptionType()?decryptedData=e.decrypt256({data:t,encryptionKey:n}):e.decrypt128({data:t,encryptionKey:n}):t},e.setCryptographyUtils=function(e,t){ENCRYPTION_IV=e,ENCRYPTION_TYPE=t},e.getCryptographyUtils=function(){return{ENCRYPTION_IV:ENCRYPTION_IV,ENCRYPTION_TYPE:ENCRYPTION_TYPE}},e.isAES256EncryptionType=function(){return e.getCryptographyUtils().ENCRYPTION_TYPE===e.AES256_ENC_TYPE},e.ajax=function(t){var n=e.extendObject({},{},t);!t.skipEncryption&&t.encryptionKey&&("post"===n.type.toLowerCase()&&(n.data=encrypt(t.data,t.encryptionKey)),n.success=function(n){var o=e.decrypt(n,t.encryptionKey);mckUtils.isJsonString(o)?t.success(JSON.parse(o)):t.success(o)}),$applozic.ajax(n)},e.isJsonString=function(e){try{JSON.parse(e)}catch(e){return!1}return isNaN(e)},e.extendObject=function(){var t={},n=!1,o=0,r=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(n=arguments[0],o++);for(var a=function(o){for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(n&&"[object Object]"===Object.prototype.toString.call(o[r])?t[r]=e.extendObject(!0,t[r],o[r]):t[r]=o[r])};o0?o+" Hr "+n+" Min "+t+" Sec":n>0?n+" Min "+t+" Sec":t+" Sec "};var e,t,n,o,r=(e=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,t=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,n=/[^-+\dA-Z]/g,o=function(e,t){for(e=String(e),t=t||2;e.length99?w.Math.round(v/10):v),t:g<12?"a":"p",tt:g<12?MCK_LABELS["time.format.am"]||"am":MCK_LABELS["time.format.pm"]||"pm",T:g<12?"A":"P",TT:g<12?MCK_LABELS["time.format.AM"]||"AM":MCK_LABELS["time.format.PM"]||"PM",Z:i?"UTC":(String(a).match(t)||[""]).pop().replace(n,""),o:(b>0?"-":"+")+o(100*w.Math.floor(w.Math.abs(b)/60)+w.Math.abs(b)%60,4),S:["th","st","nd","rd"][l%10>3?0:(l%100-l%10!=10)*l%10]};return s.replace(e,(function(e){return e in S?S[e]:e.slice(1,e.length-1)}))});r.masks={default:"mmm d, yyyy h:MM TT",fullDateFormat:"mmm d, yyyy h:MM TT",onlyDateFormat:"mmm d",onlyTimeFormat:"h:MM TT",mailDateFormat:"mmm d, yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"},r.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]}}!function(e){"use strict";"undefined"==typeof Applozic?e.Applozic=function(){var e={init:function(){}};return e}():console.log("Applozic already defined.")}(window);var ALStorage=function(e){var t=[],n=[],o=[],r=[],a=new MckUtils,s=applozic._globals.appId,i=applozic._globals.storageSuffix?"-"+applozic._globals.storageSuffix:"",c=(e,t)=>{const n=ALStorage.getKeyPrefix(e);w.sessionStorage.setItem(e+"-"+n,t)},u=e=>{const t=ALStorage.getKeyPrefix(e);var n=w.sessionStorage.getItem(e);return n&&(c(e,n),w.sessionStorage.removeItem(e)),w.sessionStorage.getItem(e+"-"+t)},l=e=>{const t=ALStorage.getKeyPrefix(e);w.sessionStorage.removeItem(e+"-"+t)};return{getKeyPrefix:e=>"chatheaders"!=e?s+i:s,updateLatestMessage:function(e){var t=[];t.push(e),ALStorage.updateLatestMessageArray(t),ALStorage.updateMckMessageArray(t)},getLatestMessageArray:function(){return ALStorage.isSessionStorageAvailable()?JSON.parse(u("mckLatestMessageArray")):t},setLatestMessageArray:function(e){ALStorage.isSessionStorageAvailable()?c("mckLatestMessageArray",w.JSON.stringify(e)):t=e},updateLatestMessageArray:function(e){if(ALStorage.isSessionStorageAvailable()){var n=JSON.parse(u("mckLatestMessageArray"));return null!==n?(n=n.concat(e),c("mckLatestMessageArray",w.JSON.stringify(n))):c("mckLatestMessageArray",w.JSON.stringify(e)),e}return t=t.concat(e)},getMckMessageArray:function(){return ALStorage.isSessionStorageAvailable()?JSON.parse(u("mckMessageArray")):n},clearMckMessageArray:function(){ALStorage.isSessionStorageAvailable()?(l("mckMessageArray"),l("mckLatestMessageArray")):(n.length=0,t.length=0)},clearAppHeaders:function(){ALStorage.isSessionStorageAvailable()&&l("chatheaders")},setAppHeaders:function(e){if(ALStorage.isSessionStorageAvailable()){var t=a.b64EncodeUnicode(JSON.stringify(e));c("chatheaders",t)}},getAppHeaders:function(){if(ALStorage.isSessionStorageAvailable()){var e=u("chatheaders");return e=e?JSON.parse(a.checkIfB64Encoded(e)?a.b64DecodeUnicode(e):e):{}}},getMessageByKey:function(e){return o[e]},updateMckMessageArray:function(e){for(var t=0;t0&&t[0]){for(var o="",r=t.filter((function(e,n){return t.indexOf(e)===n})),a=0;a=e.Applozic.ALApiService.DEFAULT_ENCRYPTED_APP_VERSION)&&(n.USER_ENCRYPTION_KEY=r.userEncryptionKey),l=r.websocketUrl,p=void 0===r.websocketPort?d.startsWith(l,"https")?"15675":"15674":r.websocketPort,n.AUTH_TOKEN=r.authToken,s.socketUserId=r.appId||o,s.socketPassword=r.authToken),n.events=a,void 0!==l&&navigator.onLine&&e.WebSocket&&(l=l.replace("https://",""),u=new WebSocket("wss://"+l+":"+p+"/ws"),n.stompClient=Stomp.over(u),n.stompClient.heartbeat.outgoing=1e4,n.stompClient.heartbeat.incoming=0,n.stompClient.reconnect_delay=3e4,n.stompClient.debug=null,n.stompClient.onclose=function(){n.disconnect()},n.stompClient.connect(s.socketUserId,s.socketPassword,n.onConnect,n.onError,"/"),e.addEventListener("beforeunload",(function(e){var t;e.target.activeElement&&(t=e.target.activeElement.href),t&&0!==t.length||n.disconnect()})))},n.setOnline=function(){void 0!==e.Applozic.ALSocket&&e.Applozic.ALSocket.sendStatus(1)},n.checkConnected=function(e){n.stompClient.connected&&(a&&clearInterval(a),s&&clearInterval(s),a=setInterval((function(){n.connectToSocket(e)}),6e4),s=setInterval((function(){n.sendStatus(1)}),12e4)),n.connectToSocket(e)},n.connectToSocket=function(e){"function"==typeof n.events.connectToSocket&&n.events.connectToSocket(e)},n.stopConnectedCheck=function(){a&&clearInterval(a),s&&clearInterval(s),a="",s="",n.disconnect()},n.disconnect=function(){n.stompClient&&n.stompClient.connected&&(n.sendStatus(0),n.stompClient.disconnect(),"object"==typeof u&&(u.close(),u=""))},n.unsubscibeToTypingChannel=function(){n.stompClient&&n.stompClient.connected&&n.typingSubscriber&&(1===n.mck_typing_status&&n.sendTypingStatus(0,i),n.typingSubscriber.unsubscribe()),n.typingSubscriber=null},n.unsubscibeToNotification=function(){n.stompClient&&n.stompClient.connected&&(o&&o.unsubscribe(),r&&r.unsubscribe()),o=r=null},n.subscibeToTypingChannel=function(e){n.stompClient&&n.stompClient.connected?n.typingSubscriber=n.stompClient.subscribe("/topic/typing-"+t+"-"+e,n.onTypingStatus):n.reconnect()},n.subscribeToSupportChannel=function(){n.stompClient&&n.stompClient.connected?n.supportChannelSubscriber=n.stompClient.subscribe("/topic/support-channel-"+t,n.onUserStatusUpdate):n.reconnect()},n.unsubscribeToSupportChannel=function(){n.stompClient&&n.stompClient.connected&&n.supportChannelSubscriber&&n.supportChannelSubscriber.unsubscribe(),n.supportChannelSubscriber=null},n.subscribeToOpenGroup=function(e){if(console.log("adding subscription"),n.stompClient&&n.stompClient.connected){var o=n.stompClient.subscribe("/topic/group-"+t+"-"+e.contactId,n.onOpenGroupMessage);n.openGroupSubscriber.push(o.id),c[e.contactId]=o.id}else n.reconnect()},n.sendTypingStatus=function(e,o,r,a){if(n.mck_typing_status=o,n.stompClient&&n.stompClient.connected){if(1===e&&1===n.mck_typing_status&&n.stompClient.send("/topic/typing-"+t+"-"+i,{"content-type":"text/plain"},t+","+r+","+e),a){if(a===i&&e===n.mck_typing_status&&1===e)return;i=a,n.stompClient.send("/topic/typing-"+t+"-"+a,{"content-type":"text/plain"},t+","+r+","+e),setTimeout((function(){n.mck_typing_status=0}),6e4)}else 0===e&&n.stompClient.send("/topic/typing-"+t+"-"+i,{"content-type":"text/plain"},t+","+r+","+e);n.mck_typing_status=e}},n.onTypingStatus=function(e){"function"==typeof n.events.onTypingStatus&&n.events.onTypingStatus(e)},n.onUserStatusUpdate=function(e){"function"==typeof n.events.onUserStatusUpdate&&n.events.onUserStatusUpdate(e)},n.reconnect=function(){if(f){f=!1,n.unsubscibeToTypingChannel(),n.unsubscibeToNotification(),n.unsubscribeToSupportChannel(),n.disconnect();var e={};e.token=n.MCK_TOKEN,e.deviceKey=n.USER_DEVICE_KEY,e.userEncryptionKey=n.USER_ENCRYPTION_KEY,e.encryptionKey=n.ENCRYPTION_KEY,e.websocketUrl=l,e.websocketPort=p,e.authToken=n.AUTH_TOKEN,n.init(t,e,n.events)}},n.onError=function(e){console.log("Error in channel notification. "+e),"function"==typeof n.events.onConnectFailed&&setTimeout((function(){n.events.onConnectFailed(e),f=!0}),3e4)},n.sendStatus=function(e){n.stompClient&&n.stompClient.connected&&n.stompClient.send("/topic/status-v2",{"content-type":"text/plain"},n.MCK_TOKEN+","+n.USER_DEVICE_KEY+","+e)},n.sendMessageStatus=function(e,t,o){n.stompClient&&n.stompClient.connected&&n.stompClient.send("/topic/message-status",{"content-type":"text/plain"},o+","+e+","+t)},n.onConnect=function(){f=!0,n.stompClient.connected?((o||r)&&n.unsubscibeToNotification(),n.handleOnConnect()):setTimeout((function(){n.handleOnConnect()}),5e3),"function"==typeof n.events.onConnect&&n.events.onConnect()},n.handleOnConnect=function(){var e="/topic/"+n.MCK_TOKEN,t="/topic/encr-"+n.MCK_TOKEN;o=n.stompClient.subscribe(e,n.onStompMessage),n.USER_ENCRYPTION_KEY&&(r=n.stompClient.subscribe(t,n.onStompMessage)),n.sendStatus(1),n.checkConnected(!0)},n.onOpenGroupMessage=function(e){"function"==typeof n.events.onOpenGroupMessage&&n.events.onOpenGroupMessage(e)},n.onStompMessage=function(e){var t;if(null!=o&&o.id===e.headers.subscription)t=e.body;else if(null!=r&&r.id===e.headers.subscription){var a=d.isAES256EncryptionType()?n.ENCRYPTION_KEY:n.USER_ENCRYPTION_KEY;t=d.decrypt(e.body,a)}n.onMessage(t)},n.onMessage=function(e){if(d.isJsonString(e)){var t=JSON.parse(e),o=t.type;if("function"==typeof n.events.onMessage&&n.events.onMessage(t),"APPLOZIC_04"===o||"MESSAGE_DELIVERED"===o)n.events.onMessageDelivered(t);else if("APPLOZIC_08"===o||"MT_MESSAGE_DELIVERED_READ"===o)n.events.onMessageRead(t);else if("APPLOZIC_05"===o)n.events.onMessageDeleted(t);else if("APPLOZIC_27"===o)n.events.onConversationDeleted(t);else if("APPLOZIC_11"===o)n.events.onUserConnect(t.message);else if("APPLOZIC_12"===o){var r=t.message.split(",")[0],a=t.message.split(",")[1];n.events.onUserDisconnect({userId:r,lastSeenAtTime:a})}else if("APPLOZIC_29"===o)n.events.onConversationReadFromOtherSource(t);else if("APPLOZIC_28"===o)n.events.onConversationRead(t);else if("APPLOZIC_16"===o){var s=t.message.split(":")[0];r=t.message.split(":")[1];n.events.onUserBlocked({status:s,userId:r})}else if("APPLOZIC_17"===o){s=t.message.split(":")[0],r=t.message.split(":")[1];n.events.onUserUnblocked({status:s,userId:r})}else if("APPLOZIC_18"===o)n.events.onUserActivated();else if("APPLOZIC_19"===o)n.events.onUserDeactivated();else if("APPLOZIC_25"===o)n.events.onUserStatusUpdate&&n.events.onUserStatusUpdate();else{var i=t.message;if("APPLOZIC_03"===o)n.events.onMessageSentUpdate({messageKey:i.key});else if("APPLOZIC_01"===o||"MESSAGE_RECEIVED"===o){var c=alMessageService.getMessageFeed(i);n.events.onMessageReceived({message:c})}else if("APPLOZIC_02"===o){c=alMessageService.getMessageFeed(i);n.events.onMessageSent({message:c})}}}},n}():console.log("ALSocket already defined.")}(window);var mckNotificationUtils=new MckNotificationUtils,alNotificationService=new AlNotificationService;function AlNotificationService(){var e,t,n=this;n.init=function(t){e="boolean"==typeof t.swNotification&&t.swNotification,t.contactDisplayImage,t.notificationIconLink,"boolean"==typeof t.desktopNotification&&t.desktopNotification},n.unsubscribeToServiceWorker=function(){t&&navigator.serviceWorker.ready.then((function(e){t.unsubscribe().then((function(e){t=null,console.log("Unsubscribed to notification successfully")}))}))},n.sendSubscriptionIdToServer=function(){if(t){var e=t.endpoint.split("/").slice(-1)[0];e&&window.Applozic.ALApiService.sendSubscriptionIdToServer({data:{subscriptionId:e},success:function(e){},error:function(){}})}},n.subscribeToServiceWorker=function(){e&&"serviceWorker"in navigator&&(navigator.serviceWorker.register("./service-worker.js",{scope:"./"}),navigator.serviceWorker.ready.then((function(e){e.pushManager.subscribe({userVisibleOnly:!0}).then((function(e){console.log("The reg ID is:: ",e.endpoint.split("/").slice(-1)),t=e,n.sendSubscriptionIdToServer()}))})))}}function MckNotificationUtils(){var e=this,t=window.top,n=["granted","default","denied"],o=function(){var e=!1;try{e=!!(t.Notification||t.webkitNotifications||navigator.mozNotification||t.external&&void 0!==t.external.msIsSiteMode())}catch(e){}return e}(),r=Math.floor(10*Math.random()+1),a=function(){};e.permissionLevel=function(){var e;if(o)return t.Notification&&t.Notification.permissionLevel?e=t.Notification.permissionLevel():t.webkitNotifications&&t.webkitNotifications.checkPermission?e=n[t.webkitNotifications.checkPermission()]:t.Notification&&t.Notification.permission?e=t.Notification.permission:navigator.mozNotification?e="granted":t.external&&void 0!==t.external.msIsSiteMode()&&(e=t.external.msIsSiteMode()?"granted":"default"),e},e.requestPermission=function(e){var n,o=(n=e)&&n.constructor===Function?e:a;t.webkitNotifications&&t.webkitNotifications.checkPermission?t.webkitNotifications.requestPermission(o):t.Notification&&t.Notification.requestPermission&&t.Notification.requestPermission(o)},e.isChrome=function(){return/chrom(e|ium)/.test(t.navigator.userAgent.toLowerCase())},e.getNotification=function(n,o,a,s){var i;if(s&&(s.play(),setTimeout((function(){s.stop()}),1e3)),t.Notification){var c={icon:o,body:a};(i=new t.Notification(n,c)).onclick=function(){t.focus(),this.close()}}else t.webkitNotifications?(i=t.webkitNotifications.createNotification(o,n,a),s&&i.show(),e.isChrome()&&(i.onclick=function(){t.focus(),this.cancel()}),i.show(),setTimeout((function(){i.cancel()}),3e4)):navigator.mozNotification?(i=navigator.mozNotification.createNotification(n,a,o)).show():t.external&&t.external.msIsSiteMode()&&(t.external.msSiteModeClearIconOverlay(),t.external.msSiteModeSetIconOverlay(o,n),t.external.msSiteModeActivate(),i={ieVerification:r+1});return i},e.sendDesktopNotification=function(n,o,r,a){if("granted"!==e.permissionLevel()&&t.Notification.requestPermission(),"granted"===e.permissionLevel()){var s;s=a?e.getNotification(n,o,r,a):e.getNotification(n,o,r);var i=e.getWrapper(s);s&&!s.ieVerification&&s.addEventListener&&s.addEventListener("show",(function(){var e=i;t.setTimeout((function(){e.close()}),3e4)}))}},e.getWrapper=function(e){return{close:function(){e&&(e.close?e.close():e.cancel?e.cancel():t.external&&t.external.msIsSiteMode()&&e.ieVerification===r&&t.external.msSiteModeClearIconOverlay())}}}}var mckGroupUtils=new MckGroupUtils,mckGroupService=new MckGroupService;function MckGroupUtils(){this.GROUP_ROLE_MAP=[0,1,2,3],this.GROUP_TYPE_MAP=[1,2,5,6,7,9,10],this.CONVERSATION_STATUS_MAP=["DEFAULT","NEW","OPEN"],this.ROLE_MAP={0:"User",1:"Admin",2:"Moderator",3:"Member"},this.getDeletedAtTime=function(e){if("object"==typeof MCK_GROUP_MAP[e])return MCK_GROUP_MAP[e].deletedAtTime},this.initGroupTab=function(e,t){if("object"==typeof e){var n=e.users;return void 0===n||n.length<1?"Users List Required":n.length>MCK_GROUP_MAX_SIZE?"Users limit exceeds "+MCK_GROUP_MAX_SIZE+". Max number of users allowed is "+MCK_GROUP_MAX_SIZE+".":e.groupName?void 0===e.type?"Group type required":-1===mckGroupUtils.GROUP_TYPE_MAP.indexOf(e.type)?"Invalid group type":("function"==typeof t&&t(e),"success"):"Group name required"}return"Unsupported format. Please check format"},this.getGroup=function(e){return"object"==typeof MCK_GROUP_MAP[e]?MCK_GROUP_MAP[e]:void 0},this.getGroupByClientGroupId=function(e){return"object"==typeof MCK_CLIENT_GROUP_MAP[e]?MCK_CLIENT_GROUP_MAP[e]:void 0},this.addGroup=function(e){var t=e.name?e.name:e.id,n=[];e&&e.groupUsers&&e.groupUsers.forEach((function(e,t){e.userId&&(n[e.userId]=e)}));var o=void 0!==e.removedMembersId?e.removedMembersId:[],r={contactId:e.id.toString(),htmlId:mckContactUtils.formatContactId(""+e.id),displayName:t,value:e.id.toString(),adminName:e.adminId?e.adminId:e.adminName,type:e.type,members:e.membersId?e.membersId:e.membersName,imageUrl:e.imageUrl,users:n,userCount:e.userCount,removedMembersId:o,clientGroupId:e.clientGroupId,isGroup:!0,deletedAtTime:e.deletedAtTime,metadata:e.metadata};return MCK_GROUP_MAP[e.id]=r,e.clientGroupId&&(MCK_CLIENT_GROUP_MAP[e.clientGroupId]=r),r},this.createGroup=function(e){var t={contactId:e.toString(),htmlId:mckContactUtils.formatContactId(""+e),displayName:e.toString(),value:e.toString(),type:2,adminName:"",imageUrl:"",userCount:"",users:[],removedMembersId:[],clientGroupId:"",isGroup:!0,deletedAtTime:""};return MCK_GROUP_MAP[e]=t,t}}function MckGroupService(){var e,t,n,o,r=this;MCK_GROUP_ARRAY=new Array,r.addGroups=function(e){var t=e.data;MCK_GROUP_ARRAY.length=0,t&&t.forEach((function(e,t){if(void 0!==e.id){e=mckGroupUtils.addGroup(e);MCK_GROUP_ARRAY.push(e)}}))},r.removeGroupMember=function(e){return"object"!=typeof e?"Unsupported Format. Please check format":"function"==typeof e.callback?void 0!==e.groupId&&""!==e.groupId||void 0!==e.clientGroupId&&""!==e.clientGroupId?void 0===e.userId||""===e.userId?void e.callback({status:"error",errorMessage:"UserId required"}):(e.apzCallback=mckGroupLayout.onRemovedGroupMember,mckGroupService.removeGroupMemberFromChat(e),"success"):void e.callback({status:"error",errorMessage:"GroupId or clientGroupId required"}):"Callback function required"},r.createGroup=function(e,t){if("object"==typeof e){if("function"==typeof e.callback){var n=e.users;return void 0===n||n.length<1?void e.callback({status:"error",errorMessage:"Users list required"}):n.length>o?void e.callback({status:"error",errorMessage:"Users limit exceeds "+o+". Max number of users allowed is "+o+"."}):e.groupName?void 0===e.type||""===e.type?void e.callback({status:"error",errorMessage:"Group type required"}):-1===mckGroupUtils.GROUP_TYPE_MAP.indexOf(e.type)?void e.callback({status:"error",errorMessage:"Invalid group type"}):("function"==typeof t&&t(e),"success"):void e.callback({status:"error",errorMessage:"Group name required"})}return"Callback function required"}return"Unsupported Format. Please check format"},r.init=function(r){e=r.visitor,t=e?"guest":r.userId&&r.userId.toString().trim(),n=r.openGroupSettings,o=r.maxGroupSize},r.getGroupList=function(e){return"function"==typeof e.callback?(e.apzCallback=r.addGroups,r.loadGroups(e),"success"):"Callback Function Required"},r.loadGroups=function(e){var t=new Object;window.Applozic.ALApiService.loadGroups({baseUrl:MCK_BASE_URL,success:function(n){"success"===n.status?(t.status="success",t.data=n.response,e.apzCallback&&e.apzCallback(t)):t.status="error",e.callback&&e.callback(t)},error:function(){console.log("Unable to load groups. Please reload page."),t.status="error",e.callback&&e.callback(t),e.apzCallback&&e.apzCallback(t)}})},r.getGroupFeed=function(e){var t={};if("function"==typeof e.callback||"function"==typeof e.apzCallback){var n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return void("function"==typeof e.callback&&(n.status="error",n.errorMessage="GroupId or Client GroupId Required",e.callback(n)));t.clientGroupId=e.clientGroupId}e.conversationId&&(t.conversationId=e.conversationId),Applozic.ALApiService.getGroupInfo({data:t,success:function(t){if("success"===t.status){var n=t.response;if(n+""=="null"||"object"!=typeof n)t.status="error",t.errorMessage="GroupId not found";else{var o=mckGroupUtils.addGroup(n);t.status="success",t.data=o}}else"error"===t.status&&(t.status="error",t.errorMessage=t.errorResponse[0].description);e.callback&&e.callback(t),e.apzCallback&&("success"===t.status&&(t.data=n),e.apzCallback(t,e))},error:function(){console.log("Unable to load group. Please reload page."),n.status="error",n.errorMessage="Please reload page.",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n,e)}})}},r.removeGroupMemberFromChat=function(e){var t={},n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return n.status="error",n.errorMessage="GroupId or Client GroupId Required",void("function"==typeof e.callback&&e.callback(n));t.clientGroupId=e.clientGroupId}t.userId=e.userId,Applozic.ALApiService.removeGroupMember({data:t,success:function(t){if("success"===t.status){if(e.clientGroupId){var n=mckGroupUtils.getGroupByClientGroupId(e.clientGroupId);"object"==typeof n&&(e.groupId=n.contactId)}t.status="success"}else t.status="error",t.errorMessage=data.errorResponse[0].description;e.callback&&e.callback(t),e.apzCallback&&e.apzCallback(t,e)},error:function(){console.log("Unable to process your request. Please reload page."),n.status="error",n.errorMessage="",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n),e.apzCallback(n)}})},r.addGroupMember=function(e){var t={},n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return void("function"==typeof e.callback&&e.callback(n));t.clientGroupId=e.clientGroupId}t.userId=e.userId,void 0!==e.role&&(t.role=e.role),Applozic.ALApiService.addGroupMember({data:{group:t},success:function(t){if("success"===t.status){if(e.clientGroupId){var o=mckGroupUtils.getGroupByClientGroupId(e.clientGroupId);"object"==typeof o&&(e.groupId=o.contactId)}n.status="success",n.data=t.response}else n.status="error",n.errorMessage=t.errorResponse[0].description;e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n,e)},error:function(){console.log("Unable to process your request. Please reload page."),n.status="error",n.errorMessage="",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n)}})},r.updateGroupInfo=function(e){var t={},n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return void("function"==typeof e.callback&&(n.status="error",n.errorMessage="GroupId or Client GroupId Required",e.callback(n)));t.clientGroupId=e.clientGroupId}e.name&&(t.newName=e.name),e.imageUrl&&(t.imageUrl=e.imageUrl),e.users&&e.users.length>0&&(t.users=e.users),Applozic.ALApiService.groupUpdate({data:t,success:function(t,o){if("success"===t.status){if(e.clientGroupId)"object"==typeof(o=mckGroupLayout.getGroupByClientGroupId(e.clientGroupId))&&(e.groupId=o.contactId);n.status="success",n.data=t.response}else n.status="error",n.errorMessage=t.errorResponse[0].description;e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n,{groupId:e.groupId,groupInfo:o,users:e.users})},error:function(){console.log("Unable to process your request. Please reload page."),n.status="error",n.errorMessage="Unable to process your request. Please reload page.",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n)}})},r.sendGroupMessage=function(e){if("object"==typeof e){var t=(e=mckUtils.extendObject(!0,{},message_default_options,e)).message;if(!e.groupId&&!e.clientGroupId)return"groupId or clientGroupId required";if(void 0===t||""===t)return"message field required";if(e.type>12)return"invalid message type";t=t&&t.trim();var n={type:e.messageType,contentType:e.type,message:t};if(e.groupId)n.groupId=e.groupId.toString().trim();else if(e.clientGroupId){if(void 0===mckGroupUtils.getGroupByClientGroupId(e.clientGroupId))return"group not found";n.clientGroupId=e.clientGroupId.toString().trim()}return mckMessageService.sendMessage(n),"success"}return"Unsupported format. Please check format"},r.getContactFromGroupOfTwo=function(e,n){for(var o,r=0;r0}return!1},r.loadGroupsCallback=function(e){var t=e.data;MCK_GROUP_ARRAY.length=0,t&&t.groupUsers&&t.groupUsers.forEach((function(e,t){if(void 0!==e.id){e=mckGroupUtils.addGroup(e);MCK_GROUP_ARRAY.push(e)}}))},r.getGroupDisplayName=function(e){if("object"==typeof MCK_GROUP_MAP[e]){var n=MCK_GROUP_MAP[e],o=n.displayName,a=[];if(7===n.type){var s=r.getContactFromGroupOfTwo(n);void 0!==s&&(alUserService.MCK_USER_DETAIL_MAP[s]?alUserService.MCK_USER_DETAIL_MAP[s]&&alUserService.MCK_USER_DETAIL_MAP[s].displayName&&(o=alUserService.MCK_USER_DETAIL_MAP[s].displayName):(a.push(s),window.Applozic.ALApiService.getUserDetail({data:a,success:function(e){e&&e.response&&e.response.length>0&&e.response.forEach((function(e,t){alUserService.MCK_USER_DETAIL_MAP[e.userId]=e,alUserService.MCK_USER_DETAIL_MAP[s]&&alUserService.MCK_USER_DETAIL_MAP[s].displayName&&(o=alUserService.MCK_USER_DETAIL_MAP[s].displayName)}))}})))}if(3===n.type&&-1!==o.indexOf(t)&&(o=o.replace(t,"").replace(":",""),"function"==typeof MCK_GETUSERNAME)){var i=MCK_GETUSERNAME(o);o=i||o}return o||5!==n.type||(o="Broadcast"),o||(o=n.contactId),o}return e},r.getGroupImage=function(e){return e?'':''},r.getGroupDefaultIcon=function(){return'
'},r.addMemberToGroup=function(e,t){return"object"==typeof e.members&&(-1===e.members.indexOf(t)&&e.members.push(t),"object"==typeof e.removedMembersId&&-1!==e.removedMembersId.indexOf(t)&&e.removedMembersId.splice(e.removedMembersId.indexOf(t),1),MCK_GROUP_MAP[e.contactId]=e),e},r.removeMemberFromGroup=function(e,t){return"object"!=typeof e.removedMembersId||e.removedMembersId.length<1?(e.removedMembersId=[],e.removedMembersId.push(t)):-1===e.removedMembersId.indexOf(t)&&e.removedMembersId.push(t),MCK_GROUP_MAP[e.contactId]=e,e},r.authenticateGroupUser=function(e){var n=!1;if(!r.isGroupLeft(e)&&e.members.length>0)for(var o=0;o0&&e.removedMembersId.forEach((function(e,o){e===t&&(n=!0)})),n}}var alUserService=new AlUserService;function AlUserService(){var e=this;e.MCK_USER_DETAIL_MAP=[],e.MCK_BLOCKED_TO_MAP=[];new Array;e.updateUserStatus=function(e,t){if("object"==typeof alUserService.MCK_USER_DETAIL_MAP[e.userId]){var n=alUserService.MCK_USER_DETAIL_MAP[e.userId];0===e.status?(n.connected=!1,n.lastSeenAtTime=e.lastSeenAtTime):1===e.status&&(n.connected=!0)}else{var o=new Array;o.push(e.userId),"function"==typeof t&&t(o)}},e.getUserDetail=function(e){return"object"==typeof alUserService.MCK_USER_DETAIL_MAP[e]?alUserService.MCK_USER_DETAIL_MAP[e]:void 0},e.loadUserProfile=function(t){if(void 0!==t){"string"!=typeof t&&(t=String(t));var n=[],o=""+t.split(",")[0];n.push(o),e.loadUserProfiles(n)}},e.loadUserProfiles=function(e,t){"function"==typeof t&&t(e,[])},e.getUserStatus=function(e,t){var n=new Object;window.Applozic.ALApiService.getUserStatus({success:function(o){o.users.length>0&&([],"function"==typeof t&&t(o)),n.status="success",n.data=o,e.callback&&e.callback(n)},error:function(){n.status="error",e.callback&&e.callback(n)}})},e.blockUser=function(e,t,n){if(e&&void 0!==t){var o="userId="+e+"&block="+t;mckUtils.ajax({url:MCK_BASE_URL+"/rest/ws/user/block",type:"get",data:o,encryptionKey:window.Applozic.ALApiService.getEncryptionKey(),success:function(o){"object"==typeof o&&"success"===o.status&&(alUserService.MCK_BLOCKED_TO_MAP[e]=t,"function"==typeof n&&n(e))},error:function(){}})}}}var alFileService=new AlFileService;function AlFileService(){var e,t,n,o,r,a=this;a.init=function(e,n){t=e.fileBaseUrl,btoa(e.userId+":"+e.deviceKey),e.deviceKey,r=n},a.get=function(t){t.appId,e=t.customUploadUrl,t.fileupload,n=t.mapStaticAPIkey,t.accessToken,t.appModuleName,o=t.genereateCloudFileUrl},a.deleteFileMeta=function(e){window.Applozic.ALApiService.deleteFileMeta({data:{blobKey:e,url:r.baseUrl+"/rest/ws/file/delete?key="+e},success:function(e){console.log(e)},error:function(){}})},a.getFilePreviewPath=function(e){return"object"==typeof e?''+e.name+"":""},a.getFilePreviewSize=function(e){return e?e>1048576?parseInt(e/1048576)+" MB":e>1024?parseInt(e/1024)+" KB":parseInt(e)+" B":""},a.getFileurl=function(n){var o;return"object"==typeof n.fileMeta?n.fileMeta.hasOwnProperty("url")?-1!==n.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(n.fileMeta.blobKey,(function(e){o=e})),o):""+n.fileMeta.url:n.fileMeta.thumbnailUrl==="thumbnail_"+n.fileMeta.name?e+"/files/"+n.fileMeta.name:t+"/rest/ws/aws/file/"+n.fileMeta.blobKey:""},a.generateCloudUrl=function(e,t){var n=o.replace("{key}",e),r=window.Applozic.ALApiService.getAttachmentHeaders();mckUtils.ajax({type:"get",async:!1,skipEncryption:!0,headers:r,url:n,success:function(e){"function"==typeof t&&t(e)},error:function(e){console.log("error while getting token"+e)}})},a.getFilePath=function(t){if(2===t.contentType)try{var o=JSON.parse(t.message);if(o.lat&&o.lon)return''}catch(e){if(-1!==t.message.indexOf(","))return''}var r,s;return"object"==typeof t.fileMeta?-1!==t.fileMeta.contentType.indexOf("image")?-1!==t.fileMeta.contentType.indexOf("svg")?'':5===t.contentType?'':t.fileMeta.hasOwnProperty("url")?-1!==t.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(t.fileMeta.thumbnailBlobKey,(function(e){r=e})),''):'':t.fileMeta.thumbnailUrl==="thumbnail_"+t.fileMeta.name?'':'':-1!==t.fileMeta.contentType.indexOf("video")?t.fileMeta.hasOwnProperty("url")&&-1!==t.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(t.fileMeta.blobKey,(function(e){s=e})),''):'':-1!==t.fileMeta.contentType.indexOf("audio")?t.fileMeta.hasOwnProperty("url")&&-1!==t.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(t.fileMeta.blobKey,(function(e){s=e})),'

'):'

':'':""},a.updateAudVidUrl=function(e){var t=e.dataset.blobkey,n=(new Date).getTime(),o=e.currentSrc;n>=1e3*a.fetchQueryString("Expires",o)&&(a.generateCloudUrl(t,(function(e){getUrl=e})),e.src=getUrl)},this.fetchQueryString=function(e,t){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var n=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(t);return null==n&&console.log("The parameter is null for the searchedquery"),n[1]},a.getFileAttachment=function(e){if("object"==typeof e.fileMeta)return(-1!==e.fileMeta.contentType.indexOf("image")||-1!==e.fileMeta.contentType.indexOf("audio")||-1!==e.fileMeta.contentType.indexOf("video"))&&e.fileMeta.hasOwnProperty("url")&&-1!==e.fileMeta.url.indexOf("www.googleapis.com")?' '+e.fileMeta.name+' '+alFileService.getFilePreviewSize(e.fileMeta.size)+"":' '+e.fileMeta.name+' '+alFileService.getFilePreviewSize(e.fileMeta.size)+""},a.getFileIcon=function(e){return e.fileMetaKey&&"object"==typeof e.fileMeta?-1!==e.fileMeta.contentType.indexOf("image")?' Image':-1!==e.fileMeta.contentType.indexOf("audio")?' Audio':-1!==e.fileMeta.contentType.indexOf("video")?' Video':' File':""},a.downloadfile=function(){var e=a.getFileurl(msg),t=document.createElement("a");t.download=thefilename,t.setAttribute("href",e);var n="data:text/csv;charset=utf-8;base64,"+someb64data;t.href=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)}}!function(e){"use strict";"undefined"==typeof AlCustomService?e.Applozic.AlCustomService=function(){var t={logout:function(){void 0!==e.Applozic.ALSocket&&(e.Applozic.ALApiService.AUTH_TOKEN=null,e.Applozic.ALApiService.setAjaxHeaders("","","","",""),e.Applozic.ALApiService.setEncryptionKeys(null,null),e.Applozic.ALSocket.disconnect(),ALStorage.clearSessionStorageElements())}};return t}():console.log("ALCustomService already defined.")}(window);var alMessageService=new AlMessageService;function AlMessageService(){var e,t,n=this;n.init=function(n){MCK_FILE_URL=n.fileBaseUrl,e=n.visitor,t=e?"guest":n&&n.userId&&n.userId.toString().trim()},n.getConversation=function(e){n.getTopicId({conversationId:e.conversationId},(function(e){mckMessageLayout.populateMessage(e.messageType,e.message,e.notifyUser)}))},n.addMessageToTab=function(e,t,n){var o={to:e.to,groupId:e.groupId,deviceKey:e.deviceKey,contentType:e.contentType,message:e.message,conversationId:e.conversationId,topicId:e.topicId,sendToDevice:!0,createdAtTime:(new Date).getTime(),key:e.key,storeOnDevice:!0,sent:!1,read:!0,metadata:e.metadata?e.metadata:""};o.type=e.type?e.type:5,e.fileMeta&&(o.fileMeta=e.fileMeta),"function"==typeof n&&n(o,t)},n.getMessages=function(e){var t={};e.startTime&&(t.endTime=e.startTime),void 0!==e.userId&&""!==e.userId?(e.isGroup?t.groupId=e.userId:t.userId=e.userId,t.pageSize=30,(IS_MCK_TOPIC_HEADER||IS_MCK_TOPIC_BOX)&&e.conversationId&&(t.conversationId=e.conversationId,void 0===MCK_TAB_CONVERSATION_MAP[e.userId]&&(t.conversationReq=!0))):t.mainPageSize=100,window.Applozic.ALApiService.getMessages({data:t,success:e.callback,error:e.callback})},n.getMessageList=function(e,t){var n=e.id,o={},r={};e.startTime&&(o.endTime=e.startTime),void 0!==e.clientGroupId&&""!==e.clientGroupId?(e.pageSize?o.pageSize=e.pageSize:o.pageSize=50,o.clientGroupId=e.clientGroupId,r={clientGroupId:e.clientGroupId}):void 0!==n&&""!==n?(e.pageSize?o.pageSize=e.pageSize:o.pageSize=50,""+e.isGroup=="true"?o.groupId=n:o.userId=n,r={id:n}):(e.mainPageSize?o.mainPageSize=e.pageSize:o.mainPageSize=50,r={id:""}),e.topicId&&(n||e.clientGroupId)&&(e.conversationId&&(o.conversationId=e.conversationId),e.topicId&&(r.topicId=e.topicId)),window.Applozic.ALApiService.getMessages({data:o,success:function(n){var o=n.data;if(r.status="success",void 0===o.message||0===o.message.length)r.messages=[];else{var a=o.message,s=new Array;a.forEach((function(e,n){"function"==typeof t&&t(e)})),r.messages=s}o.groupFeeds.length>0&&(r.id=o.groupFeeds[0].id),e.callback(o)},error:function(t){r.status="error",e.callback(r)}})},n.getReplyMessageByKey=function(e){return void 0===ALStorage.getMessageByKey(e)&&window.Applozic.ALApiService.updateReplyMessage({data:{key:e},async:!1,success:function(e){ALStorage.updateMckMessageArray(e)}}),ALStorage.getMessageByKey(e)},n.getTopicId=function(e,o){if(e.conversationId){var r="id="+e.conversationId;window.Applozic.ALApiService.getTopicId({data:{conversationId:e.conversationId},success:function(a){if("object"==typeof r&&"success"===r.status){var s=r.response;if("object"==typeof s){if(MCK_TOPIC_CONVERSATION_MAP[s.topicId]=[e.conversationId],MCK_CONVERSATION_MAP[e.conversationId]=s,s.topicDetail)try{MCK_TOPIC_DETAIL_MAP[s.topicId]=JSON.parse(s.topicDetail)}catch(e){w.console.log("Incorect Topic Detail!")}if("function"==typeof MCK_PRICE_DETAIL&&e.priceText&&(MCK_PRICE_DETAIL({custId:t,suppId:e.suppId,productId:s.topicId,price:e.priceText}),n.sendConversationCloseUpdate(e.conversationId)),e.messageType&&"object"==typeof e.message){var i=e.message.groupId?e.message.groupId:e.message.to;if(void 0!==MCK_TAB_CONVERSATION_MAP[i]){var c=MCK_TAB_CONVERSATION_MAP[i];c.push(s),MCK_TAB_CONVERSATION_MAP[i]=c}(void 0===e.populate||e.populate)&&"function"==typeof o&&o(e)}"function"==typeof e.callback&&e.callback(s)}}},error:function(){}})}},n.sendConversationCloseUpdate=function(e){if(e){window.Applozic.ALApiService.sendConversationCloseUpdate({conversationId:e,success:function(e){},error:function(){}})}},n.getMessageFeed=function(e){var n={};if(MCK_FILE_URL=window.Applozic.ALApiService.getFileUrl(),n.key=e.key,n.contentType=e.contentType,n.timeStamp=e.createdAtTime,n.message=e.message,n.from=4===e.type?e.to:t,e.groupId?n.to=e.groupId:n.to=5===e.type?e.to:t,n.status="read",n.type=4===e.type?"inbox":"outbox",5===e.type&&(3===e.status?n.status="sent":4===e.status&&(n.status="delivered")),"object"==typeof e.fileMeta){var o=mckUtils.extendObject({},{},e.fileMeta);void 0!==o.url&&""!==o.url||(o.url=MCK_FILE_URL+"/rest/ws/aws/file/"+e.fileMeta.blobKey),delete o.blobKey,n.file=o}return n.source=e.source,n.metadata=e.metadata,n}} \ No newline at end of file diff --git a/webplugin/js/app/applozic.chat-6.3.0.min.js b/webplugin/js/app/applozic.chat-6.3.0.min.js new file mode 100644 index 000000000..4b31a5e4a --- /dev/null +++ b/webplugin/js/app/applozic.chat-6.3.0.min.js @@ -0,0 +1 @@ +(function(){var e,t,n,o,r={}.hasOwnProperty,a=[].slice;e={LF:"\n",NULL:"\0"},n=function(){var t;function n(e,t,n){this.command=e,this.headers=null!=t?t:{},this.body=null!=n?n:""}return n.prototype.toString=function(){var t,o,a,s,i;for(o in t=[this.command],(a=!1===this.headers["content-length"])&&delete this.headers["content-length"],i=this.headers)r.call(i,o)&&(s=i[o],t.push(o+":"+s));return this.body&&!a&&t.push("content-length:"+n.sizeOfUTF8(this.body)),t.push(e.LF+this.body),t.join(e.LF)},n.sizeOfUTF8=function(e){return e?encodeURI(e).match(/%..|./g).length:0},t=function(t){var o,r,a,s,i,c,u,l,p,d,f,g,m,y,v,b,S;for(s=t.search(RegExp(""+e.LF+e.LF)),a=(i=t.substring(0,s).split(e.LF)).shift(),c={},g=function(e){return e.replace(/^\s+|\s+$/g,"")},m=0,v=(b=i.reverse()).length;mS)&&(r=t.charAt(u))!==e.NULL;u=f<=S?++y:--y)o+=r;return new n(a,c,o)},n.unmarshall=function(n){var o;return function(){var r,a,s,i;for(i=[],r=0,a=(s=n.split(RegExp(""+e.NULL+e.LF+"*"))).length;r0&&i.push(t(o));return i}()},n.marshall=function(t,o,r){return new n(t,o,r).toString()+e.NULL},n}(),t=function(){var t;function r(e){this.ws=e,this.ws.binaryType="arraybuffer",this.counter=0,this.connected=!1,this.heartbeat={outgoing:1e4,incoming:1e4},this.maxWebSocketFrameSize=16384,this.subscriptions={}}return r.prototype.debug=function(e){var t;return"undefined"!=typeof window&&null!==window&&null!=(t=window.console)?t.log(e):void 0},t=function(){return Date.now?Date.now():(new Date).valueOf},r.prototype._transmit=function(e,t,o){var r;for(r=n.marshall(e,t,o),"function"==typeof this.debug&&this.debug(">>> "+r);;){if(!(r.length>this.maxWebSocketFrameSize))return this.ws.send(r);this.ws.send(r.substring(0,this.maxWebSocketFrameSize)),r=r.substring(this.maxWebSocketFrameSize),"function"==typeof this.debug&&this.debug("remaining = "+r.length)}},r.prototype._setupHeartbeat=function(n){var r,a,s,i,c,u;if((c=n.version)===o.VERSIONS.V1_1||c===o.VERSIONS.V1_2)return a=(u=function(){var e,t,o,r;for(r=[],e=0,t=(o=n["heart-beat"].split(",")).length;e>> PING"):void 0}}(this))),0!==this.heartbeat.incoming&&0!==a?(s=Math.max(this.heartbeat.incoming,a),"function"==typeof this.debug&&this.debug("check PONG every "+s+"ms"),this.ponger=o.setInterval(s,function(e){return function(){var n;if((n=t()-e.serverActivity)>2*s)return"function"==typeof e.debug&&e.debug("did not receive server activity for the last "+n+"ms"),e.ws.close()}}(this))):void 0},r.prototype._parseConnect=function(){var e,t,n,o;switch(o={},(e=1<=arguments.length?a.call(arguments,0):[]).length){case 2:o=e[0],t=e[1];break;case 3:e[1]instanceof Function?(o=e[0],t=e[1],n=e[2]):(o.login=e[0],o.passcode=e[1],t=e[2]);break;case 4:o.login=e[0],o.passcode=e[1],t=e[2],n=e[3];break;default:o.login=e[0],o.passcode=e[1],t=e[2],n=e[3],o.host=e[4]}return[o,t,n]},r.prototype.connect=function(){var r,s,i,c;return r=1<=arguments.length?a.call(arguments,0):[],c=this._parseConnect.apply(this,r),i=c[0],this.connectCallback=c[1],s=c[2],"function"==typeof this.debug&&this.debug("Opening Web Socket..."),this.ws.onmessage=function(o){return function(r){var a,i,c,u,l,p,d,f,g,m,y,v;if(u="undefined"!=typeof ArrayBuffer&&r.data instanceof ArrayBuffer?(a=new Uint8Array(r.data),"function"==typeof o.debug&&o.debug("--- got data length: "+a.length),function(){var e,t,n;for(n=[],e=0,t=a.length;e0&&(n.innerHTML=t<99?t:"99+",n.classList.add("mck-badge-count")),!0===e&&0===t&&(n.innerHTML="",n.classList.remove("mck-badge-count"))},e.randomId=function(){return w.Math.random().toString(36).substring(7)},e.textVal=function(e){for(var n=[],o=[],r=function(){n.push(o.join("")),o=[]},a=function(e){if(3===e.nodeType)o.push(e.nodeValue);else if(1===e.nodeType){var n=e.tagName.toLowerCase(),s=-1!==t.indexOf(n);if(s&&o.length&&r(),"img"===n){var i=e.getAttribute("alt")||"";return void(i&&o.push(i))}if("style"===n)return;"br"===n&&r();for(var c=e.childNodes,u=0;u=0&&e[n]===t[n];--n)continue;return n<0},e.setEndOfContenteditable=function(e){var t,n;document.createRange?((t=document.createRange()).selectNodeContents(e),t.collapse(!1),(n=window.getSelection()).removeAllRanges(),n.addRange(t)):document.selection&&((t=document.body.createTextRange()).moveToElementText(e),t.collapse(!1),t.select())},e.b64EncodeUnicode=function(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)})))},e.b64DecodeUnicode=function(e){return decodeURIComponent(Array.prototype.map.call(atob(e),(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))},e.checkIfB64Encoded=function(e){return/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(e)},e.encrypt128=function(e){var t=CryptoJS.enc.Utf8.parse(e.encryptionKey);return CryptoJS.AES.encrypt(e.data,t,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.ZeroPadding}).toString()},e.encrypt256=function(t){var n=CryptoJS.enc.Base64.parse(t.encryptionKey),o=CryptoJS.enc.Latin1.parse(e.getCryptographyUtils().ENCRYPTION_IV);return CryptoJS.AES.encrypt(t.data,n,{iv:o}).ciphertext.toString(CryptoJS.enc.Base64)},e.encrypt=function(t,n){return n?e.isAES256EncryptionType()?e.encrypt256({data:t,encryptionKey:n}):e.encrypt128({data:t,encryptionKey:n}):t},e.decrypt128=function(e){var t=CryptoJS.enc.Utf8.parse(e.encryptionKey),n=CryptoJS.lib.CipherParams.create({ciphertext:CryptoJS.enc.Base64.parse(e.data)});return CryptoJS.AES.decrypt(n,t,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.ZeroPadding}).toString(CryptoJS.enc.Utf8).replace(/\\u0000/g,"").replace(/^\s*|\s*[\x00-\x10]*$/g,"")},e.decrypt256=function(t){var n=CryptoJS.enc.Base64.parse(t.encryptionKey),o=CryptoJS.enc.Latin1.parse(e.getCryptographyUtils().ENCRYPTION_IV),r=CryptoJS.lib.CipherParams.create({ciphertext:CryptoJS.enc.Base64.parse(t.data)});return CryptoJS.AES.decrypt(r,n,{iv:o}).toString(CryptoJS.enc.Utf8)},e.decrypt=function(t,n){return n?e.isAES256EncryptionType()?decryptedData=e.decrypt256({data:t,encryptionKey:n}):e.decrypt128({data:t,encryptionKey:n}):t},e.setCryptographyUtils=function(e,t){ENCRYPTION_IV=e,ENCRYPTION_TYPE=t},e.getCryptographyUtils=function(){return{ENCRYPTION_IV:ENCRYPTION_IV,ENCRYPTION_TYPE:ENCRYPTION_TYPE}},e.isAES256EncryptionType=function(){return e.getCryptographyUtils().ENCRYPTION_TYPE===e.AES256_ENC_TYPE},e.ajax=function(t){var n=e.extendObject({},{},t);!t.skipEncryption&&t.encryptionKey&&("post"===n.type.toLowerCase()&&(n.data=encrypt(t.data,t.encryptionKey)),n.success=function(n){var o=e.decrypt(n,t.encryptionKey);mckUtils.isJsonString(o)?t.success(JSON.parse(o)):t.success(o)}),$applozic.ajax(n)},e.isJsonString=function(e){try{JSON.parse(e)}catch(e){return!1}return isNaN(e)},e.extendObject=function(){var t={},n=!1,o=0,r=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(n=arguments[0],o++);for(var a=function(o){for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(n&&"[object Object]"===Object.prototype.toString.call(o[r])?t[r]=e.extendObject(!0,t[r],o[r]):t[r]=o[r])};o0?o+" Hr "+n+" Min "+t+" Sec":n>0?n+" Min "+t+" Sec":t+" Sec "};var e,t,n,o,r=(e=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,t=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,n=/[^-+\dA-Z]/g,o=function(e,t){for(e=String(e),t=t||2;e.length99?w.Math.round(v/10):v),t:g<12?"a":"p",tt:g<12?MCK_LABELS["time.format.am"]||"am":MCK_LABELS["time.format.pm"]||"pm",T:g<12?"A":"P",TT:g<12?MCK_LABELS["time.format.AM"]||"AM":MCK_LABELS["time.format.PM"]||"PM",Z:i?"UTC":(String(a).match(t)||[""]).pop().replace(n,""),o:(b>0?"-":"+")+o(100*w.Math.floor(w.Math.abs(b)/60)+w.Math.abs(b)%60,4),S:["th","st","nd","rd"][l%10>3?0:(l%100-l%10!=10)*l%10]};return s.replace(e,(function(e){return e in S?S[e]:e.slice(1,e.length-1)}))});r.masks={default:"mmm d, yyyy h:MM TT",fullDateFormat:"mmm d, yyyy h:MM TT",onlyDateFormat:"mmm d",onlyTimeFormat:"h:MM TT",mailDateFormat:"mmm d, yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"},r.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]}}!function(e){"use strict";"undefined"==typeof Applozic?e.Applozic=function(){var e={init:function(){}};return e}():console.log("Applozic already defined.")}(window);var ALStorage=function(e){var t=[],n=[],o=[],r=[],a=new MckUtils,s=applozic._globals.appId,i=applozic._globals.storageSuffix?"-"+applozic._globals.storageSuffix:"",c=(e,t)=>{const n=ALStorage.getKeyPrefix(e);w.sessionStorage.setItem(e+"-"+n,t)},u=e=>{const t=ALStorage.getKeyPrefix(e);var n=w.sessionStorage.getItem(e);return n&&(c(e,n),w.sessionStorage.removeItem(e)),w.sessionStorage.getItem(e+"-"+t)},l=e=>{const t=ALStorage.getKeyPrefix(e);w.sessionStorage.removeItem(e+"-"+t)};return{getKeyPrefix:e=>"chatheaders"!=e?s+i:s,updateLatestMessage:function(e){var t=[];t.push(e),ALStorage.updateLatestMessageArray(t),ALStorage.updateMckMessageArray(t)},getLatestMessageArray:function(){return ALStorage.isSessionStorageAvailable()?JSON.parse(u("mckLatestMessageArray")):t},setLatestMessageArray:function(e){ALStorage.isSessionStorageAvailable()?c("mckLatestMessageArray",w.JSON.stringify(e)):t=e},updateLatestMessageArray:function(e){if(ALStorage.isSessionStorageAvailable()){var n=JSON.parse(u("mckLatestMessageArray"));return null!==n?(n=n.concat(e),c("mckLatestMessageArray",w.JSON.stringify(n))):c("mckLatestMessageArray",w.JSON.stringify(e)),e}return t=t.concat(e)},getMckMessageArray:function(){return ALStorage.isSessionStorageAvailable()?JSON.parse(u("mckMessageArray")):n},clearMckMessageArray:function(){ALStorage.isSessionStorageAvailable()?(l("mckMessageArray"),l("mckLatestMessageArray")):(n.length=0,t.length=0)},clearAppHeaders:function(){ALStorage.isSessionStorageAvailable()&&l("chatheaders")},setAppHeaders:function(e){if(ALStorage.isSessionStorageAvailable()){var t=a.b64EncodeUnicode(JSON.stringify(e));c("chatheaders",t)}},getAppHeaders:function(){if(ALStorage.isSessionStorageAvailable()){var e=u("chatheaders");return e=e?JSON.parse(a.checkIfB64Encoded(e)?a.b64DecodeUnicode(e):e):{}}},getMessageByKey:function(e){return o[e]},updateMckMessageArray:function(e){for(var t=0;t0&&t[0]){for(var o="",r=t.filter((function(e,n){return t.indexOf(e)===n})),a=0;a=e.Applozic.ALApiService.DEFAULT_ENCRYPTED_APP_VERSION)&&(n.USER_ENCRYPTION_KEY=r.userEncryptionKey),d=r.websocketUrl,n.DEBUG=r.debugSocket||!1,f=void 0===r.websocketPort?g.startsWith(d,"https")?"15675":"15674":r.websocketPort,n.AUTH_TOKEN=r.authToken,s.socketUserId=r.appId||o,s.socketPassword=r.authToken),n.events=a,n.isSocketActive())n.DEBUG&&console.debug("[ALSocket] Skipping init: socket already active.");else if(void 0!==d&&navigator.onLine&&e.WebSocket){d=d.replace("https://",""),u=!0;try{p=new WebSocket("wss://"+d+":"+f+"/ws")}catch(e){u=!1,console.error("WebSocket error: "+e)}n.stompClient=Stomp.over(p),n.stompClient.heartbeat.outgoing=1e4,n.stompClient.heartbeat.incoming=0,n.stompClient.reconnect_delay=3e4,n.stompClient.debug=n.DEBUG?function(e){console.debug("[ALSocket]",e)}:null,n.stompClient.onclose=function(){u=!1,n.disconnect()},n.stompClient.connect(s.socketUserId,s.socketPassword,(function(){u=!1,n.onConnect.apply(n,arguments)}),(function(){u=!1,n.onError.apply(n,arguments)}),"/"),e.addEventListener("beforeunload",(function(e){var t;e.target.activeElement&&(t=e.target.activeElement.href),t&&0!==t.length||n.disconnect()}))}},n.setOnline=function(){void 0!==e.Applozic.ALSocket&&e.Applozic.ALSocket.sendStatus(1)},n.checkConnected=function(e){n.stompClient.connected&&(a&&clearInterval(a),s&&clearInterval(s),a=setInterval((function(){n.connectToSocket(e)}),6e4),s=setInterval((function(){n.sendStatus(1)}),12e4)),n.connectToSocket(e)},n.connectToSocket=function(e){"function"==typeof n.events.connectToSocket&&n.events.connectToSocket(e)},n.stopConnectedCheck=function(){a&&clearInterval(a),s&&clearInterval(s),a="",s="",n.disconnect()},n.disconnect=function(){n.stompClient&&n.stompClient.connected&&(n.sendStatus(0),n.stompClient.disconnect(),"object"==typeof p&&(p.close(),p="")),u=!1,"function"==typeof n.events.onDisconnect&&n.events.onDisconnect()},n.unsubscibeToTypingChannel=function(){n.stompClient&&n.stompClient.connected&&n.typingSubscriber&&(1===n.mck_typing_status&&n.sendTypingStatus(0,i),n.typingSubscriber.unsubscribe()),n.typingSubscriber=null},n.unsubscibeToNotification=function(){n.stompClient&&n.stompClient.connected&&(o&&o.unsubscribe(),r&&r.unsubscribe()),o=r=null},n.subscibeToTypingChannel=function(e){n.stompClient&&n.stompClient.connected?n.typingSubscriber=n.stompClient.subscribe("/topic/typing-"+t+"-"+e,n.onTypingStatus):n.reconnect()},n.subscribeToSupportChannel=function(){n.stompClient&&n.stompClient.connected?n.supportChannelSubscriber=n.stompClient.subscribe("/topic/support-channel-"+t,n.onUserStatusUpdate):n.reconnect()},n.unsubscribeToSupportChannel=function(){n.stompClient&&n.stompClient.connected&&n.supportChannelSubscriber&&n.supportChannelSubscriber.unsubscribe(),n.supportChannelSubscriber=null},n.subscribeToOpenGroup=function(e){if(console.log("adding subscription"),n.stompClient&&n.stompClient.connected){var o=n.stompClient.subscribe("/topic/group-"+t+"-"+e.contactId,n.onOpenGroupMessage);n.openGroupSubscriber.push(o.id),c[e.contactId]=o.id}else n.reconnect()},n.sendTypingStatus=function(e,o,r,a){if(n.mck_typing_status=o,n.stompClient&&n.stompClient.connected){if(1===e&&1===n.mck_typing_status&&n.stompClient.send("/topic/typing-"+t+"-"+i,{"content-type":"text/plain"},t+","+r+","+e),a){if(a===i&&e===n.mck_typing_status&&1===e)return;i=a,n.stompClient.send("/topic/typing-"+t+"-"+a,{"content-type":"text/plain"},t+","+r+","+e),setTimeout((function(){n.mck_typing_status=0}),6e4)}else 0===e&&n.stompClient.send("/topic/typing-"+t+"-"+i,{"content-type":"text/plain"},t+","+r+","+e);n.mck_typing_status=e}},n.onTypingStatus=function(e){"function"==typeof n.events.onTypingStatus&&n.events.onTypingStatus(e)},n.onUserStatusUpdate=function(e){"function"==typeof n.events.onUserStatusUpdate&&n.events.onUserStatusUpdate(e)},n.reconnect=function(){if(m){if(n.DEBUG&&console.debug("[ALSocket] Reconnecting socket."),m=!1,n.isSocketActive())return void(n.DEBUG&&console.debug("[ALSocket] Skipping reconnect: socket already active."));n.unsubscibeToTypingChannel(),n.unsubscibeToNotification(),n.unsubscribeToSupportChannel(),n.disconnect();var e={};e.token=n.MCK_TOKEN,e.deviceKey=n.USER_DEVICE_KEY,e.userEncryptionKey=n.USER_ENCRYPTION_KEY,e.encryptionKey=n.ENCRYPTION_KEY,e.websocketUrl=d,e.websocketPort=f,e.authToken=n.AUTH_TOKEN,n.init(t,e,n.events),n.DEBUG&&console.debug("[ALSocket] socket reconnected.")}},n.isSocketActive=function(){if(n.stompClient){if(n.stompClient.connected)return!0;var e=n.stompClient.ws||n.stompClient.socket;if(e&&void 0!==e.readyState&&l(e.readyState))return!0}return!("object"!=typeof p||null===p||void 0===p.readyState||!l(p.readyState))||u},n.onError=function(e){console.log("Error in channel notification. "+e),"function"==typeof n.events.onConnectFailed&&setTimeout((function(){n.events.onConnectFailed(e),m=!0}),3e4)},n.sendStatus=function(e){n.stompClient&&n.stompClient.connected&&n.stompClient.send("/topic/status-v2",{"content-type":"text/plain"},n.MCK_TOKEN+","+n.USER_DEVICE_KEY+","+e)},n.sendMessageStatus=function(e,t,o){n.stompClient&&n.stompClient.connected&&n.stompClient.send("/topic/message-status",{"content-type":"text/plain"},o+","+e+","+t)},n.onConnect=function(){m=!0,n.stompClient.connected?((o||r)&&n.unsubscibeToNotification(),n.handleOnConnect()):setTimeout((function(){n.handleOnConnect()}),5e3),"function"==typeof n.events.onConnect&&n.events.onConnect()},n.handleOnConnect=function(){var e="/topic/"+n.MCK_TOKEN,t="/topic/encr-"+n.MCK_TOKEN;o=n.stompClient.subscribe(e,n.onStompMessage),n.USER_ENCRYPTION_KEY&&(r=n.stompClient.subscribe(t,n.onStompMessage)),n.sendStatus(1),n.checkConnected(!0)},n.onOpenGroupMessage=function(e){"function"==typeof n.events.onOpenGroupMessage&&n.events.onOpenGroupMessage(e)},n.onStompMessage=function(e){var t;if(null!=o&&o.id===e.headers.subscription)t=e.body;else if(null!=r&&r.id===e.headers.subscription){var a=g.isAES256EncryptionType()?n.ENCRYPTION_KEY:n.USER_ENCRYPTION_KEY;t=g.decrypt(e.body,a)}n.onMessage(t)},n.onMessage=function(e){if(g.isJsonString(e)){var t=JSON.parse(e),o=t.type;if("function"==typeof n.events.onMessage&&n.events.onMessage(t),"APPLOZIC_04"===o||"MESSAGE_DELIVERED"===o)n.events.onMessageDelivered(t);else if("APPLOZIC_08"===o||"MT_MESSAGE_DELIVERED_READ"===o)n.events.onMessageRead(t);else if("APPLOZIC_05"===o)n.events.onMessageDeleted(t);else if("APPLOZIC_27"===o)n.events.onConversationDeleted(t);else if("APPLOZIC_11"===o)n.events.onUserConnect(t.message);else if("APPLOZIC_12"===o){var r=t.message.split(",")[0],a=t.message.split(",")[1];n.events.onUserDisconnect({userId:r,lastSeenAtTime:a})}else if("APPLOZIC_29"===o)n.events.onConversationReadFromOtherSource(t);else if("APPLOZIC_28"===o)n.events.onConversationRead(t);else if("APPLOZIC_16"===o){var s=t.message.split(":")[0];r=t.message.split(":")[1];n.events.onUserBlocked({status:s,userId:r})}else if("APPLOZIC_17"===o){s=t.message.split(":")[0],r=t.message.split(":")[1];n.events.onUserUnblocked({status:s,userId:r})}else if("APPLOZIC_18"===o)n.events.onUserActivated();else if("APPLOZIC_19"===o)n.events.onUserDeactivated();else if("APPLOZIC_25"===o)n.events.onUserStatusUpdate&&n.events.onUserStatusUpdate();else{var i=t.message;if("APPLOZIC_03"===o)n.events.onMessageSentUpdate({messageKey:i.key});else if("APPLOZIC_01"===o||"MESSAGE_RECEIVED"===o){var c=alMessageService.getMessageFeed(i);n.events.onMessageReceived({message:c})}else if("APPLOZIC_02"===o){c=alMessageService.getMessageFeed(i);n.events.onMessageSent({message:c})}}}},n}():console.log("ALSocket already defined.")}(window);var mckNotificationUtils=new MckNotificationUtils,alNotificationService=new AlNotificationService;function AlNotificationService(){var e,t,n=this;n.init=function(t){e="boolean"==typeof t.swNotification&&t.swNotification,t.contactDisplayImage,t.notificationIconLink,"boolean"==typeof t.desktopNotification&&t.desktopNotification},n.unsubscribeToServiceWorker=function(){t&&navigator.serviceWorker.ready.then((function(e){t.unsubscribe().then((function(e){t=null,console.log("Unsubscribed to notification successfully")}))}))},n.sendSubscriptionIdToServer=function(){if(t){var e=t.endpoint.split("/").slice(-1)[0];e&&window.Applozic.ALApiService.sendSubscriptionIdToServer({data:{subscriptionId:e},success:function(e){},error:function(){}})}},n.subscribeToServiceWorker=function(){e&&"serviceWorker"in navigator&&(navigator.serviceWorker.register("./service-worker.js",{scope:"./"}),navigator.serviceWorker.ready.then((function(e){e.pushManager.subscribe({userVisibleOnly:!0}).then((function(e){console.log("The reg ID is:: ",e.endpoint.split("/").slice(-1)),t=e,n.sendSubscriptionIdToServer()}))})))}}function MckNotificationUtils(){var e=this,t=window.top,n=["granted","default","denied"],o=function(){var e=!1;try{e=!!(t.Notification||t.webkitNotifications||navigator.mozNotification||t.external&&void 0!==t.external.msIsSiteMode())}catch(e){}return e}(),r=Math.floor(10*Math.random()+1),a=function(){};e.permissionLevel=function(){var e;if(o)return t.Notification&&t.Notification.permissionLevel?e=t.Notification.permissionLevel():t.webkitNotifications&&t.webkitNotifications.checkPermission?e=n[t.webkitNotifications.checkPermission()]:t.Notification&&t.Notification.permission?e=t.Notification.permission:navigator.mozNotification?e="granted":t.external&&void 0!==t.external.msIsSiteMode()&&(e=t.external.msIsSiteMode()?"granted":"default"),e},e.requestPermission=function(e){var n,o=(n=e)&&n.constructor===Function?e:a;t.webkitNotifications&&t.webkitNotifications.checkPermission?t.webkitNotifications.requestPermission(o):t.Notification&&t.Notification.requestPermission&&t.Notification.requestPermission(o)},e.isChrome=function(){return/chrom(e|ium)/.test(t.navigator.userAgent.toLowerCase())},e.getNotification=function(n,o,a,s){var i;if(s&&(s.play(),setTimeout((function(){s.stop()}),1e3)),t.Notification){var c={icon:o,body:a};(i=new t.Notification(n,c)).onclick=function(){t.focus(),this.close()}}else t.webkitNotifications?(i=t.webkitNotifications.createNotification(o,n,a),s&&i.show(),e.isChrome()&&(i.onclick=function(){t.focus(),this.cancel()}),i.show(),setTimeout((function(){i.cancel()}),3e4)):navigator.mozNotification?(i=navigator.mozNotification.createNotification(n,a,o)).show():t.external&&t.external.msIsSiteMode()&&(t.external.msSiteModeClearIconOverlay(),t.external.msSiteModeSetIconOverlay(o,n),t.external.msSiteModeActivate(),i={ieVerification:r+1});return i},e.sendDesktopNotification=function(n,o,r,a){if("granted"!==e.permissionLevel()&&t.Notification.requestPermission(),"granted"===e.permissionLevel()){var s;s=a?e.getNotification(n,o,r,a):e.getNotification(n,o,r);var i=e.getWrapper(s);s&&!s.ieVerification&&s.addEventListener&&s.addEventListener("show",(function(){var e=i;t.setTimeout((function(){e.close()}),3e4)}))}},e.getWrapper=function(e){return{close:function(){e&&(e.close?e.close():e.cancel?e.cancel():t.external&&t.external.msIsSiteMode()&&e.ieVerification===r&&t.external.msSiteModeClearIconOverlay())}}}}var mckGroupUtils=new MckGroupUtils,mckGroupService=new MckGroupService;function MckGroupUtils(){this.GROUP_ROLE_MAP=[0,1,2,3],this.GROUP_TYPE_MAP=[1,2,5,6,7,9,10],this.CONVERSATION_STATUS_MAP=["DEFAULT","NEW","OPEN"],this.ROLE_MAP={0:"User",1:"Admin",2:"Moderator",3:"Member"},this.getDeletedAtTime=function(e){if("object"==typeof MCK_GROUP_MAP[e])return MCK_GROUP_MAP[e].deletedAtTime},this.initGroupTab=function(e,t){if("object"==typeof e){var n=e.users;return void 0===n||n.length<1?"Users List Required":n.length>MCK_GROUP_MAX_SIZE?"Users limit exceeds "+MCK_GROUP_MAX_SIZE+". Max number of users allowed is "+MCK_GROUP_MAX_SIZE+".":e.groupName?void 0===e.type?"Group type required":-1===mckGroupUtils.GROUP_TYPE_MAP.indexOf(e.type)?"Invalid group type":("function"==typeof t&&t(e),"success"):"Group name required"}return"Unsupported format. Please check format"},this.getGroup=function(e){return"object"==typeof MCK_GROUP_MAP[e]?MCK_GROUP_MAP[e]:void 0},this.getGroupByClientGroupId=function(e){return"object"==typeof MCK_CLIENT_GROUP_MAP[e]?MCK_CLIENT_GROUP_MAP[e]:void 0},this.addGroup=function(e){var t=e.name?e.name:e.id,n=[];e&&e.groupUsers&&e.groupUsers.forEach((function(e,t){e.userId&&(n[e.userId]=e)}));var o=void 0!==e.removedMembersId?e.removedMembersId:[],r={contactId:e.id.toString(),htmlId:mckContactUtils.formatContactId(""+e.id),displayName:t,value:e.id.toString(),adminName:e.adminId?e.adminId:e.adminName,type:e.type,members:e.membersId?e.membersId:e.membersName,imageUrl:e.imageUrl,users:n,userCount:e.userCount,removedMembersId:o,clientGroupId:e.clientGroupId,isGroup:!0,deletedAtTime:e.deletedAtTime,metadata:e.metadata};return MCK_GROUP_MAP[e.id]=r,e.clientGroupId&&(MCK_CLIENT_GROUP_MAP[e.clientGroupId]=r),r},this.createGroup=function(e){var t={contactId:e.toString(),htmlId:mckContactUtils.formatContactId(""+e),displayName:e.toString(),value:e.toString(),type:2,adminName:"",imageUrl:"",userCount:"",users:[],removedMembersId:[],clientGroupId:"",isGroup:!0,deletedAtTime:""};return MCK_GROUP_MAP[e]=t,t}}function MckGroupService(){var e,t,n,o,r=this;MCK_GROUP_ARRAY=new Array,r.addGroups=function(e){var t=e.data;MCK_GROUP_ARRAY.length=0,t&&t.forEach((function(e,t){if(void 0!==e.id){e=mckGroupUtils.addGroup(e);MCK_GROUP_ARRAY.push(e)}}))},r.removeGroupMember=function(e){return"object"!=typeof e?"Unsupported Format. Please check format":"function"==typeof e.callback?void 0!==e.groupId&&""!==e.groupId||void 0!==e.clientGroupId&&""!==e.clientGroupId?void 0===e.userId||""===e.userId?void e.callback({status:"error",errorMessage:"UserId required"}):(e.apzCallback=mckGroupLayout.onRemovedGroupMember,mckGroupService.removeGroupMemberFromChat(e),"success"):void e.callback({status:"error",errorMessage:"GroupId or clientGroupId required"}):"Callback function required"},r.createGroup=function(e,t){if("object"==typeof e){if("function"==typeof e.callback){var n=e.users;return void 0===n||n.length<1?void e.callback({status:"error",errorMessage:"Users list required"}):n.length>o?void e.callback({status:"error",errorMessage:"Users limit exceeds "+o+". Max number of users allowed is "+o+"."}):e.groupName?void 0===e.type||""===e.type?void e.callback({status:"error",errorMessage:"Group type required"}):-1===mckGroupUtils.GROUP_TYPE_MAP.indexOf(e.type)?void e.callback({status:"error",errorMessage:"Invalid group type"}):("function"==typeof t&&t(e),"success"):void e.callback({status:"error",errorMessage:"Group name required"})}return"Callback function required"}return"Unsupported Format. Please check format"},r.init=function(r){e=r.visitor,t=e?"guest":r.userId&&r.userId.toString().trim(),n=r.openGroupSettings,o=r.maxGroupSize},r.getGroupList=function(e){return"function"==typeof e.callback?(e.apzCallback=r.addGroups,r.loadGroups(e),"success"):"Callback Function Required"},r.loadGroups=function(e){var t=new Object;window.Applozic.ALApiService.loadGroups({baseUrl:MCK_BASE_URL,success:function(n){"success"===n.status?(t.status="success",t.data=n.response,e.apzCallback&&e.apzCallback(t)):t.status="error",e.callback&&e.callback(t)},error:function(){console.log("Unable to load groups. Please reload page."),t.status="error",e.callback&&e.callback(t),e.apzCallback&&e.apzCallback(t)}})},r.getGroupFeed=function(e){var t={};if("function"==typeof e.callback||"function"==typeof e.apzCallback){var n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return void("function"==typeof e.callback&&(n.status="error",n.errorMessage="GroupId or Client GroupId Required",e.callback(n)));t.clientGroupId=e.clientGroupId}e.conversationId&&(t.conversationId=e.conversationId),Applozic.ALApiService.getGroupInfo({data:t,success:function(t){if("success"===t.status){var n=t.response;if(n+""=="null"||"object"!=typeof n)t.status="error",t.errorMessage="GroupId not found";else{var o=mckGroupUtils.addGroup(n);t.status="success",t.data=o}}else"error"===t.status&&(t.status="error",t.errorMessage=t.errorResponse[0].description);e.callback&&e.callback(t),e.apzCallback&&("success"===t.status&&(t.data=n),e.apzCallback(t,e))},error:function(){console.log("Unable to load group. Please reload page."),n.status="error",n.errorMessage="Please reload page.",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n,e)}})}},r.removeGroupMemberFromChat=function(e){var t={},n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return n.status="error",n.errorMessage="GroupId or Client GroupId Required",void("function"==typeof e.callback&&e.callback(n));t.clientGroupId=e.clientGroupId}t.userId=e.userId,Applozic.ALApiService.removeGroupMember({data:t,success:function(t){if("success"===t.status){if(e.clientGroupId){var n=mckGroupUtils.getGroupByClientGroupId(e.clientGroupId);"object"==typeof n&&(e.groupId=n.contactId)}t.status="success"}else t.status="error",t.errorMessage=data.errorResponse[0].description;e.callback&&e.callback(t),e.apzCallback&&e.apzCallback(t,e)},error:function(){console.log("Unable to process your request. Please reload page."),n.status="error",n.errorMessage="",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n),e.apzCallback(n)}})},r.addGroupMember=function(e){var t={},n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return void("function"==typeof e.callback&&e.callback(n));t.clientGroupId=e.clientGroupId}t.userId=e.userId,void 0!==e.role&&(t.role=e.role),Applozic.ALApiService.addGroupMember({data:{group:t},success:function(t){if("success"===t.status){if(e.clientGroupId){var o=mckGroupUtils.getGroupByClientGroupId(e.clientGroupId);"object"==typeof o&&(e.groupId=o.contactId)}n.status="success",n.data=t.response}else n.status="error",n.errorMessage=t.errorResponse[0].description;e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n,e)},error:function(){console.log("Unable to process your request. Please reload page."),n.status="error",n.errorMessage="",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n)}})},r.updateGroupInfo=function(e){var t={},n=new Object;if(e.groupId)t.groupId=e.groupId;else{if(!e.clientGroupId)return void("function"==typeof e.callback&&(n.status="error",n.errorMessage="GroupId or Client GroupId Required",e.callback(n)));t.clientGroupId=e.clientGroupId}e.name&&(t.newName=e.name),e.imageUrl&&(t.imageUrl=e.imageUrl),e.users&&e.users.length>0&&(t.users=e.users),Applozic.ALApiService.groupUpdate({data:t,success:function(t,o){if("success"===t.status){if(e.clientGroupId)"object"==typeof(o=mckGroupLayout.getGroupByClientGroupId(e.clientGroupId))&&(e.groupId=o.contactId);n.status="success",n.data=t.response}else n.status="error",n.errorMessage=t.errorResponse[0].description;e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n,{groupId:e.groupId,groupInfo:o,users:e.users})},error:function(){console.log("Unable to process your request. Please reload page."),n.status="error",n.errorMessage="Unable to process your request. Please reload page.",e.callback&&e.callback(n),e.apzCallback&&e.apzCallback(n)}})},r.sendGroupMessage=function(e){if("object"==typeof e){var t=(e=mckUtils.extendObject(!0,{},message_default_options,e)).message;if(!e.groupId&&!e.clientGroupId)return"groupId or clientGroupId required";if(void 0===t||""===t)return"message field required";if(e.type>12)return"invalid message type";t=t&&t.trim();var n={type:e.messageType,contentType:e.type,message:t};if(e.groupId)n.groupId=e.groupId.toString().trim();else if(e.clientGroupId){if(void 0===mckGroupUtils.getGroupByClientGroupId(e.clientGroupId))return"group not found";n.clientGroupId=e.clientGroupId.toString().trim()}return mckMessageService.sendMessage(n),"success"}return"Unsupported format. Please check format"},r.getContactFromGroupOfTwo=function(e,n){for(var o,r=0;r0}return!1},r.loadGroupsCallback=function(e){var t=e.data;MCK_GROUP_ARRAY.length=0,t&&t.groupUsers&&t.groupUsers.forEach((function(e,t){if(void 0!==e.id){e=mckGroupUtils.addGroup(e);MCK_GROUP_ARRAY.push(e)}}))},r.getGroupDisplayName=function(e){if("object"==typeof MCK_GROUP_MAP[e]){var n=MCK_GROUP_MAP[e],o=n.displayName,a=[];if(7===n.type){var s=r.getContactFromGroupOfTwo(n);void 0!==s&&(alUserService.MCK_USER_DETAIL_MAP[s]?alUserService.MCK_USER_DETAIL_MAP[s]&&alUserService.MCK_USER_DETAIL_MAP[s].displayName&&(o=alUserService.MCK_USER_DETAIL_MAP[s].displayName):(a.push(s),window.Applozic.ALApiService.getUserDetail({data:a,success:function(e){e&&e.response&&e.response.length>0&&e.response.forEach((function(e,t){alUserService.MCK_USER_DETAIL_MAP[e.userId]=e,alUserService.MCK_USER_DETAIL_MAP[s]&&alUserService.MCK_USER_DETAIL_MAP[s].displayName&&(o=alUserService.MCK_USER_DETAIL_MAP[s].displayName)}))}})))}if(3===n.type&&-1!==o.indexOf(t)&&(o=o.replace(t,"").replace(":",""),"function"==typeof MCK_GETUSERNAME)){var i=MCK_GETUSERNAME(o);o=i||o}return o||5!==n.type||(o="Broadcast"),o||(o=n.contactId),o}return e},r.getGroupImage=function(e){return e?'':''},r.getGroupDefaultIcon=function(){return'
'},r.addMemberToGroup=function(e,t){return"object"==typeof e.members&&(-1===e.members.indexOf(t)&&e.members.push(t),"object"==typeof e.removedMembersId&&-1!==e.removedMembersId.indexOf(t)&&e.removedMembersId.splice(e.removedMembersId.indexOf(t),1),MCK_GROUP_MAP[e.contactId]=e),e},r.removeMemberFromGroup=function(e,t){return"object"!=typeof e.removedMembersId||e.removedMembersId.length<1?(e.removedMembersId=[],e.removedMembersId.push(t)):-1===e.removedMembersId.indexOf(t)&&e.removedMembersId.push(t),MCK_GROUP_MAP[e.contactId]=e,e},r.authenticateGroupUser=function(e){var n=!1;if(!r.isGroupLeft(e)&&e.members.length>0)for(var o=0;o0&&e.removedMembersId.forEach((function(e,o){e===t&&(n=!0)})),n}}var alUserService=new AlUserService;function AlUserService(){var e=this;e.MCK_USER_DETAIL_MAP=[],e.MCK_BLOCKED_TO_MAP=[];new Array;e.updateUserStatus=function(e,t){if("object"==typeof alUserService.MCK_USER_DETAIL_MAP[e.userId]){var n=alUserService.MCK_USER_DETAIL_MAP[e.userId];0===e.status?(n.connected=!1,n.lastSeenAtTime=e.lastSeenAtTime):1===e.status&&(n.connected=!0)}else{var o=new Array;o.push(e.userId),"function"==typeof t&&t(o)}},e.getUserDetail=function(e){return"object"==typeof alUserService.MCK_USER_DETAIL_MAP[e]?alUserService.MCK_USER_DETAIL_MAP[e]:void 0},e.loadUserProfile=function(t){if(void 0!==t){"string"!=typeof t&&(t=String(t));var n=[],o=""+t.split(",")[0];n.push(o),e.loadUserProfiles(n)}},e.loadUserProfiles=function(e,t){"function"==typeof t&&t(e,[])},e.getUserStatus=function(e,t){var n=new Object;window.Applozic.ALApiService.getUserStatus({success:function(o){o.users.length>0&&([],"function"==typeof t&&t(o)),n.status="success",n.data=o,e.callback&&e.callback(n)},error:function(){n.status="error",e.callback&&e.callback(n)}})},e.blockUser=function(e,t,n){if(e&&void 0!==t){var o="userId="+e+"&block="+t;mckUtils.ajax({url:MCK_BASE_URL+"/rest/ws/user/block",type:"get",data:o,encryptionKey:window.Applozic.ALApiService.getEncryptionKey(),success:function(o){"object"==typeof o&&"success"===o.status&&(alUserService.MCK_BLOCKED_TO_MAP[e]=t,"function"==typeof n&&n(e))},error:function(){}})}}}var alFileService=new AlFileService;function AlFileService(){var e,t,n,o,r,a=this;a.init=function(e,n){t=e.fileBaseUrl,btoa(e.userId+":"+e.deviceKey),e.deviceKey,r=n},a.get=function(t){t.appId,e=t.customUploadUrl,t.fileupload,n=t.mapStaticAPIkey,t.accessToken,t.appModuleName,o=t.genereateCloudFileUrl},a.deleteFileMeta=function(e){window.Applozic.ALApiService.deleteFileMeta({data:{blobKey:e,url:r.baseUrl+"/rest/ws/file/delete?key="+e},success:function(e){console.log(e)},error:function(){}})},a.getFilePreviewPath=function(e){return"object"==typeof e?''+e.name+"":""},a.getFilePreviewSize=function(e){return e?e>1048576?parseInt(e/1048576)+" MB":e>1024?parseInt(e/1024)+" KB":parseInt(e)+" B":""},a.getFileurl=function(n){var o;return"object"==typeof n.fileMeta?n.fileMeta.hasOwnProperty("url")?-1!==n.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(n.fileMeta.blobKey,(function(e){o=e})),o):""+n.fileMeta.url:n.fileMeta.thumbnailUrl==="thumbnail_"+n.fileMeta.name?e+"/files/"+n.fileMeta.name:t+"/rest/ws/aws/file/"+n.fileMeta.blobKey:""},a.generateCloudUrl=function(e,t){var n=o.replace("{key}",e),r=window.Applozic.ALApiService.getAttachmentHeaders();mckUtils.ajax({type:"get",async:!1,skipEncryption:!0,headers:r,url:n,success:function(e){"function"==typeof t&&t(e)},error:function(e){console.log("error while getting token"+e)}})},a.getFilePath=function(t){if(2===t.contentType)try{var o=JSON.parse(t.message);if(o.lat&&o.lon)return''}catch(e){if(-1!==t.message.indexOf(","))return''}var r,s;return"object"==typeof t.fileMeta?-1!==t.fileMeta.contentType.indexOf("image")?-1!==t.fileMeta.contentType.indexOf("svg")?'':5===t.contentType?'':t.fileMeta.hasOwnProperty("url")?-1!==t.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(t.fileMeta.thumbnailBlobKey,(function(e){r=e})),''):'':t.fileMeta.thumbnailUrl==="thumbnail_"+t.fileMeta.name?'':'':-1!==t.fileMeta.contentType.indexOf("video")?t.fileMeta.hasOwnProperty("url")&&-1!==t.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(t.fileMeta.blobKey,(function(e){s=e})),''):'':-1!==t.fileMeta.contentType.indexOf("audio")?t.fileMeta.hasOwnProperty("url")&&-1!==t.fileMeta.url.indexOf("www.googleapis.com")?(a.generateCloudUrl(t.fileMeta.blobKey,(function(e){s=e})),'

'):'

':'':""},a.updateAudVidUrl=function(e){var t=e.dataset.blobkey,n=(new Date).getTime(),o=e.currentSrc;n>=1e3*a.fetchQueryString("Expires",o)&&(a.generateCloudUrl(t,(function(e){getUrl=e})),e.src=getUrl)},this.fetchQueryString=function(e,t){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var n=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(t);return null==n&&console.log("The parameter is null for the searchedquery"),n[1]},a.getFileAttachment=function(e){if("object"==typeof e.fileMeta)return(-1!==e.fileMeta.contentType.indexOf("image")||-1!==e.fileMeta.contentType.indexOf("audio")||-1!==e.fileMeta.contentType.indexOf("video"))&&e.fileMeta.hasOwnProperty("url")&&-1!==e.fileMeta.url.indexOf("www.googleapis.com")?' '+e.fileMeta.name+' '+alFileService.getFilePreviewSize(e.fileMeta.size)+"":' '+e.fileMeta.name+' '+alFileService.getFilePreviewSize(e.fileMeta.size)+""},a.getFileIcon=function(e){return e.fileMetaKey&&"object"==typeof e.fileMeta?-1!==e.fileMeta.contentType.indexOf("image")?' Image':-1!==e.fileMeta.contentType.indexOf("audio")?' Audio':-1!==e.fileMeta.contentType.indexOf("video")?' Video':' File':""},a.downloadfile=function(){var e=a.getFileurl(msg),t=document.createElement("a");t.download=thefilename,t.setAttribute("href",e);var n="data:text/csv;charset=utf-8;base64,"+someb64data;t.href=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)}}!function(e){"use strict";"undefined"==typeof AlCustomService?e.Applozic.AlCustomService=function(){var t={logout:function(){void 0!==e.Applozic.ALSocket&&(e.Applozic.ALApiService.AUTH_TOKEN=null,e.Applozic.ALApiService.setAjaxHeaders("","","","",""),e.Applozic.ALApiService.setEncryptionKeys(null,null),e.Applozic.ALSocket.disconnect(),ALStorage.clearSessionStorageElements())}};return t}():console.log("ALCustomService already defined.")}(window);var alMessageService=new AlMessageService;function AlMessageService(){var e,t,n=this;n.init=function(n){MCK_FILE_URL=n.fileBaseUrl,e=n.visitor,t=e?"guest":n&&n.userId&&n.userId.toString().trim()},n.getConversation=function(e){n.getTopicId({conversationId:e.conversationId},(function(e){mckMessageLayout.populateMessage(e.messageType,e.message,e.notifyUser)}))},n.addMessageToTab=function(e,t,n){var o={to:e.to,groupId:e.groupId,deviceKey:e.deviceKey,contentType:e.contentType,message:e.message,conversationId:e.conversationId,topicId:e.topicId,sendToDevice:!0,createdAtTime:(new Date).getTime(),key:e.key,storeOnDevice:!0,sent:!1,read:!0,metadata:e.metadata?e.metadata:""};o.type=e.type?e.type:5,e.fileMeta&&(o.fileMeta=e.fileMeta),"function"==typeof n&&n(o,t)},n.getMessages=function(e){var t={};e.startTime&&(t.endTime=e.startTime),void 0!==e.userId&&""!==e.userId?(e.isGroup?t.groupId=e.userId:t.userId=e.userId,t.pageSize=30,(IS_MCK_TOPIC_HEADER||IS_MCK_TOPIC_BOX)&&e.conversationId&&(t.conversationId=e.conversationId,void 0===MCK_TAB_CONVERSATION_MAP[e.userId]&&(t.conversationReq=!0))):t.mainPageSize=100,window.Applozic.ALApiService.getMessages({data:t,success:e.callback,error:e.callback})},n.getMessageList=function(e,t){var n=e.id,o={},r={};e.startTime&&(o.endTime=e.startTime),void 0!==e.clientGroupId&&""!==e.clientGroupId?(e.pageSize?o.pageSize=e.pageSize:o.pageSize=50,o.clientGroupId=e.clientGroupId,r={clientGroupId:e.clientGroupId}):void 0!==n&&""!==n?(e.pageSize?o.pageSize=e.pageSize:o.pageSize=50,""+e.isGroup=="true"?o.groupId=n:o.userId=n,r={id:n}):(e.mainPageSize?o.mainPageSize=e.pageSize:o.mainPageSize=50,r={id:""}),e.topicId&&(n||e.clientGroupId)&&(e.conversationId&&(o.conversationId=e.conversationId),e.topicId&&(r.topicId=e.topicId)),window.Applozic.ALApiService.getMessages({data:o,success:function(n){var o=n.data;if(r.status="success",void 0===o.message||0===o.message.length)r.messages=[];else{var a=o.message,s=new Array;a.forEach((function(e,n){"function"==typeof t&&t(e)})),r.messages=s}o.groupFeeds.length>0&&(r.id=o.groupFeeds[0].id),e.callback(o)},error:function(t){r.status="error",e.callback(r)}})},n.getReplyMessageByKey=function(e){return void 0===ALStorage.getMessageByKey(e)&&window.Applozic.ALApiService.updateReplyMessage({data:{key:e},async:!1,success:function(e){ALStorage.updateMckMessageArray(e)}}),ALStorage.getMessageByKey(e)},n.getTopicId=function(e,o){if(e.conversationId){var r="id="+e.conversationId;window.Applozic.ALApiService.getTopicId({data:{conversationId:e.conversationId},success:function(a){if("object"==typeof r&&"success"===r.status){var s=r.response;if("object"==typeof s){if(MCK_TOPIC_CONVERSATION_MAP[s.topicId]=[e.conversationId],MCK_CONVERSATION_MAP[e.conversationId]=s,s.topicDetail)try{MCK_TOPIC_DETAIL_MAP[s.topicId]=JSON.parse(s.topicDetail)}catch(e){w.console.log("Incorect Topic Detail!")}if("function"==typeof MCK_PRICE_DETAIL&&e.priceText&&(MCK_PRICE_DETAIL({custId:t,suppId:e.suppId,productId:s.topicId,price:e.priceText}),n.sendConversationCloseUpdate(e.conversationId)),e.messageType&&"object"==typeof e.message){var i=e.message.groupId?e.message.groupId:e.message.to;if(void 0!==MCK_TAB_CONVERSATION_MAP[i]){var c=MCK_TAB_CONVERSATION_MAP[i];c.push(s),MCK_TAB_CONVERSATION_MAP[i]=c}(void 0===e.populate||e.populate)&&"function"==typeof o&&o(e)}"function"==typeof e.callback&&e.callback(s)}}},error:function(){}})}},n.sendConversationCloseUpdate=function(e){if(e){window.Applozic.ALApiService.sendConversationCloseUpdate({conversationId:e,success:function(e){},error:function(){}})}},n.getMessageFeed=function(e){var n={};if(MCK_FILE_URL=window.Applozic.ALApiService.getFileUrl(),n.key=e.key,n.contentType=e.contentType,n.timeStamp=e.createdAtTime,n.message=e.message,n.from=4===e.type?e.to:t,e.groupId?n.to=e.groupId:n.to=5===e.type?e.to:t,n.status="read",n.type=4===e.type?"inbox":"outbox",5===e.type&&(3===e.status?n.status="sent":4===e.status&&(n.status="delivered")),"object"==typeof e.fileMeta){var o=mckUtils.extendObject({},{},e.fileMeta);void 0!==o.url&&""!==o.url||(o.url=MCK_FILE_URL+"/rest/ws/aws/file/"+e.fileMeta.blobKey),delete o.blobKey,n.file=o}return n.source=e.source,n.metadata=e.metadata,n}} \ No newline at end of file diff --git a/webplugin/js/app/mck-app.js b/webplugin/js/app/mck-app.js index 7ed10aed7..a691d6273 100644 --- a/webplugin/js/app/mck-app.js +++ b/webplugin/js/app/mck-app.js @@ -28,8 +28,8 @@ function ApplozicSidebox() { var mck_external_scripts = [ { name: 'applozic-min-js', - url: 'https://cdn.kommunicate.io/applozic/applozic.chat-6.2.9.min.js', - alternateUrl: MCK_CONTEXTPATH + '/applozic.chat-6.2.9.min.js', + url: 'https://cdn.kommunicate.io/applozic/applozic.chat-6.3.0.min.js', + alternateUrl: MCK_CONTEXTPATH + '/applozic.chat-6.3.0.min.js', // if updating applozic.chat{version}.min.js, update the same in pluginOptimizer.js too }, { diff --git a/webplugin/js/app/mck-sidebox-1.0.js b/webplugin/js/app/mck-sidebox-1.0.js index 58edce908..fbc86617e 100644 --- a/webplugin/js/app/mck-sidebox-1.0.js +++ b/webplugin/js/app/mck-sidebox-1.0.js @@ -11,6 +11,7 @@ var MCK_MAINTAIN_ACTIVE_CONVERSATION_STATE; var CURRENT_GROUP_DATA = {}; var MCK_CHAT_POPUP_TEMPLATE_TIMER; var IS_SOCKET_CONNECTED = false; + var MCK_BOT_MESSAGE_QUEUE = []; var WAITING_QUEUE = []; var AVAILABLE_VOICES_FOR_TTS = new Array(); @@ -754,6 +755,10 @@ const firstVisibleMsg = { mckInitializeChannel.onTypingStatus(resp); }, onFeedbackClick: function (resp) {}, + onDisconnect: function () { + IS_SOCKET_CONNECTED = false; + IS_SOCKET_INITIALIZED = false; + }, }; _this.loadConversationWithAgent = function (params) { @@ -1836,6 +1841,7 @@ const firstVisibleMsg = { isReInit ? window.Applozic.ALSocket.reconnect() : window.Applozic.ALSocket.init(MCK_APP_ID, INIT_APP_DATA, EVENTS); + // Disconnect open sockets if user has no conversations. CONNECT_SOCKET_ON_WIDGET_CLICK && !MCK_TRIGGER_MSG_NOTIFICATION_TIMEOUT && @@ -7769,6 +7775,9 @@ const firstVisibleMsg = { allowReload, msgThroughListAPI ) { + if (!window.Applozic.ALSocket.isSocketActive()) { + mckInitializeChannel.connectToSocket(true); + } typingService.setTalkToHumanMsg(false); if (msg && msg.metadata && msg.metadata.hasOwnProperty('KM_SUMMARY')) { return;