From d934d9d759e75cc786163646f44c00e52e4cfc98 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 27 Nov 2018 19:14:07 +0100 Subject: [PATCH] Move group chat analytics event to server --- website/client/store/actions/chat.js | 19 ------------------ website/server/controllers/api-v3/chat.js | 24 +++++++++++++++++++++++ website/server/libs/analyticsService.js | 1 + 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/website/client/store/actions/chat.js b/website/client/store/actions/chat.js index 12e23a34b8..0bb568a863 100644 --- a/website/client/store/actions/chat.js +++ b/website/client/store/actions/chat.js @@ -23,25 +23,6 @@ export async function postChat (store, payload) { }); } - if (group.privacy === 'public') { - Analytics.track({ - hitType: 'event', - eventCategory: 'behavior', - eventAction: 'group chat', - groupType: group.type, - privacy: group.privacy, - groupName: group.name, - }); - } else { - Analytics.track({ - hitType: 'event', - eventCategory: 'behavior', - eventAction: 'group chat', - groupType: group.type, - privacy: group.privacy, - }); - } - let response = await axios.post(url, { message: payload.message, }); diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index cb73d2ada2..90691a245e 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -83,6 +83,8 @@ function getBannedWordsFromText (message) { return getMatchesByWordArray(message, bannedWords); } + +const mentionRegex = new RegExp('\\B@[-\\w]+', 'g'); /** * @api {post} /api/v3/groups/:groupId/chat Post chat message to a group * @apiName PostChat @@ -185,6 +187,28 @@ api.postChat = { await Promise.all(toSave); + let analyticsObject = { + uuid: user._id, + hitType: 'event', + category: 'behavior', + groupType: group.type, + privacy: group.privacy, + headers: req.headers, + }; + + const mentions = req.body.message.match(mentionRegex); + if (mentions) { + analyticsObject.mentionsCount = mentions.length; + } else { + analyticsObject.mentionsCount = 0; + } + if (group.privacy === 'public') { + analyticsObject.groupName = group.name; + } + + console.log(analyticsObject); + res.analytics.track('group chat', analyticsObject); + if (chatUpdated) { res.respond(200, {chat: chatRes.chat}); } else { diff --git a/website/server/libs/analyticsService.js b/website/server/libs/analyticsService.js index 6f0787c0c3..166ce35b6b 100644 --- a/website/server/libs/analyticsService.js +++ b/website/server/libs/analyticsService.js @@ -269,6 +269,7 @@ let _sendPurchaseDataToGoogle = (data) => { }; function track (eventType, data) { + console.log(eventType, data); return Promise.all([ _sendDataToAmplitude(eventType, data), _sendDataToGoogle(eventType, data),