From bd87415996b4b827e41cc2d62bfaa8e36dc694b0 Mon Sep 17 00:00:00 2001 From: KMY Date: Sun, 3 Sep 2023 10:27:24 +0900 Subject: [PATCH] Add link_preview setting --- app/models/account.rb | 8 ++++++++ app/models/concerns/has_user_settings.rb | 4 ++++ app/models/user_settings.rb | 1 + app/services/fetch_link_card_service.rb | 2 +- app/views/settings/preferences/other/show.html.haml | 3 +++ config/locales/simple_form.en.yml | 1 + config/locales/simple_form.ja.yml | 1 + 7 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/account.rb b/app/models/account.rb index c9a36eb4b7..b94f208635 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -323,6 +323,13 @@ class Account < ApplicationRecord user&.setting_translatable_private || (settings.present? && settings['translatable_private']) || false end + def link_preview? + return user.setting_link_preview if local? && user.present? + return settings['link_preview'] if settings.present? && settings.key?('link_preview') + + true + end + def public_statuses_count hide_statuses_count? ? 0 : statuses_count end @@ -389,6 +396,7 @@ class Account < ApplicationRecord 'hide_following_count' => hide_following_count?, 'hide_followers_count' => hide_followers_count?, 'translatable_private' => translatable_private?, + 'link_preview' => link_preview?, } if Setting.enable_block_emoji_reaction_settings config = config.merge({ diff --git a/app/models/concerns/has_user_settings.rb b/app/models/concerns/has_user_settings.rb index 17ab1c2c1b..abc12cfb44 100644 --- a/app/models/concerns/has_user_settings.rb +++ b/app/models/concerns/has_user_settings.rb @@ -103,6 +103,10 @@ module HasUserSettings settings['translatable_private'] end + def setting_link_preview + settings['link_preview'] + end + def setting_hide_statuses_count settings['hide_statuses_count'] end diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb index 1db8c53f7f..802d706191 100644 --- a/app/models/user_settings.rb +++ b/app/models/user_settings.rb @@ -13,6 +13,7 @@ class UserSettings setting :noindex, default: -> { ::Setting.noindex } setting :noai, default: true setting :translatable_private, default: false + setting :link_preview, default: true setting :bio_markdown, default: false setting :discoverable_local, default: false setting :hide_statuses_count, default: false diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 790cf44548..8323c6cdfe 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -20,7 +20,7 @@ class FetchLinkCardService < BaseService @status = status @original_url = parse_urls - return if @original_url.nil? || @status.preview_cards.any? + return if @original_url.nil? || @status.preview_cards.any? || !@status.account.link_preview? @url = @original_url.to_s diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index a01bce556c..788f8ac854 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -17,6 +17,9 @@ .fields-group = ff.input :translatable_private, wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_translatable_private') + .fields-group + = ff.input :link_preview, wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_link_preview') + %h4= t 'preferences.posting_defaults' .fields-row diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index b6a70352b2..bf2d957c72 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -242,6 +242,7 @@ en: setting_hide_network: Hide your social graph setting_hide_recent_emojis: Hide recent emojis setting_hide_statuses_count: Hide statuses count + setting_link_preview: Generate post link preview card setting_noai: Set noai meta tags setting_public_post_to_unlisted: Convert public post to public unlisted if not using Web app setting_reduce_motion: Reduce motion in animations diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 28ac8994c4..a1c5c825a7 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -251,6 +251,7 @@ ja: setting_hide_network: 繋がりを隠す setting_hide_recent_emojis: 絵文字ピッカーで最近使用した絵文字を隠す(リアクションデッキのみを表示する) setting_hide_statuses_count: 投稿数を隠す + setting_link_preview: リンクのプレビューを生成する setting_stay_privacy: 投稿時に公開範囲を保存する setting_noai: 自分のコンテンツのAI学習利用に対して不快感を表明する setting_public_post_to_unlisted: サードパーティから公開範囲「公開」で投稿した場合、「ローカル公開」に変更する