42 lines
954 B
Ruby
42 lines
954 B
Ruby
class Projects::DiscussionsController < Projects::ApplicationController
|
|
before_action :module_enabled
|
|
before_action :merge_request
|
|
before_action :discussion
|
|
before_action :authorize_resolve_discussion!
|
|
|
|
def resolve
|
|
return render_404 unless discussion.resolvable?
|
|
|
|
discussion.resolve!(current_user)
|
|
|
|
render json: {
|
|
resolved_by: discussion.resolved_by.try(:name)
|
|
}
|
|
end
|
|
|
|
def unresolve
|
|
return render_404 unless discussion.resolvable?
|
|
|
|
discussion.unresolve!
|
|
|
|
head :ok
|
|
end
|
|
|
|
private
|
|
|
|
def merge_request
|
|
@merge_request ||= @project.merge_requests.find_by!(iid: params[:merge_request_id])
|
|
end
|
|
|
|
def discussion
|
|
@discussion ||= @merge_request.discussions.find { |d| d.id == params[:id] } || render_404
|
|
end
|
|
|
|
def authorize_resolve_discussion!
|
|
access_denied! unless discussion.can_resolve?(current_user)
|
|
end
|
|
|
|
def module_enabled
|
|
render_404 unless @project.merge_requests_enabled
|
|
end
|
|
end
|