summaryrefslogtreecommitdiffstats
path: root/webapp/actions
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2017-02-24 17:34:21 +0000
committerGitHub <noreply@github.com>2017-02-24 17:34:21 +0000
commit97cc0a0d73dcacfefcdff785c802762e2a0a60d6 (patch)
treec584bb28511980bde3bf09a6fffc1f8feacf9ddf /webapp/actions
parentf182d196fffc9da89ad63bdbd7bbb2e41da3146e (diff)
downloadchat-97cc0a0d73dcacfefcdff785c802762e2a0a60d6.tar.gz
chat-97cc0a0d73dcacfefcdff785c802762e2a0a60d6.tar.bz2
chat-97cc0a0d73dcacfefcdff785c802762e2a0a60d6.zip
PLT-5071: Client side component of Telemetry. (#5516)
Diffstat (limited to 'webapp/actions')
-rw-r--r--webapp/actions/analytics_actions.jsx12
-rw-r--r--webapp/actions/channel_actions.jsx4
-rw-r--r--webapp/actions/diagnostics_actions.jsx8
-rw-r--r--webapp/actions/global_actions.jsx9
-rw-r--r--webapp/actions/post_actions.jsx3
5 files changed, 22 insertions, 14 deletions
diff --git a/webapp/actions/analytics_actions.jsx b/webapp/actions/analytics_actions.jsx
deleted file mode 100644
index 924afdaed..000000000
--- a/webapp/actions/analytics_actions.jsx
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import Client from 'client/web_client.jsx';
-
-export function track(category, action, label, property, value) {
- Client.track(category, action, label, property, value);
-}
-
-export function trackPage() {
- Client.trackPage();
-}
diff --git a/webapp/actions/channel_actions.jsx b/webapp/actions/channel_actions.jsx
index 08d8f1486..3528b4480 100644
--- a/webapp/actions/channel_actions.jsx
+++ b/webapp/actions/channel_actions.jsx
@@ -10,6 +10,7 @@ import * as ChannelUtils from 'utils/channel_utils.jsx';
import PreferenceStore from 'stores/preference_store.jsx';
import {loadProfilesAndTeamMembersForDMSidebar} from 'actions/user_actions.jsx';
+import {trackEvent} from 'actions/diagnostics_actions.jsx';
import Client from 'client/web_client.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
@@ -171,6 +172,7 @@ export function openDirectChannelToUser(user, success, error) {
const channel = ChannelStore.getByName(channelName);
if (channel) {
+ trackEvent('api', 'api_channels_join_direct');
PreferenceStore.setPreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, user.id, 'true');
loadProfilesAndTeamMembersForDMSidebar();
@@ -224,10 +226,12 @@ export function openDirectChannelToUser(user, success, error) {
}
export function markFavorite(channelId) {
+ trackEvent('api', 'api_channels_favorited');
AsyncClient.savePreference(Preferences.CATEGORY_FAVORITE_CHANNEL, channelId, 'true');
}
export function unmarkFavorite(channelId) {
+ trackEvent('api', 'api_channels_unfavorited');
const pref = {
user_id: UserStore.getCurrentId(),
category: Preferences.CATEGORY_FAVORITE_CHANNEL,
diff --git a/webapp/actions/diagnostics_actions.jsx b/webapp/actions/diagnostics_actions.jsx
new file mode 100644
index 000000000..b093d8e8b
--- /dev/null
+++ b/webapp/actions/diagnostics_actions.jsx
@@ -0,0 +1,8 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import Client from 'client/web_client.jsx';
+
+export function trackEvent(category, event, properties) {
+ Client.trackEvent(category, event, properties);
+}
diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx
index 5def48858..efff5076a 100644
--- a/webapp/actions/global_actions.jsx
+++ b/webapp/actions/global_actions.jsx
@@ -17,6 +17,7 @@ import {loadProfilesAndTeamMembersForDMSidebar} from 'actions/user_actions.jsx';
import {loadChannelsForCurrentUser} from 'actions/channel_actions.jsx';
import {stopPeriodicStatusUpdates} from 'actions/status_actions.jsx';
import * as WebsocketActions from 'actions/websocket_actions.jsx';
+import {trackEvent} from 'actions/diagnostics_actions.jsx';
import Constants from 'utils/constants.jsx';
const ActionTypes = Constants.ActionTypes;
@@ -28,7 +29,6 @@ import * as Utils from 'utils/utils.jsx';
import en from 'i18n/en.json';
import * as I18n from 'i18n/i18n.jsx';
-import {trackPage} from 'actions/analytics_actions.jsx';
import {browserHistory} from 'react-router/es6';
export function emitChannelClickEvent(channel) {
@@ -53,7 +53,6 @@ export function emitChannelClickEvent(channel) {
AsyncClient.getChannelStats(chan.id, true);
AsyncClient.viewChannel(chan.id, oldChannelId);
loadPosts(chan.id);
- trackPage();
});
// Mark previous and next channel as read
@@ -94,6 +93,10 @@ export function emitInitialLoad(callback) {
global.window.mm_config = data.client_cfg;
global.window.mm_license = data.license_cfg;
+ if (global.window && global.window.analytics) {
+ global.window.analytics.identify(global.window.mm_config.DiagnosticId);
+ }
+
UserStore.setNoAccounts(data.no_accounts);
if (data.user && data.user.id) {
@@ -515,6 +518,8 @@ export function emitSearchMentionsEvent(user) {
terms = termKeys.join(' ');
}
+ trackEvent('api', 'api_posts_search_mention');
+
AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVED_SEARCH_TERM,
term: terms,
diff --git a/webapp/actions/post_actions.jsx b/webapp/actions/post_actions.jsx
index 81ef73fc5..ad05a69db 100644
--- a/webapp/actions/post_actions.jsx
+++ b/webapp/actions/post_actions.jsx
@@ -9,6 +9,7 @@ import UserStore from 'stores/user_store.jsx';
import {loadStatusesForChannel} from 'actions/status_actions.jsx';
import {loadNewDMIfNeeded} from 'actions/user_actions.jsx';
+import {trackEvent} from 'actions/diagnostics_actions.jsx';
import Client from 'client/web_client.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
@@ -64,10 +65,12 @@ export function handleNewPost(post, msg) {
}
export function flagPost(postId) {
+ trackEvent('api', 'api_posts_flagged');
AsyncClient.savePreference(Preferences.CATEGORY_FLAGGED_POST, postId, 'true');
}
export function unflagPost(postId, success) {
+ trackEvent('api', 'api_posts_unflagged');
const pref = {
user_id: UserStore.getCurrentId(),
category: Preferences.CATEGORY_FLAGGED_POST,