* Federate pinned statuses over ActivityPub * Display pinned toots in web UI Fix #6117 * Fix migration * Fix tests * Update outbox_serializer.rb * Update remove_serializer.rb * Update add_serializer.rb * Update fetch_featured_collection_service.rb
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class Api::V1::Statuses::PinsController < Api::BaseController
 | 
						|
  include Authorization
 | 
						|
 | 
						|
  before_action -> { doorkeeper_authorize! :write }
 | 
						|
  before_action :require_user!
 | 
						|
  before_action :set_status
 | 
						|
 | 
						|
  respond_to :json
 | 
						|
 | 
						|
  def create
 | 
						|
    StatusPin.create!(account: current_account, status: @status)
 | 
						|
    distribute_add_activity!
 | 
						|
    render json: @status, serializer: REST::StatusSerializer
 | 
						|
  end
 | 
						|
 | 
						|
  def destroy
 | 
						|
    pin = StatusPin.find_by(account: current_account, status: @status)
 | 
						|
 | 
						|
    if pin
 | 
						|
      pin.destroy!
 | 
						|
      distribute_remove_activity!
 | 
						|
    end
 | 
						|
 | 
						|
    render json: @status, serializer: REST::StatusSerializer
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def set_status
 | 
						|
    @status = Status.find(params[:status_id])
 | 
						|
  end
 | 
						|
 | 
						|
  def distribute_add_activity!
 | 
						|
    json = ActiveModelSerializers::SerializableResource.new(
 | 
						|
      @status,
 | 
						|
      serializer: ActivityPub::AddSerializer,
 | 
						|
      adapter: ActivityPub::Adapter
 | 
						|
    ).as_json
 | 
						|
 | 
						|
    ActivityPub::RawDistributionWorker.perform_async(Oj.dump(json), current_account)
 | 
						|
  end
 | 
						|
 | 
						|
  def distribute_remove_activity!
 | 
						|
    json = ActiveModelSerializers::SerializableResource.new(
 | 
						|
      @status,
 | 
						|
      serializer: ActivityPub::RemoveSerializer,
 | 
						|
      adapter: ActivityPub::Adapter
 | 
						|
    ).as_json
 | 
						|
 | 
						|
    ActivityPub::RawDistributionWorker.perform_async(Oj.dump(json), current_account)
 | 
						|
  end
 | 
						|
end
 |