A revisão de mídia é ignorada quando image_sizes está vazio

Este bug trata da configuração Ignorar grupos de revisão de mídia.
Ao publicar uma imagem pelo celular, o upload da imagem é concluído com sucesso e o corpo da publicação contém corretamente uma referência de imagem (por exemplo, ...).

No entanto, a solicitação POST /posts subsequente contém:

“image_sizes”: {}

A verificação de revisão de mídia no lado do servidor só é executada quando manager.args[:image_sizes].present? é verdadeiro:

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

Um hash vazio não é considerado presente? em Ruby, portanto, a publicação não é identificada como contendo mídia e não é enviada para revisão. A verificação de skip_review_media_groups nunca é alcançada.

Evidências do HAR:

  • POST /uploads foi concluído com sucesso (2xx).
  • A carga útil do POST /posts contém Markdown de imagem em raw.
  • A mesma carga útil contém “image_sizes”: {}.
  • A publicação não foi colocada na fila de revisão.

O compositor da web constrói image_sizes a partir das imagens no DOM de pré-visualização do editor. Isso torna a revisão de mídia dependente dos metadados de pré-visualização fornecidos pelo cliente, que podem estar ausentes em clientes móveis
ou se a imagem de pré-visualização não tiver sido carregada.

Comportamento esperado: Uma publicação que contenha uma imagem enviada/incorporada deve entrar na revisão de mídia, independentemente de o cliente enviar as dimensões da imagem.

Correção sugerida:

  1. Detecção de mídia no lado do servidor a partir do conteúdo da publicação — Determine se uma publicação contém mídia inspecionando o conteúdo raw ou cooked da publicação (ou referências de upload) no servidor, em vez de depender exclusivamente do campo image_sizes fornecido pelo cliente.

  2. Revisar todos os arquivos de mídia enviados (melhor que a opção 1) — Em vez de revisar apenas os arquivos de mídia que aparecem dentro de uma publicação, revise diretamente todos os arquivos de mídia enviados pelo usuário. Isso elimina a dependência de metadados no nível da publicação e garante que nenhum arquivo de mídia enviado contorne a fila de revisão, independentemente do cliente ou endpoint utilizado.