diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index 9d6c1938a..4e89fbf85 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -47,6 +47,10 @@ class PreviewCard < ApplicationRecord before_save :extract_dimensions, if: :link? + def missing_image? + width.present? && height.present? && image_file_name.blank? + end + def save_with_optional_image! save! rescue ActiveRecord::RecordInvalid diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 4e75c370f..ac5503d46 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -22,7 +22,7 @@ class FetchLinkCardService < BaseService RedisLock.acquire(lock_options) do |lock| if lock.acquired? @card = PreviewCard.find_by(url: @url) - process_url if @card.nil? || @card.updated_at <= 2.weeks.ago + process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image? else raise Mastodon::RaceConditionError end