diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-03-25 02:13:30 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-03-25 02:13:30 +0100 |
commit | a08e724476f47b85de9bb334eeadaf882a7a23ee (patch) | |
tree | d779668fa289d2b7077c878b19fc6691a57142b7 /app/services/fan_out_on_write_service.rb | |
parent | 9594f0e858172b9295c5598fcb6ab10506d3046d (diff) |
Fix subscriptions:clear task, refactor feeds, refactor streamable activites
and atom feed generation to some extent, as well as the way mentions are stored
Diffstat (limited to 'app/services/fan_out_on_write_service.rb')
-rw-r--r-- | app/services/fan_out_on_write_service.rb | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 62cf2a1fe..4bb3f0a10 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -1,6 +1,4 @@ class FanOutOnWriteService < BaseService - MAX_FEED_SIZE = 800 - # Push a status into home and mentions feeds # @param [Status] status def call(status) @@ -17,13 +15,13 @@ class FanOutOnWriteService < BaseService def deliver_to_followers(status, replied_to_user) status.account.followers.each do |follower| - next if (status.reply? && !(follower.id = replied_to_user.id || follower.following?(replied_to_user))) || !follower.local? + next if !follower.local? || FeedManager.filter_status?(status, follower) push(:home, follower.id, status) end end def deliver_to_mentioned(status) - status.mentioned_accounts.each do |mention| + status.mentions.each do |mention| mentioned_account = mention.account next unless mentioned_account.local? push(:mentions, mentioned_account.id, status) @@ -31,19 +29,15 @@ class FanOutOnWriteService < BaseService end def push(type, receiver_id, status) - redis.zadd(key(type, receiver_id), status.id, status.id) + redis.zadd(FeedManager.key(type, receiver_id), status.id, status.id) trim(type, receiver_id) end def trim(type, receiver_id) - return unless redis.zcard(key(type, receiver_id)) > MAX_FEED_SIZE - - last = redis.zrevrange(key(type, receiver_id), MAX_FEED_SIZE - 1, MAX_FEED_SIZE - 1) - redis.zremrangebyscore(key(type, receiver_id), '-inf', "(#{last.last}") - end + return unless redis.zcard(FeedManager.key(type, receiver_id)) > FeedManager::MAX_ITEMS - def key(type, id) - "feed:#{type}:#{id}" + last = redis.zrevrange(FeedManager.key(type, receiver_id), FeedManager::MAX_ITEMS - 1, FeedManager::MAX_ITEMS - 1) + redis.zremrangebyscore(FeedManager.key(type, receiver_id), '-inf', "(#{last.last}") end def redis |