Le PostAlerter intègre un système de vérifications et de déclencheurs pour les notifications envoyées après la sauvegarde d’un message standard, en commençant par la méthode after_save_post.
Je travaille sur cette méthode dans le cadre du plugin Follow (voir notamment discourse-follow/plugin.rb at main · discourse/discourse-follow · GitHub) et j’ai quelques réflexions et questions que je serais intéressé à soumettre à d’autres avis.
Compte tenu de la nature du PostAlerter, je pense que cette discussion dépasse le cadre du plugin Follow. Je vois mes suggestions ci-dessous comme pertinentes pour le plugin assign, le plugin polls, entre autres.
Ma réflexion actuelle va dans ce sens (je serais heureux de proposer une PR pour l’un des points ci-dessous) :
-
Un crochet ou un déclencheur d’événement dans la méthode
after_save_postpermettant aux plugins d’ajouter des utilisateurs à notifier (ou non) dans le contexte des vérifications et compteurs de cette méthode serait idéal. Lors de l’envoi d’une notification, trois points clés doivent être pris en compte :- Dois-je envoyer une notification à un utilisateur concernant un message ?
- Ai-je déjà envoyé une notification à un utilisateur concernant ce message ?
- Comment dois-je notifier un utilisateur concernant ce message (c’est-à-dire en respectant ses paramètres) ?
Il serait plus facile d’évaluer chacun de ces points dans le contexte de la méthode
after_save_post. -
Une utilisation ajustée des types de notification. Actuellement, plusieurs constantes de type de notification sont utilisées dans le PostAlerter et sont parcourues ou filtrées dans des vérifications et compteurs spécifiques, par exemple
NOTIFIABLE_TYPESetCOLLAPSED_NOTIFIABLE_TYPES.Il existe actuellement un type de notification générique
:custom, mais il n’est pas particulièrement utile dans le contexte deafter_save_post, car l’ajout decustomaux constantes de type signifierait que toutes les utilisations du type de notificationcustomseraient affectées.Notez que le plugin assign utilise actuellement le type de notification
:custom, mais uniquement pour des notifications liées à de petites actions (et non à des messages réguliers), et ne l’utilise pour aucune requête (car n’importe quel plugin ou service peut l’utiliser ; il utilise le champ message pour rechercher les notifications assign à la place).