PostAlerter には、通常の投稿が保存された後に送信される通知に関するチェックとトリガーのシステムが含まれており、その起点は after_save_post メソッドです。
私は Follow Plugin(特に discourse-follow/plugin.rb at main · discourse/discourse-follow · GitHub を参照)でこのメソッドと格闘しており、いくつかの考えや質問があります。これらについて他者の意見も聞きたいと考えています。
PostAlerter の性質を考慮すると、この議論は Follow Plugin だけでなく、assign プラグインや polls プラグインなど、他のプラグインにも関連するものだと考えられます。
現在の私の考えは以下の通りです(いずれかについて PR を作成することも喜んで行います):
-
after_save_postメソッドにフックまたはイベントトリガーを追加し、プラグインがそのメソッド内のチェックやカウンターを考慮して、通知を送信する(またはしない)ユーザーを追加できるようにすると良いでしょう。通知を送信する際には、以下の 3 つの重要な考慮事項があります:- ユーザーに対してこの投稿についての通知を送信すべきか
- ユーザーに対してこの投稿についての通知を既に通じているか
- ユーザーに対してどのように通知を送信すべきか(つまり、ユーザーの設定を尊重するため)
これらはすべて、
after_save_postメソッドの文脈内で評価する方が容易になります。 -
通知タイプの使用法の微調整。現在、PostAlerter には
NOTIFIABLE_TYPESやCOLLAPSED_NOTIFIABLE_TYPESなど、特定のチェックやカウンターで反復処理やフィルタリングに使用されるいくつかの通知タイプ定数があります。現在、汎用的な
:custom通知タイプが存在しますが、after_save_postの文脈ではあまり有用ではありません。なぜなら、タイプ定数にcustomを追加すると、custom通知タイプのすべての使用に影響を及ぼすことになるからです。なお、assign プラグイン は現在
:custom通知タイプを使用していますが、これは通常の投稿ではなく、小さなアクションに対する通知にのみ使用されており、クエリには使用していません(どのプラグインやサービスでも使用できるため、assign 通知の検索にはメッセージフィールドを使用しています)。