| 
									
										
										
										
											2017-06-10 03:39:26 -04:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Api::V1::Statuses::MutesController < Api::BaseController | 
					
						
							|  |  |  |   include Authorization | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-05 18:31:35 +02:00
										 |  |  |   before_action -> { doorkeeper_authorize! :write, :'write:mutes' } | 
					
						
							| 
									
										
										
										
											2017-06-10 03:39:26 -04:00
										 |  |  |   before_action :require_user! | 
					
						
							|  |  |  |   before_action :set_status | 
					
						
							|  |  |  |   before_action :set_conversation | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   respond_to :json | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def create | 
					
						
							|  |  |  |     current_account.mute_conversation!(@conversation) | 
					
						
							|  |  |  |     @mutes_map = { @conversation.id => true } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  |     render json: @status, serializer: REST::StatusSerializer | 
					
						
							| 
									
										
										
										
											2017-06-10 03:39:26 -04:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def destroy | 
					
						
							|  |  |  |     current_account.unmute_conversation!(@conversation) | 
					
						
							|  |  |  |     @mutes_map = { @conversation.id => false } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  |     render json: @status, serializer: REST::StatusSerializer | 
					
						
							| 
									
										
										
										
											2017-06-10 03:39:26 -04:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def set_status | 
					
						
							|  |  |  |     @status = Status.find(params[:status_id]) | 
					
						
							|  |  |  |     authorize @status, :show? | 
					
						
							|  |  |  |   rescue Mastodon::NotPermittedError | 
					
						
							|  |  |  |     # Reraise in order to get a 404 instead of a 403 error code | 
					
						
							|  |  |  |     raise ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def set_conversation | 
					
						
							|  |  |  |     @conversation = @status.conversation | 
					
						
							|  |  |  |     raise Mastodon::ValidationError if @conversation.nil? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |