Add only_media param to public and hashtag timelines API (#6576)
This commit is contained in:
		
							parent
							
								
									5131012505
								
							
						
					
					
						commit
						68218d97c8
					
				
					 2 changed files with 20 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -21,11 +21,19 @@ class Api::V1::Timelines::PublicController < Api::BaseController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def public_statuses
 | 
			
		||||
    public_timeline_statuses.paginate_by_max_id(
 | 
			
		||||
    statuses = public_timeline_statuses.paginate_by_max_id(
 | 
			
		||||
      limit_param(DEFAULT_STATUSES_LIMIT),
 | 
			
		||||
      params[:max_id],
 | 
			
		||||
      params[:since_id]
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    if truthy_param?(:only_media)
 | 
			
		||||
      # `SELECT DISTINCT id, updated_at` is too slow, so pluck ids at first, and then select id, updated_at with ids.
 | 
			
		||||
      status_ids = statuses.joins(:media_attachments).distinct(:id).pluck(:id)
 | 
			
		||||
      statuses.where(id: status_ids)
 | 
			
		||||
    else
 | 
			
		||||
      statuses
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def public_timeline_statuses
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +45,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def pagination_params(core_params)
 | 
			
		||||
    params.permit(:local, :limit).merge(core_params)
 | 
			
		||||
    params.permit(:local, :limit, :only_media).merge(core_params)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def next_path
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,11 +29,19 @@ class Api::V1::Timelines::TagController < Api::BaseController
 | 
			
		|||
    if @tag.nil?
 | 
			
		||||
      []
 | 
			
		||||
    else
 | 
			
		||||
      tag_timeline_statuses.paginate_by_max_id(
 | 
			
		||||
      statuses = tag_timeline_statuses.paginate_by_max_id(
 | 
			
		||||
        limit_param(DEFAULT_STATUSES_LIMIT),
 | 
			
		||||
        params[:max_id],
 | 
			
		||||
        params[:since_id]
 | 
			
		||||
      )
 | 
			
		||||
 | 
			
		||||
      if truthy_param?(:only_media)
 | 
			
		||||
        # `SELECT DISTINCT id, updated_at` is too slow, so pluck ids at first, and then select id, updated_at with ids.
 | 
			
		||||
        status_ids = statuses.joins(:media_attachments).distinct(:id).pluck(:id)
 | 
			
		||||
        statuses.where(id: status_ids)
 | 
			
		||||
      else
 | 
			
		||||
        statuses
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +54,7 @@ class Api::V1::Timelines::TagController < Api::BaseController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def pagination_params(core_params)
 | 
			
		||||
    params.permit(:local, :limit).merge(core_params)
 | 
			
		||||
    params.permit(:local, :limit, :only_media).merge(core_params)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def next_path
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue