diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-04-06 20:58:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-06 20:58:23 +0200 |
commit | 454ef42aab48e73613c4588faaacfb5941bd3e6a (patch) | |
tree | 24a17c8cd8028d4eff981d41751f5a4ca54acfc7 /app/services | |
parent | 6221b36b278c02cdbf5b6d1c0753654b506b44fd (diff) |
Fix error when encountering invalid pinned posts (#17964)
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/activitypub/fetch_featured_collection_service.rb | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 780741feb..66234b711 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -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 |