Le miniature sono mancanti per i nostri embed esterni quando si utilizzano le miniature degli argomenti

Dopo alcune discussioni con il team di Discourse via email, sto aggiornando qui.

La scoperta principale è che le miniature non vengono caricate se un link che diventa un onebox viene renderizzato come un iframe.

Ciò significa che il link:

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

Renderizzerà o non renderizzerà una miniatura a seconda che gli iframe siano consentiti dal dominio (allowed iframes). La soluzione a questo è in qualche modo iniettare un iframe nel post. Ho creato un plugin che fa proprio questo e si assicura che a display: none sia impostato sull’immagine, per evitare che appaia nel post.

Immagino sia possibile generalizzare questo a:

  1. Per tutti i onebox generici, caricare silenziosamente e nascondere un’immagine accanto ad esso se get_oembed.thumbnail_url esiste.
  2. Probabilmente una soluzione migliore, aggiungere supporto generale per l’estrazione di get_oembed.thumbnail_url e associarlo al post, senza che faccia parte dell’area cooked stessa.

Luoghi pertinenti:

  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

Non sono molto soddisfatto di questo comportamento modale, ovvero, allowed iframes è abilitato o no? Sarebbe bello se Discourse estraesse e utilizzasse tutte le proprietà da un dato endpoint oembed quando gli invia per la prima volta una GET.