diff options
Diffstat (limited to 'app/controllers/api')
-rw-r--r-- | app/controllers/api/v1/statuses_controller.rb | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 77bdaa494..9312282ed 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -1,10 +1,11 @@ # frozen_string_literal: true class Api::V1::StatusesController < ApiController - before_action :authorize_if_got_token, except: [:create, :destroy, :reblog, :unreblog, :favourite, :unfavourite] - before_action -> { doorkeeper_authorize! :write }, only: [:create, :destroy, :reblog, :unreblog, :favourite, :unfavourite] - before_action :require_user!, except: [:show, :context, :card, :reblogged_by, :favourited_by] - before_action :set_status, only: [:show, :context, :card, :reblogged_by, :favourited_by] + before_action :authorize_if_got_token, except: [:create, :destroy, :reblog, :unreblog, :favourite, :unfavourite, :mute, :unmute] + before_action -> { doorkeeper_authorize! :write }, only: [:create, :destroy, :reblog, :unreblog, :favourite, :unfavourite, :mute, :unmute] + before_action :require_user!, except: [:show, :context, :card, :reblogged_by, :favourited_by] + before_action :set_status, only: [:show, :context, :card, :reblogged_by, :favourited_by, :mute, :unmute] + before_action :set_conversation, only: [:mute, :unmute] respond_to :json @@ -105,6 +106,22 @@ class Api::V1::StatusesController < ApiController render :show end + def mute + current_account.mute_conversation!(@conversation) + + @mutes_map = { @conversation.id => true } + + render :show + end + + def unmute + current_account.unmute_conversation!(@conversation) + + @mutes_map = { @conversation.id => false } + + render :show + end + private def set_status @@ -112,6 +129,11 @@ class Api::V1::StatusesController < ApiController raise ActiveRecord::RecordNotFound unless @status.permitted?(current_account) end + def set_conversation + @conversation = @status.conversation + raise Mastodon::ValidationError if @conversation.nil? + end + def status_params params.permit(:status, :in_reply_to_id, :sensitive, :spoiler_text, :visibility, media_ids: []) end |