1
0
Fork 0
forked from gitea/nas

Hide private post reference notification

This commit is contained in:
KMY 2023-09-20 10:35:24 +09:00
parent 642a351369
commit d257157276
2 changed files with 25 additions and 4 deletions

View file

@ -58,11 +58,11 @@ class ProcessReferencesService < BaseService
private
def references
@references = @reference_parameters + scan_text!
@references ||= @reference_parameters + scan_text!
end
def old_references
@old_references = @status.references.pluck(:id)
@old_references ||= @status.references.pluck(:id)
end
def added_references
@ -112,7 +112,7 @@ class ProcessReferencesService < BaseService
def create_notifications!
return if @added_objects.blank?
local_reference_objects = @added_objects.filter { |ref| ref.target_status.account.local? }
local_reference_objects = @added_objects.filter { |ref| ref.target_status.account.local? && StatusPolicy.new(ref.target_status.account, ref.status).show? }
return if local_reference_objects.empty?
LocalNotificationWorker.push_bulk(local_reference_objects) do |ref|

View file

@ -6,8 +6,9 @@ RSpec.describe ProcessReferencesService, type: :service do
let(:text) { 'Hello' }
let(:account) { Fabricate(:user).account }
let(:visibility) { :public }
let(:target_status_visibility) { :public }
let(:status) { Fabricate(:status, account: account, text: text, visibility: visibility) }
let(:target_status) { Fabricate(:status, account: Fabricate(:user).account) }
let(:target_status) { Fabricate(:status, account: Fabricate(:user).account, visibility: target_status_visibility) }
let(:target_status_uri) { ActivityPub::TagManager.instance.uri_for(target_status) }
describe 'posting new status' do
@ -42,6 +43,26 @@ RSpec.describe ProcessReferencesService, type: :service do
end
end
context 'when private post' do
let(:text) { "Hello RT #{target_status_uri}" }
let(:visibility) { :private }
it 'post status' do
expect(subject.size).to eq 1
expect(subject.pluck(0)).to include target_status.id
expect(subject.pluck(1)).to include 'RT'
end
end
context 'when cannot show private post' do
let(:text) { "Hello RT #{target_status_uri}" }
let(:target_status_visibility) { :private }
it 'post status' do
expect(subject.size).to eq 0
end
end
context 'when url only' do
let(:text) { "Hello #{target_status_uri}" }