DEV: allow plugins to send extra silenced message params

DEV: allow plugins to send extra silenced message params

allows plugins to send extra custom message params so that they can include things such as silence reason and message_body if desired

diff --git a/app/services/user_silencer.rb b/app/services/user_silencer.rb
index 9f192dc..5f5224f 100644
--- a/app/services/user_silencer.rb
+++ b/app/services/user_silencer.rb
@@ -22,6 +22,11 @@ class UserSilencer
     UserHistory.where(action: UserHistory.actions[:silence_user], post: post).exists?
   end
 
+  # Allow plugins to update and send extra silence message params
+  def silence_message_params
+    {}
+  end
+
   def silence
     hide_posts unless @opts[:keep_posts]
     unless @user.silenced_till.present?
@@ -36,7 +41,7 @@ class UserSilencer
         ).format
 
         context = "#{message_type}: '#{post.topic&.title rescue ''}' #{@opts[:reason]}"
-        SystemMessage.create(@user, message_type)
+        SystemMessage.create(@user, message_type, **silence_message_params)
 
         if @by_user
           log_params = { context: context, details: details }

GitHub sha: c3aeb442

I think it will be better if we can expose this as a plugin API instead of having the plugins override the method. That will provide a better interface for plugins to work with and make our job easier in the future if the UserSilencer service class needs to be refactored in the future.

2 Likes