parent
35b6c4b36a
commit
0077fc26df
13 changed files with 133 additions and 52 deletions
|
@ -13,4 +13,42 @@ class FeedManager
|
|||
replied_to_user = status.reply? ? status.thread.account : nil
|
||||
(status.reply? && !(follower.id = replied_to_user.id || follower.following?(replied_to_user)))
|
||||
end
|
||||
|
||||
def push(timeline_type, account, status)
|
||||
redis.zadd(key(timeline_type, account.id), status.id, status.id)
|
||||
trim(timeline_type, account.id)
|
||||
ActionCable.server.broadcast("timeline:#{account.id}", type: 'update', timeline: timeline_type, message: inline_render(account, status))
|
||||
end
|
||||
|
||||
def trim(type, account_id)
|
||||
return unless redis.zcard(key(type, account_id)) > FeedManager::MAX_ITEMS
|
||||
last = redis.zrevrange(key(type, account_id), FeedManager::MAX_ITEMS - 1, FeedManager::MAX_ITEMS - 1)
|
||||
redis.zremrangebyscore(key(type, account_id), '-inf', "(#{last.last}")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def redis
|
||||
$redis
|
||||
end
|
||||
|
||||
def inline_render(target_account, status)
|
||||
rabl_scope = Class.new do
|
||||
include RoutingHelper
|
||||
|
||||
def initialize(account)
|
||||
@account = account
|
||||
end
|
||||
|
||||
def current_user
|
||||
@account.user
|
||||
end
|
||||
|
||||
def current_account
|
||||
@account
|
||||
end
|
||||
end
|
||||
|
||||
Rabl::Renderer.new('api/statuses/show', status, view_path: 'app/views', format: :json, scope: rabl_scope.new(target_account)).render
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue