mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
Add method to track event only once (stores sent events in local storage).
This commit is contained in:
parent
f4d78a856c
commit
5ea9558976
1 changed files with 32 additions and 1 deletions
|
@ -1,8 +1,34 @@
|
||||||
define [
|
define [
|
||||||
"base"
|
"base"
|
||||||
], (App) ->
|
], (App) ->
|
||||||
|
CACHE_KEY = "countlyEvents"
|
||||||
|
|
||||||
|
_getEventCache = () ->
|
||||||
|
eventCache = window.localStorage.getItem CACHE_KEY
|
||||||
|
|
||||||
|
# Initialize as an empy object if the event cache is still empty.
|
||||||
|
if !eventCache?
|
||||||
|
window.localStorage.setItem(CACHE_KEY, "{}")
|
||||||
|
eventCache = window.localStorage.getItem CACHE_KEY
|
||||||
|
|
||||||
|
return JSON.parse eventCache
|
||||||
|
|
||||||
|
_eventInCache = (key) ->
|
||||||
|
curCache = _getEventCache()
|
||||||
|
|
||||||
|
if (curCache.hasOwnProperty key)
|
||||||
|
_getEventCache()[key]
|
||||||
|
else
|
||||||
|
false
|
||||||
|
|
||||||
|
_addEventToCache = (key) ->
|
||||||
|
curCache = _getEventCache()
|
||||||
|
curCache[key] = true
|
||||||
|
curCacheAsStr = JSON.stringify curCache
|
||||||
|
window.localStorage.setItem CACHE_KEY, curCacheAsStr
|
||||||
|
|
||||||
App.factory "event_tracking", ->
|
App.factory "event_tracking", ->
|
||||||
|
|
||||||
return {
|
return {
|
||||||
send: (category, action, label, value)->
|
send: (category, action, label, value)->
|
||||||
ga('send', 'event', category, action, label, value)
|
ga('send', 'event', category, action, label, value)
|
||||||
|
@ -10,10 +36,15 @@ define [
|
||||||
sendCountly: (key, segmentation) ->
|
sendCountly: (key, segmentation) ->
|
||||||
eventData = { key }
|
eventData = { key }
|
||||||
eventData.segmentation = segmentation if segmentation?
|
eventData.segmentation = segmentation if segmentation?
|
||||||
Countly?.q.push([ "add_event", eventData ]);
|
Countly?.q.push([ "add_event", eventData ])
|
||||||
|
|
||||||
sendCountlySampled: (key, segmentation) ->
|
sendCountlySampled: (key, segmentation) ->
|
||||||
@sendCountly key, segmentation if Math.random() < .01
|
@sendCountly key, segmentation if Math.random() < .01
|
||||||
|
|
||||||
|
sendCountlyOnce: (key, segmentation) ->
|
||||||
|
if ! _eventInCache(key)
|
||||||
|
_addEventToCache(key)
|
||||||
|
@sendCountly key, segmentation
|
||||||
}
|
}
|
||||||
|
|
||||||
# App.directive "countlyTrack", () ->
|
# App.directive "countlyTrack", () ->
|
||||||
|
|
Loading…
Reference in a new issue