Status removal is broadcast to public/hashtag timelines too

master
Eugen Rochko 8 years ago
parent 448ab18a20
commit c5e03a2e0d
  1. 5
      app/channels/application_cable/channel.rb
  2. 12
      app/services/remove_status_service.rb

@ -4,6 +4,9 @@ module ApplicationCable
def hydrate_status(encoded_message) def hydrate_status(encoded_message)
message = ActiveSupport::JSON.decode(encoded_message) message = ActiveSupport::JSON.decode(encoded_message)
return [nil, message] if message['type'] == 'delete'
status = Status.find_by(id: message['id']) status = Status.find_by(id: message['id'])
message['message'] = FeedManager.instance.inline_render(current_user.account, status) message['message'] = FeedManager.instance.inline_render(current_user.account, status)
@ -11,7 +14,7 @@ module ApplicationCable
end end
def filter?(status) def filter?(status)
status.nil? || current_user.account.blocking?(status.account) || (status.reblog? && current_user.account.blocking?(status.reblog.account)) !status.nil? && (current_user.account.blocking?(status.account) || (status.reblog? && current_user.account.blocking?(status.reblog.account)))
end end
end end
end end

@ -4,6 +4,8 @@ class RemoveStatusService < BaseService
remove_from_followers(status) remove_from_followers(status)
remove_from_mentioned(status) remove_from_mentioned(status)
remove_reblogs(status) remove_reblogs(status)
remove_from_hashtags(status)
remove_from_public(status)
status.destroy! status.destroy!
end end
@ -49,6 +51,16 @@ class RemoveStatusService < BaseService
FeedManager.instance.broadcast(receiver.id, type: 'delete', id: status.id) FeedManager.instance.broadcast(receiver.id, type: 'delete', id: status.id)
end end
def remove_from_hashtags(status)
status.tags.each do |tag|
FeedManager.instance.broadcast("hashtag:#{tag.name}", type: 'delete', id: status.id)
end
end
def remove_from_public(status)
FeedManager.instance.broadcast(:public, type: 'delete', id: status.id)
end
def redis def redis
$redis $redis
end end

Loading…
Cancel
Save