Class: StreamRails::FeedManager

Inherits:
Object
  • Object
show all
Defined in:
lib/stream_rails/feed_manager.rb

Overview

Class used to manage feeds

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, opts = {}) ⇒ FeedManager

Returns a new instance of FeedManager.



6
7
8
9
10
11
# File 'lib/stream_rails/feed_manager.rb', line 6

def initialize(client, opts = {})
  @client = client
  @user_feed = opts[:user_feed]
  @news_feeds = opts[:news_feeds]
  @notification_feed = opts[:notification_feed]
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



4
5
6
# File 'lib/stream_rails/feed_manager.rb', line 4

def client
  @client
end

Instance Method Details

#created_activity(instance) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/stream_rails/feed_manager.rb', line 53

def created_activity(instance)
  return unless StreamRails.enabled? && instance.activity_should_sync?

  activity = instance.create_activity
  feed = get_owner_feed(instance)
  feed.add_activity(activity)
end

#destroyed_activity(instance) ⇒ Object



61
62
63
64
65
66
# File 'lib/stream_rails/feed_manager.rb', line 61

def destroyed_activity(instance)
  return unless StreamRails.enabled?

  feed = get_owner_feed(instance)
  feed.remove(instance.activity_foreign_id, foreign_id: true)
end

#follow_user(user_id, target_id) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/stream_rails/feed_manager.rb', line 29

def follow_user(user_id, target_id)
  return unless StreamRails.enabled?

  target_feed = get_user_feed(target_id)
  @news_feeds.each do |_, feed|
    news_feed = get_feed(feed, user_id)
    news_feed.follow(target_feed.slug, target_feed.user_id)
  end
end

#get_feed(feed_type, user_id) ⇒ Object



25
26
27
# File 'lib/stream_rails/feed_manager.rb', line 25

def get_feed(feed_type, user_id)
  @client.feed(feed_type, user_id)
end

#get_news_feeds(user_id) ⇒ Object



17
18
19
# File 'lib/stream_rails/feed_manager.rb', line 17

def get_news_feeds(user_id)
  @news_feeds.transform_values { |feed_slug| get_feed(feed_slug, user_id) }
end

#get_notification_feed(user_id) ⇒ Object



21
22
23
# File 'lib/stream_rails/feed_manager.rb', line 21

def get_notification_feed(user_id)
  @client.feed(@notification_feed, user_id)
end

#get_owner_feed(instance) ⇒ Object



49
50
51
# File 'lib/stream_rails/feed_manager.rb', line 49

def get_owner_feed(instance)
  get_feed(instance.activity_owner_feed, instance.activity_owner_id)
end

#get_user_feed(user_id) ⇒ Object



13
14
15
# File 'lib/stream_rails/feed_manager.rb', line 13

def get_user_feed(user_id)
  @client.feed(@user_feed, user_id)
end

#unfollow_user(user_id, target_id) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/stream_rails/feed_manager.rb', line 39

def unfollow_user(user_id, target_id)
  return unless StreamRails.enabled?

  target_feed = get_user_feed(target_id)
  @news_feeds.each do |_, feed|
    news_feed = get_feed(feed, user_id)
    news_feed.unfollow(target_feed.slug, target_feed.user_id)
  end
end