]> cat aescling's git repositories - mastodon.git/commitdiff
Fix error when encountering invalid pinned posts (#17964)
authorClaire <claire.github-309c@sitedethib.com>
Wed, 6 Apr 2022 18:58:23 +0000 (20:58 +0200)
committerGitHub <noreply@github.com>
Wed, 6 Apr 2022 18:58:23 +0000 (20:58 +0200)
app/services/activitypub/fetch_featured_collection_service.rb

index 780741feb3afbba5e76992338dc5af1b9d092b5c..66234b7111aba5763f26b40aaec2e9fb21c6a120 100644 (file)
@@ -22,9 +22,19 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService
   private
 
   def process_items(items)
-    status_ids = items.map { |item| value_or_id(item) }
-                      .filter_map { |uri| ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: local_follower) unless ActivityPub::TagManager.instance.local_uri?(uri) }
-                      .filter_map { |status| status.id if status.account_id == @account.id }
+    status_ids = items.filter_map do |item|
+      uri = value_or_id(item)
+      next if ActivityPub::TagManager.instance.local_uri?(uri)
+
+      status = ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: local_follower)
+      next unless status.account_id == @account.id
+
+      status.id
+    rescue ActiveRecord::RecordInvalid => e
+      Rails.logger.debug "Invalid pinned status #{uri}: #{e.message}"
+      nil
+    end
+
     to_remove = []
     to_add    = status_ids