diff --git a/browser/main/Main.js b/browser/main/Main.js index bfd1bd5f1..80de5e0ea 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -11,14 +11,9 @@ import _ from 'lodash' import ConfigManager from 'browser/main/lib/ConfigManager' import modal from 'browser/main/lib/modal' import InitModal from 'browser/main/modals/InitModal' -import mixpanel from 'browser/main/lib/mixpanel' import mobileAnalytics from 'browser/main/lib/AwsMobileAnalyticsConfig' import eventEmitter from 'browser/main/lib/eventEmitter' -function focused () { - mixpanel.track('MAIN_FOCUSED') -} - class Main extends React.Component { constructor (props) { @@ -76,11 +71,9 @@ class Main extends React.Component { }) eventEmitter.on('editor:fullscreen', this.toggleFullScreen) - window.addEventListener('focus', focused) } componentWillUnmount () { - window.removeEventListener('focus', focused) eventEmitter.off('editor:fullscreen', this.toggleFullScreen) } diff --git a/browser/main/lib/mixpanel.js b/browser/main/lib/mixpanel.js deleted file mode 100644 index 5fd54b90a..000000000 --- a/browser/main/lib/mixpanel.js +++ /dev/null @@ -1,121 +0,0 @@ -import store from 'browser/main/store' - -const _ = require('lodash') -const keygen = require('browser/lib/keygen') -const Mixpanel = require('mixpanel') -const mixpanel = Mixpanel.init('7a0aca437d72dfd07cbcbf58d3b61f27', {key: 'fde4fd23f4d550f1b646bcd7d4374b1f'}) -const moment = require('moment') -const electron = require('electron') - -function _getClientKey () { - let clientKey = localStorage.getItem('clientKey') - if (!_.isString(clientKey) || clientKey.length !== 40) { - clientKey = keygen(20) - _setClientKey(clientKey) - } - - return clientKey -} - -function _setClientKey (newKey) { - localStorage.setItem('clientKey', newKey) -} - -function _fetch () { - let events - try { - events = JSON.parse(localStorage.getItem('events')) - if (!_.isArray(events)) throw new Error('events is not an array.') - } catch (err) { - console.warn(err) - events = [] - localStorage.setItem('events', JSON.stringify(events)) - console.info('Events cache initialzed') - } - return events -} - -function _keep (name, properties) { - let events = _fetch() - properties.time = new Date() - events.push({ - name, - properties - }) - localStorage.setItem('events', JSON.stringify(events)) -} - -function _keepUnique (name, properties) { - let events = _fetch() - properties.time = new Date() - events = events.filter((event) => event.name !== name) - events.push({ - name, - properties - }) - localStorage.setItem('events', JSON.stringify(events)) -} - -function _flush () { - let events = _fetch() - let spliced = events.splice(0, 50) - localStorage.setItem('events', JSON.stringify(events)) - - if (spliced.length > 0) { - let parsedEvents = spliced - .filter((event) => { - if (!_.isObject(event)) return false - if (!_.isString(event.name)) return false - if (!_.isObject(event.properties)) return false - if (!moment(event.properties.time).isValid()) return false - if (new Date() - moment(event.properties.time).toDate() > 1000 * 3600 * 24 * 3) return false - return true - }) - .map((event) => { - return { - event: event.name, - properties: event.properties - } - }) - - mixpanel.import_batch(parsedEvents, {}, (errs) => { - if (errs.length > 0) { - let events = _fetch() - events = events.concat(spliced) - localStorage.setItem('events', JSON.stringify(events)) - } else { - _flush() - } - }) - - let state = store.getState() - mixpanel.people.set(_getClientKey(), { - storage_count: state.data.storageMap.size, - note_count: state.data.noteMap.size, - version: electron.remote.app.getVersion() - }) - } -} - -setInterval(_flush, 1000 * 60 * 60) - -function track (name, properties) { - switch (name) { - case 'MAIN_FOCUSED': - properties = Object.assign({}, properties, { - distinct_id: _getClientKey() - }) - _keepUnique(name, properties) - break - default: - properties = Object.assign({}, properties, { - distinct_id: _getClientKey() - }) - _keep(name, properties) - } -} - -module.exports = { - _mp: mixpanel, - track -} diff --git a/package.json b/package.json index 0f7456d2d..7b6108d43 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,6 @@ "markdown-it-plantuml": "^0.3.0", "md5": "^2.0.0", "mdurl": "^1.0.1", - "mixpanel": "^0.4.1", "moment": "^2.10.3", "node-ipc": "^8.1.0", "raphael": "^2.2.7", diff --git a/webpack-skeleton.js b/webpack-skeleton.js index 1d07f11a5..87bbe7449 100644 --- a/webpack-skeleton.js +++ b/webpack-skeleton.js @@ -42,7 +42,6 @@ var config = { 'markdown-it-kbd', 'markdown-it-plantuml', 'devtron', - 'mixpanel', '@rokt33r/season', { react: 'var React', diff --git a/yarn.lock b/yarn.lock index fed3a4a19..8e8d57299 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4244,10 +4244,6 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mixpanel@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mixpanel/-/mixpanel-0.4.1.tgz#0e92ee336fb89a164f54830f093c9cae8517fb8f" - mkdirp@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"