diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-05-27 00:53:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-27 00:53:38 +0200 |
commit | 44cb08297c4fd992f3438b8cac99e1364edd4847 (patch) | |
tree | 79b843bccb0c4db0b75dca7b99c97ce64fb3196a | |
parent | bd21afb5edf58a2ce93d0d61ac5ccbada5d857da (diff) |
Fix some nil errors (#3338)
* 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
-rw-r--r-- | app/services/concerns/author_extractor.rb | 2 | ||||
-rw-r--r-- | app/services/process_feed_service.rb | 2 | ||||
-rw-r--r-- | app/services/process_interaction_service.rb | 6 |
3 files changed, 9 insertions, 1 deletions
diff --git a/app/services/concerns/author_extractor.rb b/app/services/concerns/author_extractor.rb index d99780e7d..71bd32f37 100644 --- a/app/services/concerns/author_extractor.rb +++ b/app/services/concerns/author_extractor.rb @@ -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 diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index 10e947001..87ed68f70 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -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) diff --git a/app/services/process_interaction_service.rb b/app/services/process_interaction_service.rb index e9c01103d..bd9afaf2e 100644 --- a/app/services/process_interaction_service.rb +++ b/app/services/process_interaction_service.rb @@ -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 |