Browse Source

follow tags

pull/4/head
欧醚 4 years ago
parent
commit
6be4def2ec
1 changed files with 41 additions and 0 deletions
  1. +41
    -0
      app/controllers/api/v1/timelines/home_controller.rb

+ 41
- 0
app/controllers/api/v1/timelines/home_controller.rb View File

@ -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

Loading…
Cancel
Save