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:
-
verificar
$discourse/embed/info?embed_url=$link -
se o tópico existir, mostrar o embed como de costume.
-
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?