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:
-
Rilevamento dei media lato server dal contenuto del post — Determinare se un post contiene media ispezionando il contenuto
rawocookeddel post (o i riferimenti di caricamento) sul server, invece di affidarsi esclusivamente al campoimage_sizesfornito dal client. -
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.