|
|
@ -9,6 +9,23 @@ class Api::V1::Timelines::HomeController < Api::BaseController |
|
|
|
|
|
|
|
def show |
|
|
|
@statuses = load_statuses |
|
|
|
|
|
|
|
min_id = @statuses.empty? ? 0 : [@statuses[0].id, @statuses[-1].id].min |
|
|
|
|
|
|
|
tags_statuses = [] |
|
|
|
current_account.featured_tags.each do |tag| |
|
|
|
@tag = tag |
|
|
|
tags_statuses += (tags_statuses + load_tag_statuses).uniq(&:id) |
|
|
|
end |
|
|
|
|
|
|
|
if params_slice(:since_id, :min_id).empty? |
|
|
|
tags_statuses = tags_statuses.select{|tag| tag.id > min_id} |
|
|
|
end |
|
|
|
|
|
|
|
@statuses = (@statuses + tags_statuses).uniq(&:id).sort_by(&:id) |
|
|
|
if params_slice(:min_id).empty? |
|
|
|
@statuses = @statuses.reverse! |
|
|
|
end |
|
|
|
|
|
|
|
render json: @statuses, |
|
|
|
each_serializer: REST::StatusSerializer, |
|
|
@ -18,6 +35,30 @@ class Api::V1::Timelines::HomeController < Api::BaseController |
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
def load_tag_statuses |
|
|
|
cached_tagged_statuses |
|
|
|
end |
|
|
|
|
|
|
|
def cached_tagged_statuses |
|
|
|
cache_collection tagged_statuses, Status |
|
|
|
end |
|
|
|
|
|
|
|
def tagged_statuses |
|
|
|
if @tag.nil? |
|
|
|
[] |
|
|
|
else |
|
|
|
statuses = tag_timeline_statuses.paginate_by_id( |
|
|
|
limit_param(DEFAULT_STATUSES_LIMIT), |
|
|
|
params_slice(:max_id, :since_id, :min_id) |
|
|
|
) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def tag_timeline_statuses |
|
|
|
HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none), current_account, truthy_param?(:local)) |
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
def load_statuses |
|
|
|
cached_home_statuses |
|
|
|
end |
|
|
|