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:
- Per tutti i onebox generici, caricare silenziosamente e nascondere un’immagine accanto ad esso se
get_oembed.thumbnail_urlesiste. - Probabilmente una soluzione migliore, aggiungere supporto generale per l’estrazione di
get_oembed.thumbnail_urle associarlo al post, senza che faccia parte dell’areacookedstessa.
Luoghi pertinenti:
- https://oembed.com/
- discourse/lib/onebox/engine at main · discourse/discourse · GitHub
- 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.