Las miniaturas faltan para nuestras incrustaciones externas al usar miniaturas de temas

Tras una discusión con el equipo de Discourse por correo electrónico, actualizo aquí.

El principal descubrimiento es que las miniaturas no se cargan si un enlace que se convierte en un onebox se renderiza como un iframe.

Esto significa que el enlace:

https://app.everviz.com/embed/N0dDTJaOQ

Renderizará o no una miniatura dependiendo de si los iframes están permitidos desde el dominio (allowed iframes). La solución a esto es inyectar de alguna manera un iframe en la publicación. He creado un plugin que hace esto y se asegura de que se establezca display: none en la imagen, para evitar que aparezca en la publicación.

Imagino que es posible generalizar esto a:

  1. Para todos los oneboxes genéricos, cargar y ocultar silenciosamente una imagen junto a él si get_oembed.thumbnail_url existe.
  2. Probablemente una mejor solución, añadir soporte general para extraer get_oembed.thumbnail_url y asociarlo con la publicación, sin que sea parte del área cooked en sí.

Lugares relevantes:

  1. https://oembed.com/
  2. discourse/lib/onebox/engine at main · discourse/discourse · GitHub
  3. discourse/lib/onebox/engine/standard_embed.rb at main · discourse/discourse · GitHub

No estoy muy contento con este comportamiento modal, es decir, ¿está habilitado allowed iframes o no? Sería bueno que Discourse extrajera y utilizara todas las propiedades de un punto final oembed dado cuando lo llama por primera vez con un GET.