Ampliando blocos de mensagens de chat

Olá a todos,

Gostaria de desenvolver um plugin para exibir notificações de atividade do GitLab/GitHub no Discourse Chat, ou, mais amplamente, qualquer tipo de evento periódico.

Para uma saída mais rica, gostaria de exibir a atividade como um cartão, e notei que as mensagens do chat possuem um campo JSON blocks, que parece útil para esse propósito. Infelizmente, no momento, os tipos de blocos não parecem ser extensíveis sem modificar os internals do Chat: o esquema, os serializadores e o renderizador do frontend enumeram todos os tipos de bloco/elemento suportados.

Seria possível tornar blocks um ponto de extensão para plugins, ou os plugins deveriam tratá-lo como um detalhe de implementação interno?

Concretamente, o Discourse estaria aberto a:

  1. um tipo de bloco genérico de evento/cartão no núcleo (core), ou
  2. uma API de plugin do tipo registerChatBlockType?

Posso recorrer à renderização de Markdown e à decoração das mensagens de chat processadas no lado do cliente, mas os blocos estruturados parecem um modelo mais limpo, caso essa direção seja considerada viável.

2 curtidas