feat: more events tracking for SaaS (#6234)

This commit is contained in:
Shivam Mishra
2023-01-18 11:23:40 +05:30
committed by GitHub
parent 1df1b1f8e4
commit 37b9816827
40 changed files with 539 additions and 50 deletions

View File

@@ -1,12 +1,26 @@
import { AnalyticsBrowser } from '@june-so/analytics-next';
class AnalyticsHelper {
/**
* AnalyticsHelper class to initialize and track user analytics
* @class AnalyticsHelper
*/
export class AnalyticsHelper {
/**
* @constructor
* @param {Object} [options={}] - options for analytics
* @param {string} [options.token] - analytics token
*/
constructor({ token: analyticsToken } = {}) {
this.analyticsToken = analyticsToken;
this.analytics = null;
this.user = {};
}
/**
* Initialize analytics
* @function
* @async
*/
async init() {
if (!this.analyticsToken) {
return;
@@ -18,6 +32,11 @@ class AnalyticsHelper {
this.analytics = analytics;
}
/**
* Identify the user
* @function
* @param {Object} user - User object
*/
identify(user) {
if (!this.analytics) {
return;
@@ -41,6 +60,12 @@ class AnalyticsHelper {
}
}
/**
* Track any event
* @function
* @param {string} eventName - event name
* @param {Object} [properties={}] - event properties
*/
track(eventName, properties = {}) {
if (!this.analytics) {
return;
@@ -53,6 +78,11 @@ class AnalyticsHelper {
});
}
/**
* Track the page views
* @function
* @param {Object} params - Page view properties
*/
page(params) {
if (!this.analytics) {
return;
@@ -62,6 +92,5 @@ class AnalyticsHelper {
}
}
export * as ANALYTICS_EVENTS from './events';
// This object is shared across, the init is called in app/javascript/packs/application.js
export default new AnalyticsHelper(window.analyticsConfig);