mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
PERF: Do not include thumbnail information in default topic list payload (#10163)
Now it is only included when a theme/plugin has requested it.
This commit is contained in:
@@ -101,12 +101,20 @@ class Topic < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def image_url
|
||||
def image_url(enqueue_if_missing: false)
|
||||
thumbnail = topic_thumbnails.detect do |record|
|
||||
record.max_width == Topic.share_thumbnail_size[0] &&
|
||||
record.max_height == Topic.share_thumbnail_size[1]
|
||||
end
|
||||
|
||||
if thumbnail.nil? &&
|
||||
image_upload &&
|
||||
SiteSetting.create_thumbnails &&
|
||||
enqueue_if_missing &&
|
||||
Discourse.redis.set(thumbnail_job_redis_key([]), 1, nx: true, ex: 1.minute)
|
||||
Jobs.enqueue(:generate_topic_thumbnails, { topic_id: id })
|
||||
end
|
||||
|
||||
raw_url = thumbnail&.optimized_image&.url || image_upload&.url
|
||||
UrlHelper.cook_url(raw_url, secure: image_upload&.secure?)
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ class ListableTopicSerializer < BasicTopicSerializer
|
||||
has_one :last_poster, serializer: BasicUserSerializer, embed: :objects
|
||||
|
||||
def image_url
|
||||
object.image_url
|
||||
object.image_url(enqueue_if_missing: true)
|
||||
end
|
||||
|
||||
def thumbnails
|
||||
@@ -39,6 +39,10 @@ class ListableTopicSerializer < BasicTopicSerializer
|
||||
object.thumbnail_info(enqueue_if_missing: true, extra_sizes: extra_sizes)
|
||||
end
|
||||
|
||||
def include_thumbnails?
|
||||
ThemeModifierHelper.new(request: scope.request).topic_thumbnail_sizes.present? || DiscoursePluginRegistry.topic_thumbnail_sizes.present?
|
||||
end
|
||||
|
||||
def include_unicode_title?
|
||||
object.title.match?(/:[\w\-+]+:/)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user