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:
- Para todos los oneboxes genéricos, cargar y ocultar silenciosamente una imagen junto a él si
get_oembed.thumbnail_urlexiste. - Probablemente una mejor solución, añadir soporte general para extraer
get_oembed.thumbnail_urly asociarlo con la publicación, sin que sea parte del áreacookeden sí.
Lugares relevantes:
- https://oembed.com/
- discourse/lib/onebox/engine at main · discourse/discourse · GitHub
- 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.