app
controllers
activitypub
admin
api
v1
accounts
statuses
favourited_by_accounts_controller.rb
favourites_controller.rb
mutes_controller.rb
pins_controller.rb
reblogged_by_accounts_controller.rb
reblogs_controller.rb
timelines
accounts_controller.rb
apps_controller.rb
blocks_controller.rb
domain_blocks_controller.rb
favourites_controller.rb
follow_requests_controller.rb
follows_controller.rb
instances_controller.rb
media_controller.rb
mutes_controller.rb
notifications_controller.rb
reports_controller.rb
search_controller.rb
statuses_controller.rb
streaming_controller.rb
web
base_controller.rb
oembed_controller.rb
push_controller.rb
salmon_controller.rb
subscriptions_controller.rb
auth
concerns
oauth
settings
well_known
about_controller.rb
account_follow_controller.rb
account_unfollow_controller.rb
accounts_controller.rb
application_controller.rb
authorize_follows_controller.rb
follower_accounts_controller.rb
following_accounts_controller.rb
home_controller.rb
intents_controller.rb
manifests_controller.rb
media_controller.rb
remote_follow_controller.rb
shares_controller.rb
statuses_controller.rb
stream_entries_controller.rb
tags_controller.rb
helpers
javascript
lib
mailers
models
policies
presenters
serializers
services
validators
views
workers
bin
config
db
docs
lib
log
nanobox
public
spec
streaming
vendor
.babelrc
.buildpacks
.codeclimate.yml
.dockerignore
.editorconfig
.env.nanobox
.env.production.sample
.env.test
.env.vagrant
.eslintignore
.eslintrc.yml
.foreman
.gitattributes
.gitignore
.haml-lint.yml
.nanoignore
.nvmrc
.postcssrc.yml
.profile
.rspec
.rubocop.yml
.ruby-version
.scss-lint.yml
.slugignore
.travis.yml
Aptfile
CODEOWNERS
CONTRIBUTING.md
Capfile
Dockerfile
Gemfile
Gemfile.lock
ISSUE_TEMPLATE.md
LICENSE
Procfile
Procfile.dev
README.md
Rakefile
Vagrantfile
app.json
boxfile.yml
config.ru
docker-compose.yml
docker_entrypoint.sh
package.json
scalingo.json
yarn.lock
Both APIs process asynchronously, so reblogged/favourited fields in the response should be set to `false` manually.
36 lines
957 B
Ruby
36 lines
957 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Api::V1::Statuses::ReblogsController < Api::BaseController
|
|
include Authorization
|
|
|
|
before_action -> { doorkeeper_authorize! :write }
|
|
before_action :require_user!
|
|
|
|
respond_to :json
|
|
|
|
def create
|
|
@status = ReblogService.new.call(current_user.account, status_for_reblog)
|
|
render json: @status, serializer: REST::StatusSerializer
|
|
end
|
|
|
|
def destroy
|
|
@status = status_for_destroy.reblog
|
|
@reblogs_map = { @status.id => false }
|
|
|
|
authorize status_for_destroy, :unreblog?
|
|
RemovalWorker.perform_async(status_for_destroy.id)
|
|
|
|
render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_user&.account_id, reblogs_map: @reblogs_map)
|
|
end
|
|
|
|
private
|
|
|
|
def status_for_reblog
|
|
Status.find params[:status_id]
|
|
end
|
|
|
|
def status_for_destroy
|
|
current_user.account.statuses.where(reblog_of_id: params[:status_id]).first!
|
|
end
|
|
end
|