mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 01:36:22 +00:00
@@ -11,14 +11,9 @@ import _ from 'lodash'
|
|||||||
import ConfigManager from 'browser/main/lib/ConfigManager'
|
import ConfigManager from 'browser/main/lib/ConfigManager'
|
||||||
import modal from 'browser/main/lib/modal'
|
import modal from 'browser/main/lib/modal'
|
||||||
import InitModal from 'browser/main/modals/InitModal'
|
import InitModal from 'browser/main/modals/InitModal'
|
||||||
import mixpanel from 'browser/main/lib/mixpanel'
|
|
||||||
import mobileAnalytics from 'browser/main/lib/AwsMobileAnalyticsConfig'
|
import mobileAnalytics from 'browser/main/lib/AwsMobileAnalyticsConfig'
|
||||||
import eventEmitter from 'browser/main/lib/eventEmitter'
|
import eventEmitter from 'browser/main/lib/eventEmitter'
|
||||||
|
|
||||||
function focused () {
|
|
||||||
mixpanel.track('MAIN_FOCUSED')
|
|
||||||
}
|
|
||||||
|
|
||||||
class Main extends React.Component {
|
class Main extends React.Component {
|
||||||
|
|
||||||
constructor (props) {
|
constructor (props) {
|
||||||
@@ -78,11 +73,9 @@ class Main extends React.Component {
|
|||||||
})
|
})
|
||||||
|
|
||||||
eventEmitter.on('editor:fullscreen', this.toggleFullScreen)
|
eventEmitter.on('editor:fullscreen', this.toggleFullScreen)
|
||||||
window.addEventListener('focus', focused)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount () {
|
componentWillUnmount () {
|
||||||
window.removeEventListener('focus', focused)
|
|
||||||
eventEmitter.off('editor:fullscreen', this.toggleFullScreen)
|
eventEmitter.off('editor:fullscreen', this.toggleFullScreen)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -73,7 +73,6 @@
|
|||||||
"markdown-it-plantuml": "^0.3.0",
|
"markdown-it-plantuml": "^0.3.0",
|
||||||
"md5": "^2.0.0",
|
"md5": "^2.0.0",
|
||||||
"mdurl": "^1.0.1",
|
"mdurl": "^1.0.1",
|
||||||
"mixpanel": "^0.4.1",
|
|
||||||
"moment": "^2.10.3",
|
"moment": "^2.10.3",
|
||||||
"node-ipc": "^8.1.0",
|
"node-ipc": "^8.1.0",
|
||||||
"raphael": "^2.2.7",
|
"raphael": "^2.2.7",
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ var config = {
|
|||||||
'markdown-it-kbd',
|
'markdown-it-kbd',
|
||||||
'markdown-it-plantuml',
|
'markdown-it-plantuml',
|
||||||
'devtron',
|
'devtron',
|
||||||
'mixpanel',
|
|
||||||
'@rokt33r/season',
|
'@rokt33r/season',
|
||||||
{
|
{
|
||||||
react: 'var React',
|
react: 'var React',
|
||||||
|
|||||||
@@ -4244,10 +4244,6 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
|
|||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
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:
|
mkdirp@0.5.0:
|
||||||
version "0.5.0"
|
version "0.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
|
||||||
|
|||||||
Reference in New Issue
Block a user