Après quelques discussions avec l’équipe Discourse par e-mail, je mets à jour ici.
La principale découverte est que les miniatures ne sont pas chargées si un lien qui devient un onebox est rendu sous forme d’iframe.
Cela signifie que le lien :
https://app.everviz.com/embed/N0dDTJaOQ
Rendra ou ne rendra pas de miniature en fonction de l’autorisation des iframes du domaine (allowed iframes). La solution consiste à injecter d’une manière ou d’une autre un iframe dans le message. J’ai créé un plugin qui le fait, et s’assure que display: none est appliqué à l’image, pour l’empêcher d’apparaître dans le message.
J’imagine qu’il est possible de généraliser cela soit :
- Pour tous les oneboxes génériques, charger silencieusement et masquer une image à côté s’il existe
get_oembed.thumbnail_url. - Sans doute une meilleure solution, ajouter un support général pour l’extraction de
get_oembed.thumbnail_urlet son association au message, sans qu’il fasse partie de la zonecookedelle-même.
Endroits pertinents :
- https://oembed.com/
- discourse/lib/onebox/engine at main · discourse/discourse · GitHub
- discourse/lib/onebox/engine/standard_embed.rb at main · discourse/discourse · GitHub
Je ne suis pas très satisfait de ce comportement modal, c’est-à-dire si allowed iframes est activé ou non ? Il serait souhaitable que Discourse extrait et utilise toutes les propriétés d’un point de terminaison oembed donné lorsqu’il lui envoie une requête GET pour la première fois.