mattermost-mobile/app/utils/segment.js

68 lines
1.9 KiB
JavaScript

// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import Analytics from 'analytics-react-native';
import DeviceInfo from 'react-native-device-info';
import {Dimensions} from 'react-native';
import Config from 'assets/config';
import tracker from './time_tracker';
let diagnosticId;
export function init(config) {
if (!global.analytics) {
diagnosticId = config.DiagnosticId;
const {height, width} = Dimensions.get('window');
global.analytics = new Analytics(Config.SegmentApiKey, {
flushAt: 20,
flushInterval: 10000
});
global.analytics_context = {
app: {
version: DeviceInfo.getVersion(),
build: DeviceInfo.getBuildNumber()
},
device: {
dimensions: {
height,
width
},
isTablet: DeviceInfo.isTablet(),
os: DeviceInfo.getSystemVersion()
},
ip: '0.0.0.0',
server: config.Version
};
global.analytics.identify({
userId: diagnosticId,
context: global.analytics_context,
page: {
path: '',
referrer: '',
search: '',
title: '',
url: ''
},
anonymousId: '00000000000000000000000000'
});
}
}
export function recordTime(screenName, category, userId) {
if (global.analytics) {
const startTime = tracker[category];
tracker[category] = 0;
global.analytics.screen({
userId: diagnosticId,
name: screenName,
context: global.analytics_context,
properties: {
actual_user_id: userId,
time: Date.now() - startTime
}
});
}
}