]> cat aescling's git repositories - mastodon.git/commitdiff
Fix some nil errors (#3338)
authorEugen Rochko <eugen@zeonfederated.com>
Fri, 26 May 2017 22:53:38 +0000 (00:53 +0200)
committerGitHub <noreply@github.com>
Fri, 26 May 2017 22:53:38 +0000 (00:53 +0200)
* Fix nil input not handled well in AuthorExtractor concern

* Fix hard error in ProcessFeedService when replied-to status has been deleted

* Fix nil errors in ProcessInteractionService when favourited status
cannot be found

app/services/concerns/author_extractor.rb
app/services/process_feed_service.rb
app/services/process_interaction_service.rb

index d99780e7d9a526cd9d3090a65b8770d0476936be..71bd32f376eb80c09fe6d92a1632c19f952f8f4a 100644 (file)
@@ -2,6 +2,8 @@
 
 module AuthorExtractor
   def author_from_xml(xml)
+    return nil if xml.nil?
+
     # Try <email> for acct
     acct = xml.at_xpath('./xmlns:author/xmlns:email', xmlns: TagManager::XMLNS)&.content
 
index 10e947001aea89b33bd7c907643bcb64d8de61ac..87ed68f704272a633e4159bd4f7f41d2dbd1205e 100644 (file)
@@ -189,7 +189,7 @@ class ProcessFeedService < BaseService
     def find_status(uri)
       if TagManager.instance.local_id?(uri)
         local_id = TagManager.instance.unique_tag_to_local_id(uri, 'Status')
-        return Status.find(local_id)
+        return Status.find_by(id: local_id)
       end
 
       Status.find_by(uri: uri)
index e9c01103d58337e2fab447bf0cbcc3f2774d9fa6..bd9afaf2eff101726ef6b2da8cc4265717e515c5 100644 (file)
@@ -108,12 +108,18 @@ class ProcessInteractionService < BaseService
 
   def favourite!(xml, from_account)
     current_status = status(xml)
+
+    return if current_status.nil?
+
     favourite = current_status.favourites.where(account: from_account).first_or_create!(account: from_account)
     NotifyService.new.call(current_status.account, favourite)
   end
 
   def unfavourite!(xml, from_account)
     current_status = status(xml)
+
+    return if current_status.nil?
+
     favourite = current_status.favourites.where(account: from_account).first
     favourite&.destroy
   end