Les miniatures sont manquantes pour nos intégrations externes lors de l'utilisation de miniatures de sujet

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 :

  1. Pour tous les oneboxes génériques, charger silencieusement et masquer une image à côté s’il existe get_oembed.thumbnail_url.
  2. Sans doute une meilleure solution, ajouter un support général pour l’extraction de get_oembed.thumbnail_url et son association au message, sans qu’il fasse partie de la zone cooked elle-même.

Endroits pertinents :

  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

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.