Skip to content

Commit

Permalink
Add support for non-public reblogs from ActivityPub (mastodon#9841)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gargron committed Jan 18, 2019
1 parent f77662f commit e60c6d8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
14 changes: 13 additions & 1 deletion app/lib/activitypub/activity/announce.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def perform
uri: @json['id'],
created_at: @json['published'],
override_timestamps: @options[:override_timestamps],
visibility: original_status.visibility
visibility: visibility_from_audience
)

distribute(status)
Expand All @@ -26,6 +26,18 @@ def perform

private

def visibility_from_audience
if equals_or_includes?(@json['to'], ActivityPub::TagManager::COLLECTIONS[:public])
:public
elsif equals_or_includes?(@json['cc'], ActivityPub::TagManager::COLLECTIONS[:public])
:unlisted
elsif equals_or_includes?(@json['to'], @account.followers_url)
:private
else
:direct
end
end

def announceable?(status)
status.account_id == @account.id || status.public_visibility? || status.unlisted_visibility?
end
Expand Down
4 changes: 2 additions & 2 deletions app/models/status.rb
Original file line number Diff line number Diff line change
Expand Up @@ -478,15 +478,15 @@ def increment_counter_caches
return if direct_visibility?

account&.increment_count!(:statuses_count)
reblog&.increment_count!(:reblogs_count) if reblog?
reblog&.increment_count!(:reblogs_count) if reblog? && (public_visibility? || unlisted_visibility?)
thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end

def decrement_counter_caches
return if direct_visibility? || marked_for_mass_destruction?

account&.decrement_count!(:statuses_count)
reblog&.decrement_count!(:reblogs_count) if reblog?
reblog&.decrement_count!(:reblogs_count) if reblog? && (public_visibility? || unlisted_visibility?)
thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end

Expand Down

0 comments on commit e60c6d8

Please sign in to comment.