commit: b87eb8ea146a54fcfd2533f47622070d0f30a9fa
parent: 8902e265b4efea68cafef790ee0e2870f62985cd
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Thu, 8 Jun 2017 15:07:39 +0200
Fix #3378 - If favourite/reblog already exists, return it instead of failing (#3641)
Diffstat:
2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb
@@ -10,6 +10,10 @@ class FavouriteService < BaseService
def call(account, status)
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)
if status.local?
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
@@ -13,6 +13,10 @@ class ReblogService < BaseService
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: '')
DistributionWorker.perform_async(reblog.id)