posts: use low quality thumbnails when Save-Data header is set.
When the Save-Data HTTP header is present, disable high quality (2x pixel density) thumbnails. This is normally set when "Data Saver mode" is enabled on Android, or "Lite mode" is enabled in Chrome. This setting can also be set using the `save_data` URL param or HTTP cookie. This is mainly for testing. The <body> tag has a `current-user-save-data` data attribute that indicates whether save data mode is on. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Save-Data https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/save-data/#the_save-data_request_header https://source.android.com/devices/tech/connect/data-saver
This commit is contained in:
@@ -7,7 +7,7 @@ class PostPreviewComponent < ApplicationComponent
|
||||
|
||||
with_collection_parameter :post
|
||||
|
||||
attr_reader :post, :tags, :size, :show_deleted, :link_target, :pool, :similarity, :recommended, :show_votes, :fit, :show_size, :current_user, :options
|
||||
attr_reader :post, :tags, :size, :show_deleted, :link_target, :pool, :similarity, :recommended, :show_votes, :fit, :show_size, :save_data, :current_user, :options
|
||||
|
||||
delegate :external_link_to, :time_ago_in_words_tagged, :duration_to_hhmmss, :render_post_votes, :empty_heart_icon, :sound_icon, to: :helpers
|
||||
delegate :image_width, :image_height, :file_ext, :file_size, :duration, :is_animated?, to: :media_asset
|
||||
@@ -21,12 +21,14 @@ class PostPreviewComponent < ApplicationComponent
|
||||
# If false, hide thumbnails of deleted posts.
|
||||
# @param show_votes [Boolean] If true, show scores and vote buttons beneath the thumbnail.
|
||||
# @param show_size [Boolean] If true, show filesize and resolution beneath the thumbnail.
|
||||
# @param save_data [Boolean] If true, save data by not serving higher quality thumbnails
|
||||
# on 2x pixel density displays. Default: false.
|
||||
# @param link_target [ApplicationRecord] What the thumbnail links to (default: the post).
|
||||
# @param current_user [User] The current user.
|
||||
# @param fit [Symbol] If `:fixed`, make the thumbnail container a fixed size
|
||||
# (e.g. 180x180), even if the thumbnail image is smaller than that. If `:compact`,
|
||||
# make the thumbnail container shrink to the same size as the thumbnail image.
|
||||
def initialize(post:, tags: "", size: DEFAULT_SIZE, show_deleted: false, show_votes: false, link_target: post, pool: nil, similarity: nil, recommended: nil, show_size: nil, fit: :compact, current_user: CurrentUser.user, **options)
|
||||
def initialize(post:, tags: "", size: DEFAULT_SIZE, show_deleted: false, show_votes: false, link_target: post, pool: nil, similarity: nil, recommended: nil, show_size: nil, save_data: CurrentUser.save_data, fit: :compact, current_user: CurrentUser.user, **options)
|
||||
super
|
||||
@post = post
|
||||
@tags = tags.presence
|
||||
@@ -39,6 +41,7 @@ class PostPreviewComponent < ApplicationComponent
|
||||
@recommended = recommended
|
||||
@fit = fit
|
||||
@show_size = show_size
|
||||
@save_data = save_data
|
||||
@current_user = current_user
|
||||
@options = options
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user