Fix #3378 - If favourite/reblog already exists, return it instead of failing (#3641)

This commit is contained in:
Eugen Rochko 2017-06-08 15:07:39 +02:00 committed by GitHub
parent 8902e265b4
commit b87eb8ea14
2 changed files with 8 additions and 0 deletions

View file

@ -10,6 +10,10 @@ class FavouriteService < BaseService
def call(account, status) def call(account, status)
authorize_with account, status, :show? authorize_with account, status, :show?
favourite = Favourite.find_by(account: account, status: status)
return favourite unless favourite.nil?
favourite = Favourite.create!(account: account, status: status) favourite = Favourite.create!(account: account, status: status)
if status.local? if status.local?

View file

@ -13,6 +13,10 @@ class ReblogService < BaseService
authorize_with account, reblogged_status, :reblog? authorize_with account, reblogged_status, :reblog?
reblog = account.statuses.find_by(reblog: reblogged_status)
return reblog unless reblog.nil?
reblog = account.statuses.create!(reblog: reblogged_status, text: '') reblog = account.statuses.create!(reblog: reblogged_status, text: '')
DistributionWorker.perform_async(reblog.id) DistributionWorker.perform_async(reblog.id)