Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- app/services/remove_status_service.rb
  Conflict because we still handle the direct timeline.
  Took upstream changes, with that one extra function call.
- config/locales/ca.yml
  Conflict because theme names were updated.
  Decided to *keep* the theme names even if they are useless
  to avoid future conflicts.
- config/locales/oc.yml
  Decided to *keep* the theme names even if they are useless
  to avoid future conflicts.
- config/locales/pl.yml
  Decided to *keep* the theme names even if they are useless
  to avoid future conflicts.
This commit is contained in:
Thibaut Girka
2019-03-16 20:59:33 +01:00
97 changed files with 1876 additions and 535 deletions

View File

@ -14,17 +14,23 @@ class RemoveStatusService < BaseService
@stream_entry = status.stream_entry
@options = options
remove_from_self if status.account.local?
remove_from_followers
remove_from_lists
remove_from_affected
remove_reblogs
remove_from_hashtags
remove_from_public
remove_from_media if status.media_attachments.any?
remove_from_direct if status.direct_visibility?
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
remove_from_self if status.account.local?
remove_from_followers
remove_from_lists
remove_from_affected
remove_reblogs
remove_from_hashtags
remove_from_public
remove_from_media if status.media_attachments.any?
remove_from_direct if status.direct_visibility?
@status.destroy!
@status.destroy!
else
raise Mastodon::RaceConditionError
end
end
# There is no reason to send out Undo activities when the
# cause is that the original object has been removed, since
@ -164,4 +170,8 @@ class RemoveStatusService < BaseService
end
Redis.current.publish("timeline:direct:#{@account.id}", @payload) if @account.local?
end
def lock_options
{ redis: Redis.current, key: "distribute:#{@status.id}" }
end
end