Skip to content
Extraits de code Groupes Projets
Valider 5f387995 rédigé par ThibG's avatar ThibG Validation de Eugen Rochko
Parcourir les fichiers

Limit maximum visibility of local silenced users to unlisted (#9583)

Fixes #9580
parent e25947db
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -23,13 +23,16 @@ class PostStatusService < BaseService ...@@ -23,13 +23,16 @@ class PostStatusService < BaseService
status = nil status = nil
text = options.delete(:spoiler_text) if text.blank? && options[:spoiler_text].present? text = options.delete(:spoiler_text) if text.blank? && options[:spoiler_text].present?
visibility = options[:visibility] || account.user&.setting_default_privacy
visibility = :unlisted if visibility == :public && account.silenced
ApplicationRecord.transaction do ApplicationRecord.transaction do
status = account.statuses.create!(text: text, status = account.statuses.create!(text: text,
media_attachments: media || [], media_attachments: media || [],
thread: in_reply_to, thread: in_reply_to,
sensitive: (options[:sensitive].nil? ? account.user&.setting_default_sensitive : options[:sensitive]) || options[:spoiler_text].present?, sensitive: (options[:sensitive].nil? ? account.user&.setting_default_sensitive : options[:sensitive]) || options[:spoiler_text].present?,
spoiler_text: options[:spoiler_text] || '', spoiler_text: options[:spoiler_text] || '',
visibility: options[:visibility] || account.user&.setting_default_privacy, visibility: visibility,
language: language_from_option(options[:language]) || account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(text, account), language: language_from_option(options[:language]) || account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(text, account),
application: options[:application]) application: options[:application])
end end
......
...@@ -68,6 +68,13 @@ RSpec.describe PostStatusService, type: :service do ...@@ -68,6 +68,13 @@ RSpec.describe PostStatusService, type: :service do
expect(status.visibility).to eq "private" expect(status.visibility).to eq "private"
end end
it 'creates a status with limited visibility for silenced users' do
status = subject.call(Fabricate(:account, silenced: true), 'test', nil, visibility: :public)
expect(status).to be_persisted
expect(status.visibility).to eq "unlisted"
end
it 'creates a status for the given application' do it 'creates a status for the given application' do
application = Fabricate(:application) application = Fabricate(:application)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter