]> cat aescling's git repositories - mastodon.git/commitdiff
Fix #3378 - If favourite/reblog already exists, return it instead of failing (#3641)
authorEugen Rochko <eugen@zeonfederated.com>
Thu, 8 Jun 2017 13:07:39 +0000 (15:07 +0200)
committerGitHub <noreply@github.com>
Thu, 8 Jun 2017 13:07:39 +0000 (15:07 +0200)
app/services/favourite_service.rb
app/services/reblog_service.rb

index f27145c9613c5bc6e3aa9b93fe118239c123125c..90267af332a4249128d04d1c41ab04f4a92d6eec 100644 (file)
@@ -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?
index a3636a283ab6776ce750d73a53725f6b122e1672..ba24b1f9d80a31949ddcc79924ce2e72895c10c8 100644 (file)
@@ -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)