{"version":3,"sources":["services/monitoring/data-layer/main.es6.js"],"names":["create","local","bus","window","globals","dataLayerName","userId","userEmail","authorized","sessionStorage","getItem","processPageVisit","sync","location","push","user","profile","profileID","email","event","emit","processAuthorized","status","setItem","removeItem","segment","isLoggedIn","processRegister","id","data","info","createDataLayer","variable","freeMinutes","enabled","chat","girlID","attendeeID","dateDiff","dateold","datenew","ynew","getFullYear","mnew","getMonth","dnew","getDate","yold","mold","dold","diff","saveRegistrationData","gtmData","user_id","age","country_ip","country","gender","reg_type","hasOwnProperty","birthdate","indexOf","Date","date","transaction","attributes","dateOfPurchase","join","isFirstSale","getMarketingParams","locationParams","uri","params","search","hash","split","forEach","param","configSatelite","collectedData","storage","identity","undefined","socialName","on"],"mappings":"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","file":"services/monitoring/data-layer/main.js","sourceRoot":"/source/","sourcesContent":["import bus from 'bus';\r\nimport sessionStorage from 'modules/session-storage';\r\nimport globals from 'modules/globals';\r\nimport uri from 'modules/utils/uri';\r\nimport {satelite as configSatelite} from 'config';\r\nimport storage from 'modules/env/storage';\r\n\r\nvar local = bus.create('data-layer'),\r\n window = globals.window,\r\n dataLayerName,\r\n userId = null,\r\n userEmail = null,\r\n authorized = !!sessionStorage.getItem('authorized');\r\n\r\nfunction processPageVisit() {\r\n bus.sync('history:update', function (location) {\r\n\r\n window[dataLayerName].push({\r\n user: [{ profile: [{ profileID: userId, email: userEmail }] }],\r\n event: 'event_userId_extraction_changeDL'\r\n });\r\n\r\n bus.emit('command.gtm.load');\r\n });\r\n\r\n}\r\n\r\nfunction processAuthorized(status) {\r\n\r\n if (status === authorized) {\r\n return;\r\n }\r\n\r\n authorized = status;\r\n authorized ? sessionStorage.setItem('authorized', true) : sessionStorage.removeItem('authorized');\r\n\r\n window[dataLayerName].push({\r\n user: [{ segment: { isLoggedIn: authorized, email: userEmail } }],\r\n event: 'event_authorization_changeDL'\r\n });\r\n\r\n}\r\n\r\nfunction processRegister(id, data) {\r\n\r\n window[dataLayerName].push({\r\n info: data,\r\n event: 'event_registration_changeDL'\r\n });\r\n}\r\n\r\nfunction createDataLayer(variable) {\r\n dataLayerName = variable;\r\n window[dataLayerName] = window[dataLayerName] || [];\r\n}\r\n\r\nfunction push(data) {\r\n window[dataLayerName].push(data);\r\n}\r\n\r\nfunction freeMinutes(enabled) {\r\n\r\n var event = enabled\r\n ? 'event_freechat_start_changeDL'\r\n : 'event_freechat_end_changeDL';\r\n\r\n return function (data) {\r\n\r\n window[dataLayerName].push({\r\n chat: { girlID: data.attendeeID },\r\n event: event\r\n });\r\n\r\n };\r\n\r\n}\r\n\r\nfunction dateDiff(dateold, datenew)\r\n{\r\n var ynew = datenew.getFullYear();\r\n var mnew = datenew.getMonth();\r\n var dnew = datenew.getDate();\r\n var yold = dateold.getFullYear();\r\n var mold = dateold.getMonth();\r\n var dold = dateold.getDate();\r\n var diff = ynew - yold;\r\n if(mold > mnew) diff--;\r\n else\r\n {\r\n if(mold == mnew)\r\n {\r\n if(dold > dnew) diff--;\r\n }\r\n }\r\n return diff;\r\n}\r\n\r\nfunction saveRegistrationData(data){\r\n var gtmData ={\r\n user_id: data.id,\r\n age:0,\r\n country_ip: data.country,\r\n gender: data.gender,\r\n reg_type : data['reg_type']\r\n };\r\n if(data.hasOwnProperty('birthdate')\r\n && ((typeof(data.birthdate) === 'string' && data.birthdate.indexOf('0000') === -1)\r\n || typeof(data.birthdate) === 'number')){\r\n gtmData.age = dateDiff(new Date(data.birthdate), new Date());\r\n }\r\n processRegister(data.id, gtmData);\r\n}\r\n\r\nexport function create(variable) {\r\n createDataLayer(variable);\r\n\r\n //todo: организовать сервис, который публикует событие перехода на новую страницу, необходимо для задела на переход на single page application\r\n bus.emit('history:update', window.location);\r\n\r\n bus.sync('event.purchase.first-buy', function () {\r\n var date = new Date();\r\n\r\n window[dataLayerName].push({\r\n\r\n transaction: [{\r\n\r\n attributes: [{\r\n dateOfPurchase: [date.getMonth() + 1, date.getDate(), date.getFullYear() % 2000].join('/'),\r\n isFirstSale: true\r\n }]\r\n\r\n }],\r\n\r\n event: 'event_transaction_attributes_changeDL'\r\n });\r\n\r\n });\r\n\r\n /*\r\n событие перехода с внешнего сателита, необходимо фиксировать все внешние регистрации\r\n собрать маректинговые параметры\r\n */\r\n function getMarketingParams(){\r\n let data = {}\r\n let locationParams = uri.params(window.location.search);\r\n let hash = window.location.hash;\r\n\r\n if (hash){\r\n hash = hash.split('#')[1];\r\n hash = hash\r\n .split('&') || [];\r\n\r\n hash.forEach((params)=>{\r\n let param = params.split('=');\r\n locationParams[param[0]] = param[1];\r\n });\r\n }\r\n\r\n let params = configSatelite[\"marketing-params\"];\r\n // try get params from query and hash\r\n for (let param of params){\r\n if (locationParams[param]){\r\n data[param] = locationParams[param];\r\n }\r\n }\r\n for (let param of ['afid','subafid']){\r\n if (locationParams[param]){\r\n data[param] = locationParams[param];\r\n }\r\n }\r\n return data;\r\n }\r\n bus.sync('event.satelite.newuser.post', function (data) {\r\n // store data and send after reload\r\n // collect marketing params\r\n let collectedData = getMarketingParams();\r\n collectedData[\"afid\"] = collectedData[\"afid\"] || data[\"referrer\"];\r\n collectedData[\"subafid\"] = collectedData[\"subafid\"] || data[\"subreferrer\"];\r\n storage.setItem('satelite.newuser.data',collectedData);\r\n\r\n });\r\n bus.sync('event.satelite.newuser', function (data) {\r\n let collectedData = storage.getItem('satelite.newuser.data');\r\n storage.setItem('satelite.newuser.data',null);\r\n\r\n // collect marketing params\r\n collectedData = collectedData || getMarketingParams();\r\n collectedData[\"afid\"] = collectedData[\"afid\"] || data[\"referrer\"];\r\n collectedData[\"subafid\"] = collectedData[\"subafid\"] || data[\"subreferrer\"];\r\n collectedData[\"gender\"] = collectedData[\"gender\"] || data[\"gender\"];\r\n collectedData[\"age\"] = collectedData[\"age\"] || data[\"age\"];\r\n collectedData[\"email\"] = collectedData[\"email\"] || data[\"email\"];\r\n\r\n storage.setItem('satelite.newuser.done',true);\r\n\r\n window[dataLayerName].push({\r\n info: collectedData,\r\n event: 'event_satelite_newuser_changeDL'\r\n });\r\n });\r\n\r\n bus.sync('authorized', function (identity) {\r\n userId = identity.id;\r\n userEmail = identity.email;\r\n processAuthorized(true);\r\n processPageVisit();\r\n });\r\n\r\n bus.sync('unauthorized', function () {\r\n userId = undefined;\r\n processAuthorized(false);\r\n processPageVisit();\r\n });\r\n\r\n bus.sync('account:register', function (data) {\r\n data['reg_type'] = 'form';\r\n saveRegistrationData(data);\r\n });\r\n\r\n bus.sync('social:register-complete', function (socialName, id, data) {\r\n data['reg_type'] = socialName;\r\n saveRegistrationData(data);\r\n });\r\n\r\n bus\r\n .sync('event.chat.free-minutes.enabled', freeMinutes(true))\r\n .sync('event.chat.free-minutes.disabled', freeMinutes(false));\r\n\r\n local.on('command.monitoring.data-layer.push', push);\r\n};"]}