Status removal is broadcast to public/hashtag timelines too
This commit is contained in:
		| @ -4,14 +4,17 @@ module ApplicationCable | ||||
|  | ||||
|     def hydrate_status(encoded_message) | ||||
|       message = ActiveSupport::JSON.decode(encoded_message) | ||||
|       status  = Status.find_by(id: message['id']) | ||||
|  | ||||
|       return [nil, message] if message['type'] == 'delete' | ||||
|  | ||||
|       status             = Status.find_by(id: message['id']) | ||||
|       message['message'] = FeedManager.instance.inline_render(current_user.account, status) | ||||
|  | ||||
|       [status, message] | ||||
|     end | ||||
|  | ||||
|     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 | ||||
|  | ||||
| @ -4,6 +4,8 @@ class RemoveStatusService < BaseService | ||||
|     remove_from_followers(status) | ||||
|     remove_from_mentioned(status) | ||||
|     remove_reblogs(status) | ||||
|     remove_from_hashtags(status) | ||||
|     remove_from_public(status) | ||||
|  | ||||
|     status.destroy! | ||||
|   end | ||||
| @ -49,6 +51,16 @@ class RemoveStatusService < BaseService | ||||
|     FeedManager.instance.broadcast(receiver.id, type: 'delete', id: status.id) | ||||
|   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 | ||||
|     $redis | ||||
|   end | ||||
|  | ||||
		Reference in New Issue
	
	Block a user