diff --git a/website/client/app.vue b/website/client/app.vue index b16ff2beab..897be86f33 100644 --- a/website/client/app.vue +++ b/website/client/app.vue @@ -69,6 +69,7 @@ import AppFooter from './components/appFooter'; import notificationsDisplay from './components/notifications'; import snackbars from './components/snackbars/notifications'; import { mapState } from 'client/libs/store'; +import * as Analytics from 'client/libs/analytics'; import BuyModal from './components/shops/buyModal.vue'; import SelectMembersModal from 'client/components/selectMembersModal.vue'; import notifications from 'client/mixins/notifications'; @@ -158,14 +159,27 @@ export default { this.$store.dispatch('tasks:fetchUserTasks'), ]).then(() => { this.isUserLoaded = true; + Analytics.setUser(); + Analytics.updateUser(); }).catch((err) => { console.error('Impossible to fetch user. Clean up localStorage and refresh.', err); // eslint-disable-line no-console }); } // Manage modals - this.$root.$on('show::modal', (modalId, data) => { - if (data && data.fromRoot) return; + this.$root.$on('show::modal', (modalId, data = {}) => { + if (data.fromRoot) return; + + // Track opening of gems modal unless it's been already tracked + // For example the gems button in the menu already tracks the event by itself + if (modalId === 'buy-gems' && data.alreadyTracked !== true) { + Analytics.track({ + hitType: 'event', + eventCategory: 'button', + eventAction: 'click', + eventLabel: 'Gems > Wallet', + }); + } // Get last modal on stack and hide let modalStackLength = this.$store.state.modalStack.length; diff --git a/website/client/components/achievements/lowHealth.vue b/website/client/components/achievements/lowHealth.vue index 7ee8e8d043..feedcfcbd0 100644 --- a/website/client/components/achievements/lowHealth.vue +++ b/website/client/components/achievements/lowHealth.vue @@ -60,6 +60,7 @@ import bModal from 'bootstrap-vue/lib/components/modal'; import Avatar from '../avatar'; import { mapState } from 'client/libs/store'; +import * as Analytics from 'client/libs/analytics'; import percent from '../../../common/script/libs/percent'; import {maxHealth} from '../../../common/script/index'; @@ -84,6 +85,14 @@ export default { return `${Math.ceil(this.user.stats.hp)} / ${this.maxHealth}`; }, }, + mounted () { + Analytics.track({ + hitType: 'event', + eventCategory: 'button', + eventAction: 'click', + eventLabel: 'Health Warning', + }); + }, methods: { close () { this.$root.$emit('hide::modal', 'low-health'); diff --git a/website/client/components/appFooter.vue b/website/client/components/appFooter.vue index b3a4e77f81..c2d894748e 100644 --- a/website/client/components/appFooter.vue +++ b/website/client/components/appFooter.vue @@ -219,6 +219,7 @@ import axios from 'axios'; import moment from 'moment'; import { mapState } from 'client/libs/store'; +import * as Analytics from 'client/libs/analytics'; import gryphon from 'assets/svg/gryphon.svg'; import twitter from 'assets/svg/twitter.svg'; @@ -331,6 +332,12 @@ export default { this.$root.$emit('show::modal', 'modify-inventory'); }, donate () { + Analytics.track({ + hitType: 'event', + eventCategory: 'button', + eventAction: 'click', + eventLabel: 'Gems > Donate', + }); this.$root.$emit('show::modal', 'buy-gems'); }, }, diff --git a/website/client/components/appMenu.vue b/website/client/components/appMenu.vue index 68c215ed35..ff5f15c83c 100644 --- a/website/client/components/appMenu.vue +++ b/website/client/components/appMenu.vue @@ -224,6 +224,7 @@ div diff --git a/website/client/components/static/header.vue b/website/client/components/static/header.vue index b9f32e1c80..420a72b668 100644 --- a/website/client/components/static/header.vue +++ b/website/client/components/static/header.vue @@ -91,20 +91,29 @@ diff --git a/website/client/components/static/front.vue b/website/client/components/static/home.vue similarity index 99% rename from website/client/components/static/front.vue rename to website/client/components/static/home.vue index d3efb36dac..ddafea71f9 100644 --- a/website/client/components/static/front.vue +++ b/website/client/components/static/home.vue @@ -602,6 +602,7 @@