La revisione dei media viene ignorata quando image_sizes è vuoto

Questo bug riguarda l’impostazione Skip review media groups (Ignora gruppi di revisione media).
Quando si pubblica un’immagine da mobile, il caricamento dell’immagine ha successo e il corpo del post contiene correttamente un riferimento all’immagine (ad esempio, ...).

Tuttavia, la successiva richiesta POST /posts contiene:

“image_sizes”: {}

Il controllo di revisione dei media lato server viene eseguito solo quando manager.args[:image_sizes].present? è vero:

if manager.args[:image_sizes].present? &&
       !user.in_any_groups?(SiteSetting.skip_review_media_groups_map)
    return :contains_media
  end

Un hash vuoto non è considerato present? in Ruby, quindi il post non viene identificato come contenente media e non viene inviato per la revisione. Il controllo skip_review_media_groups non viene mai raggiunto.

Prove HAR:

  • POST /uploads ha avuto successo (2xx).
  • Il payload di POST /posts contiene Markdown immagine in raw.
  • Lo stesso payload contiene “image_sizes”: {}.
  • Il post non è stato messo in coda per la revisione.

Il compositore web costruisce image_sizes dalle immagini nel DOM dell’anteprima dell’editor. Questo rende la revisione dei media dipendente dai metadati dell’anteprima forniti dal client, che potrebbero mancare sui client mobili
o se l’immagine dell’anteprima non è stata caricata.

Comportamento atteso: Un post contenente un’immagine caricata/incorporata dovrebbe entrare in revisione dei media indipendentemente dal fatto che il client invii le dimensioni dell’immagine.

Soluzione suggerita:

  1. Rilevamento dei media lato server dal contenuto del post — Determinare se un post contiene media ispezionando il contenuto raw o cooked del post (o i riferimenti di caricamento) sul server, invece di affidarsi esclusivamente al campo image_sizes fornito dal client.

  2. Revisione di tutti i file media caricati (migliore opzione) — Invece di revisionare solo i file media che appaiono all’interno di un post, revisionare direttamente ogni file media caricato dall’utente. Questo elimina completamente la dipendenza dai metadati a livello di post e garantisce che nessun file media caricato bypassi la coda di revisione, indipendentemente dal client o dall’endpoint utilizzato.