2016-11-15 16:56:29 +01:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-03-08 20:16:11 +01:00
|
|
|
class PrecomputeFeedService < BaseService
|
2022-04-28 17:47:34 +02:00
|
|
|
include Redisable
|
|
|
|
|
2025-02-06 10:38:32 +01:00
|
|
|
def call(account, skip_filled_timelines: false)
|
|
|
|
@skip_filled_timelines = skip_filled_timelines
|
|
|
|
|
|
|
|
FeedManager.instance.populate_home(account) unless skip_timeline?(:home, account.id)
|
2025-02-07 21:21:28 +01:00
|
|
|
FeedManager.instance.populate_direct_feed(account) unless skip_timeline?(:direct, account.id)
|
2025-01-30 10:18:46 +01:00
|
|
|
|
|
|
|
account.owned_lists.each do |list|
|
2025-02-06 10:38:32 +01:00
|
|
|
FeedManager.instance.populate_list(list) unless skip_timeline?(:list, list.id)
|
2025-01-30 10:18:46 +01:00
|
|
|
end
|
2019-01-18 01:02:51 +01:00
|
|
|
ensure
|
2022-04-28 17:47:34 +02:00
|
|
|
redis.del("account:#{account.id}:regeneration")
|
2016-03-08 20:16:11 +01:00
|
|
|
end
|
2025-02-06 10:38:32 +01:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def skip_timeline?(type, id)
|
|
|
|
@skip_filled_timelines && FeedManager.instance.timeline_size(type, id) * 2 > FeedManager::MAX_ITEMS
|
|
|
|
end
|
2016-03-08 20:16:11 +01:00
|
|
|
end
|