FEATURE: Deleting a user with their posts also deletes chat messages. (#19194)

This commit introduce a new API for registering callbacks, which we'll execute when a user gets destroyed, and the `delete_posts` opt is true. The chat plugin registers one callback and queues a job to destroy every message from that user in batches.
This commit is contained in:
Roman Rizzi
2022-11-28 13:32:57 -03:00
committed by GitHub
parent 7dfe85fcc7
commit 07a9163ea8
14 changed files with 219 additions and 80 deletions

View File

@ -192,11 +192,13 @@ after_initialize do
load File.expand_path("../app/jobs/regular/chat_notify_mentioned.rb", __FILE__)
load File.expand_path("../app/jobs/regular/chat_notify_watching.rb", __FILE__)
load File.expand_path("../app/jobs/regular/update_channel_user_count.rb", __FILE__)
load File.expand_path("../app/jobs/regular/delete_user_messages.rb", __FILE__)
load File.expand_path("../app/jobs/scheduled/delete_old_chat_messages.rb", __FILE__)
load File.expand_path("../app/jobs/scheduled/update_user_counts_for_chat_channels.rb", __FILE__)
load File.expand_path("../app/jobs/scheduled/email_chat_notifications.rb", __FILE__)
load File.expand_path("../app/jobs/scheduled/auto_join_users.rb", __FILE__)
load File.expand_path("../app/services/chat_publisher.rb", __FILE__)
load File.expand_path("../app/services/chat_message_destroyer.rb", __FILE__)
load File.expand_path("../app/controllers/api_controller.rb", __FILE__)
load File.expand_path("../app/controllers/api/chat_channels_controller.rb", __FILE__)
load File.expand_path("../app/controllers/api/chat_channel_memberships_controller.rb", __FILE__)
@ -729,6 +731,10 @@ after_initialize do
limited_pretty_text_markdown_rules: ChatMessage::MARKDOWN_IT_RULES,
hashtag_configurations: HashtagAutocompleteService.contexts_with_ordered_types,
}
register_user_destroyer_on_content_deletion_callback(
Proc.new { |user| Jobs.enqueue(:delete_user_messages, user_id: user.id) }
)
end
if Rails.env == "test"