Comportamento do PostAlerter after_save_post

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):

  1. Seria ótimo ter um hook ou gatilho de evento no método after_save_post para 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:

    1. Devo enviar uma notificação a um usuário sobre uma postagem?
    2. Já enviei uma notificação a um usuário sobre essa postagem?
    3. 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.

  2. 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_TYPES e COLLAPSED_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 adicionar custom às constantes de tipo significaria que todo uso do tipo de notificação custom seria 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).

1 curtida