{"version":3,"sources":["services/chat/integration/main.es6.js"],"names":["create","webrtcByEnv","window","RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","CHAT_INTEGRATION_GROUP","matchExperimentGroup","segments","seed","experimentGroup","segment","normalizedSegments","checksum","min","result","hasOwnProperty","parseFloat","checkFeature","enableIntegration","CHAT_INTEGRATION_AVAILABLE","bus","emit","synconce","chatConfig","enabled","api","variable","users","indexOf","parseInt","tags","Promise","resolve","get","err","response","then","chatTags","map","tag","every","includes","emitChatIntegration","CHAT_INTEGRATION_AVAILABLE_CHECKED","CHAT_INTEGRATION_AVAILABLE_CALLBACK","sync","removeListener"],"mappings":"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","file":"services/chat/integration/main.js","sourceRoot":"/source/","sourcesContent":["import bus from 'bus';\r\nimport api from 'api';\r\n\r\nconst webrtcByEnv = !!(window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection);\r\nconst CHAT_INTEGRATION_GROUP = \"group-1\";\r\n\r\nfunction matchExperimentGroup(segments, seed, experimentGroup){\r\n\r\n var segment,\r\n normalizedSegments = {},\r\n checksum,\r\n min = 0,\r\n result;\r\n for (segment in segments) {\r\n\r\n if (segments.hasOwnProperty(segment)) {\r\n normalizedSegments[segment] = parseFloat(segments[segment]) * 10;\r\n }\r\n\r\n }\r\n\r\n checksum = seed % 10;\r\n\r\n\r\n for (segment in normalizedSegments) {\r\n\r\n if (normalizedSegments.hasOwnProperty(segment)) {\r\n\r\n if (checksum >= min && checksum < min + normalizedSegments[segment]) {\r\n result = segment;\r\n break;\r\n }\r\n\r\n min += normalizedSegments[segment];\r\n }\r\n\r\n }\r\n\r\n return (result === experimentGroup);\r\n}\r\n\r\nfunction checkFeature(){\r\n function enableIntegration(){\r\n window.CHAT_INTEGRATION_AVAILABLE = true;\r\n bus.emit('event.chat.integrated.available');\r\n }\r\n\r\n bus.synconce('event.chat.configuration.loaded', (chatConfig)=>{\r\n\r\n if(webrtcByEnv && (chatConfig['chat-integration'] && (chatConfig['chat-integration'] ==='on'\r\n || (chatConfig['chat-integration'].enabled ==='on'\r\n && api && api.variable &&\r\n (chatConfig['chat-integration'].users && chatConfig['chat-integration'].users.indexOf(api.variable('user-id')) > -1\r\n || chatConfig['chat-integration']['groups'] && matchExperimentGroup(chatConfig['chat-integration']['groups'],parseInt(api.variable('user-id')), CHAT_INTEGRATION_GROUP)))))){\r\n\r\n if(chatConfig['chat-integration'].tags){\r\n const tags = new Promise(function(resolve){\r\n api.users.tags.get(function(err, response){\r\n if(err){\r\n resolve(null);\r\n return;\r\n }\r\n resolve(response);\r\n });\r\n });\r\n tags.then((tags) => {\r\n var chatTags = chatConfig['chat-integration'].tags.map(tag=>tag['#text']);\r\n if(tags && chatTags.every((tag)=>!tags.includes(tag)) && tags.indexOf('cp.integrated') > -1){\r\n enableIntegration();\r\n }\r\n\r\n });\r\n }else{\r\n enableIntegration();\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction emitChatIntegration(){\r\n if(window.CHAT_INTEGRATION_AVAILABLE === true){\r\n bus.emit('event.chat.integrated.available');\r\n }else{\r\n bus.emit('event.chat.integrated.unavailable');\r\n }\r\n}\r\n\r\nexport function create(){\r\n if(window.hasOwnProperty('CHAT_INTEGRATION_AVAILABLE_CHECKED')){\r\n\r\n if(window.CHAT_INTEGRATION_AVAILABLE_CHECKED === true){\r\n emitChatIntegration()\r\n }else{\r\n window.CHAT_INTEGRATION_AVAILABLE_CALLBACK = function(){\r\n emitChatIntegration()\r\n }\r\n }\r\n }else{\r\n window.CHAT_INTEGRATION_AVAILABLE = false;\r\n bus.emit('event.chat.integrated.unavailable');\r\n bus.sync('event.cp.phantom.authorized', checkFeature);\r\n bus.sync('unauthorized', () => {\r\n bus.removeListener('event.cp.phantom.authorized', checkFeature);\r\n window.CHAT_INTEGRATION_AVAILABLE = false;\r\n });\r\n }\r\n}"]}