Sha256: 7a6ba9bed4ef07baa7c222de6abe426e08fd1731f2d9695e4c7c898f7b6c498c
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
module Mixpal class Tracker attr_reader :events, :user_updates, :identity, :alias_user STORAGE_KEY = 'mixpal' def initialize(args = {}) extend Mixpal.configuration.helper_module @events = [] @user_updates = [] @identity = args[:identity] end def register_user(properties) @alias_user = true update_user(properties) end def update_user(properties) user_updates << Mixpal::User.new(properties) end def track(name, properties = {}) events << Mixpal::Event.new(name, properties) end def render ''.tap do |html| html << '<script type="text/javascript">' html << "mixpanel.alias(\"#{identity}\");" if alias_user html << "mixpanel.identify(\"#{identity}\");" if identity html << events.map(&:render).join('') html << user_updates.map(&:render).join('') html << '</script>' end.html_safe end def store!(session) session[STORAGE_KEY] = to_store end def restore!(session) data = session[STORAGE_KEY] || {} @alias_user = data['alias_user'] @identity ||= data['identity'] if data['events'] @events = data['events'].map { |e| Mixpal::Event.from_store(e) } end if data['user_updates'] @user_updates = data['user_updates'].map { |u| Mixpal::User.from_store(u) } end session.delete(STORAGE_KEY) end private def to_store { 'alias_user' => alias_user, 'identity' => identity, 'events' => events.map(&:to_store), 'user_updates' => user_updates.map(&:to_store) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mixpal-0.2.1 | lib/mixpal/tracker.rb |
mixpal-0.2.0 | lib/mixpal/tracker.rb |