Incorporar comentários do Discourse em outro site via Javascript

Tentei implementar isso hoje, mas tenho alguns problemas:

  • No post do fórum, a URL derivada (de discourseEmbedUrl?) é convertida para minúsculas, quebrando URLs que diferenciam maiúsculas de minúsculas no link após o texto “Este é um tópico de discussão complementar para a entrada original em…”
  • Na primeira carga da página, o embed exibe “Carregando discussão…” e trava. Na segunda carga da página, tudo funciona.
  • Paginação: quando o iframe está carregando, ele terá uma altura padrão, mas se nenhum comentário for encontrado, a altura encolhe de volta para exibir apenas uma linha com “Iniciar Discussão”. Isso piora o bug de “carregando discussão”, pois mantém uma grande altura vertical aberta.
  • Seria bom se os dados extraídos do pai do embed favorecessem uma meta tag em vez de converter a página inteira em texto, suponho que isso seja um comportamento mais generalizado do Discourse.

A maior surpresa foi descobrir que toda vez que você visita uma URL com um embed, um novo tópico é criado. Isso está no OP:

A única solução que consigo pensar é hacky, dependendo de SSR/cache de curto prazo para acionar o endpoint do embed:

então acho que a lógica seria:

  1. verificar $discourse/embed/info?embed_url=$link

  2. se o tópico existir, mostrar o embed como de costume.

  3. se não, mostrar um botão “iniciar conversa” que vincula a $discourse/new-topic?subject=$link.

Isso funcionaria, ou há alguma outra ligação que precisa acontecer?