O PostAlerter contém um sistema de verificações e gatilhos para notificações enviadas após a salvaguarda de uma postagem regular, começando com o método after_save_post.
Tenho lidado com esse método no Plugin Follow (veja especificamente discourse-follow/plugin.rb at main · discourse/discourse-follow · GitHub) e tenho algumas reflexões e perguntas sobre as quais gostaria de ouvir a opinião de outros.
Dada a natureza do PostAlerter, acredito que essa discussão vai além do Plugin Follow. Vejo que minhas sugestões abaixo podem ser relevantes para o plugin assign, o plugin polls, entre outros.
Minha reflexão atual segue mais ou menos por aqui (ficaria feliz em criar um PR para qualquer um dos pontos abaixo):
-
Seria ótimo ter um hook ou gatilho de evento no método
after_save_postpara permitir que plugins adicionem usuários aos quais enviar notificações (ou não), dentro do contexto das verificações e contadores desse método. Ao enviar uma notificação, três considerações-chave são:- Devo enviar uma notificação a um usuário sobre uma postagem?
- Já enviei uma notificação a um usuário sobre essa postagem?
- Como devo notificar um usuário sobre a postagem (ou seja, respeitando suas configurações)?
Cada uma dessas questões seria mais fácil de avaliar dentro do contexto do método after_save_post.
-
Um uso ajustado dos tipos de notificação. Atualmente, existem algumas constantes de tipo de notificação usadas no PostAlerter que são iteradas ou filtradas em verificações e contadores específicos, como
NOTIFIABLE_TYPESeCOLLAPSED_NOTIFIABLE_TYPES.Atualmente, há um tipo de notificação genérico
:custom; no entanto, ele não é particularmente útil no contexto de after_save_post, pois adicionarcustomàs constantes de tipo significaria que todo uso do tipo de notificaçãocustomseria afetado.Observe que o plugin assign atualmente usa o tipo de notificação :custom, mas apenas para notificações em ações pequenas (não em postagens regulares) e não o utiliza para nenhuma consulta (já que qualquer plugin ou serviço pode usá-lo; ele usa o campo message para buscar notificações de assign).