Sha256: 201ed2c7165f42f9b829f6c75afb36e880a4a8edca7c940ad90fc802ba4dc91c

Contents?: true

Size: 1.2 KB

Versions: 16

Compression:

Stored size: 1.2 KB

Contents

class TestTrack::WebSessionVisitorRepository
  attr_reader :current_identity, :unauthenticated_visitor_id

  def initialize(current_identity:, unauthenticated_visitor_id:)
    @current_identity = current_identity
    @unauthenticated_visitor_id = unauthenticated_visitor_id
  end

  def current
    if current_identity
      for_identity(current_identity)
    else
      unauthenticated
    end
  end

  def for_identity(identity)
    identity_visitor_map[identity] ||= TestTrack::LazyVisitorByIdentity.new(identity)
  end

  def forget_unauthenticated!
    @unauthenticated = TestTrack::Visitor.new
  end

  def authenticate!(identity)
    @current_identity = identity
    identity_visitor_map[identity] = unauthenticated
    unauthenticated.link_identity!(identity)
  end

  def all
    identity_visitor_map.values.to_set << current
  end

  def notify_unsynced_assignments!
    all.each do |visitor|
      TestTrack::ThreadedVisitorNotifier.new(visitor).notify if visitor.loaded? && visitor.unsynced_assignments.present?
    end
  end

  private

  def unauthenticated
    @unauthenticated ||= TestTrack::Visitor.new(id: unauthenticated_visitor_id)
  end

  def identity_visitor_map
    @identity_visitor_map ||= {}
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
test_track_rails_client-8.1.1 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-8.1.0 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-8.0.0 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-7.1.2 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-7.1.1 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-7.0.0 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-6.0.0 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-5.0.1 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-5.0.0 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.2 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.1 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.0 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.0.rc3 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.0.rc2 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.0.alpha35 app/models/test_track/web_session_visitor_repository.rb
test_track_rails_client-4.0.0.alpha34 app/models/test_track/web_session_visitor_repository.rb