Add trending statuses (#17431)
* Add trending statuses * Fix dangling items with stale scores in localized sets * Various fixes and improvements - Change approve_all/reject_all to approve_accounts/reject_accounts - Change Trends::Query methods to not mutate the original query - Change Trends::Query#skip to offset - Change follow recommendations to be refreshed in a transaction * Add tests for trending statuses filtering behaviour * Fix not applying filtering scope in controller
This commit is contained in:
		
							
								
								
									
										45
									
								
								app/controllers/admin/trends/statuses_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								app/controllers/admin/trends/statuses_controller.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class Admin::Trends::StatusesController < Admin::BaseController
 | 
			
		||||
  def index
 | 
			
		||||
    authorize :status, :index?
 | 
			
		||||
 | 
			
		||||
    @statuses = filtered_statuses.page(params[:page])
 | 
			
		||||
    @form     = Trends::StatusBatch.new
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def batch
 | 
			
		||||
    @form = Trends::StatusBatch.new(trends_status_batch_params.merge(current_account: current_account, action: action_from_button))
 | 
			
		||||
    @form.save
 | 
			
		||||
  rescue ActionController::ParameterMissing
 | 
			
		||||
    flash[:alert] = I18n.t('admin.accounts.no_account_selected')
 | 
			
		||||
  ensure
 | 
			
		||||
    redirect_to admin_trends_statuses_path(filter_params)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def filtered_statuses
 | 
			
		||||
    Trends::StatusFilter.new(filter_params.with_defaults(trending: 'all')).results.includes(:account, :media_attachments, :active_mentions)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def filter_params
 | 
			
		||||
    params.slice(:page, *Trends::StatusFilter::KEYS).permit(:page, *Trends::StatusFilter::KEYS)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def trends_status_batch_params
 | 
			
		||||
    params.require(:trends_status_batch).permit(:action, status_ids: [])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def action_from_button
 | 
			
		||||
    if params[:approve]
 | 
			
		||||
      'approve'
 | 
			
		||||
    elsif params[:approve_accounts]
 | 
			
		||||
      'approve_accounts'
 | 
			
		||||
    elsif params[:reject]
 | 
			
		||||
      'reject'
 | 
			
		||||
    elsif params[:reject_accounts]
 | 
			
		||||
      'reject_accounts'
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user