Il PostAlerter include un sistema di controlli e trigger per le notifiche inviate dopo il salvataggio di un post regolare, a partire dal metodo after_save_post.
Ho lavorato su quel metodo per il plugin Follow (in particolare vedi discourse-follow/plugin.rb at main · discourse/discourse-follow · GitHub) e ho alcune riflessioni e domande che mi piacerebbe condividere con gli altri.
Data la natura del PostAlerter, credo che questa discussione vada oltre il plugin Follow. Posso vedere come i miei suggerimenti qui sotto possano essere rilevanti anche per il plugin assign, il plugin polls e altri ancora.
Il mio pensiero attuale segue queste linee (sarei felice di creare una PR per uno qualsiasi dei punti seguenti):
-
Un hook o un trigger di eventi nel metodo
after_save_postper consentire ai plugin di aggiungere utenti a cui inviare notifiche (o meno) nel contesto dei controlli e dei contatori di quel metodo sarebbe ottimo. Quando si invia una notifica, ci sono tre considerazioni chiave:- Dovrei inviare una notifica a un utente riguardo a un post?
- Ho già inviato una notifica a un utente riguardo a un post?
- Come dovrei notificare un utente riguardo a un post (cioè rispettando le sue impostazioni)?
Ognuna di queste sarebbe più facile da valutare nel contesto del metodo
after_save_post. -
Un utilizzo modificato dei tipi di notifica. Attualmente ci sono alcune costanti di tipo di notifica utilizzate nel PostAlerter che vengono iterate o filtrate in controlli e contatori specifici, ad esempio
NOTIFIABLE_TYPESeCOLLAPSED_NOTIFIABLE_TYPES.Attualmente esiste un tipo di notifica generico
:custom, ma non è particolarmente utile nel contesto diafter_save_post, poiché l’aggiunta dicustomalle costanti di tipo significherebbe che tutti gli utilizzi del tipo di notificacustomne verrebbero influenzati.Si noti che il plugin assign utilizza attualmente il tipo di notifica
:custom, ma lo usa solo per notifiche relative ad azioni minori (non post regolari) e non lo utilizza per alcuna query (poiché qualsiasi plugin o servizio può utilizzarlo; utilizza il campo message per cercare le notifiche di assegnazione).