class Reacto::SharedTrackable

Public Class Methods

new(executor = nil, activate_on_subscribe = false, &block) click to toggle source
Calls superclass method
# File lib/reacto/shared_trackable.rb, line 5
def initialize(executor = nil, activate_on_subscribe = false, &block)
  super(executor, &block)

  @activate_on_subscribe = activate_on_subscribe
  @active = false
end

Public Instance Methods

activate!() click to toggle source
# File lib/reacto/shared_trackable.rb, line 34
def activate!
  return if @shared_subscription.nil?
  return if @active

  @active = true
  do_track(shared_subscription)

  self
end
activate_on_subscribe() click to toggle source
# File lib/reacto/shared_trackable.rb, line 44
def activate_on_subscribe
end
off(notification_tracker = nil) click to toggle source
# File lib/reacto/shared_trackable.rb, line 12
def off(notification_tracker = nil)
  shared_subscription.subscriptions.reject! do |subscription|
    !subscription.subscribed?
  end

  return if shared_subscription.subscriptions.count > 0

  shared_subscription.unsubscribe
  @shared_subscription = nil
  @active = false
end
track(notification_tracker) click to toggle source
# File lib/reacto/shared_trackable.rb, line 24
def track(notification_tracker)
  subscription =
    Subscriptions::TrackerSubscription.new(notification_tracker, self)

  shared_subscription.add(subscription)
  activate! if @activate_on_subscribe

  Subscriptions::SubscriptionWrapper.new(subscription)
end

Private Instance Methods

shared_subscription() click to toggle source
# File lib/reacto/shared_trackable.rb, line 49
def shared_subscription
  @shared_subscription ||= Subscriptions.shared_subscription(self)
end