Use existing localStorage module.

This commit is contained in:
Paulo Reis 2016-07-27 16:53:44 +01:00
parent a3af95006b
commit a93980f080

View file

@ -1,41 +1,34 @@
define [
"base"
"modules/localStorage"
], (App) ->
CACHE_KEY = "countlyEvents"
_getEventCache = () ->
eventCacheStr = window.localStorage.getItem CACHE_KEY
App.factory "event_tracking", (localStorage) ->
_getEventCache = () ->
eventCache = localStorage CACHE_KEY
# Initialize as an empy object if the event cache is still empty.
if !eventCacheStr?
eventCacheStr = "{}"
# Initialize as an empy object if the event cache is still empty.
if !eventCache?
eventCache = {}
localStorage CACHE_KEY, eventCache
# Errors writing to localStorage may happen when quota is full or
# browser is in incognito mode. We'll return an empty object, anyway.
try
window.localStorage.setItem CACHE_KEY, eventCacheStr
return eventCache
return JSON.parse eventCacheStr
_eventInCache = (key) ->
curCache = _getEventCache()
_eventInCache = (key) ->
curCache = _getEventCache()
if (curCache.hasOwnProperty key)
curCache[key]
else
false
if (curCache.hasOwnProperty key)
curCache[key]
else
false
_addEventToCache = (key) ->
curCache = _getEventCache()
curCache[key] = true
_addEventToCache = (key) ->
curCache = _getEventCache()
curCache[key] = true
curCacheAsStr = JSON.stringify curCache
localStorage CACHE_KEY, curCache
# Protection against issues mentioned above.
try
window.localStorage.setItem CACHE_KEY, curCacheAsStr
App.factory "event_tracking", ->
return {
send: (category, action, label, value)->
ga('send', 'event', category, action, label, value)