Этот баг касается настройки Skip review media groups (Пропускать группы при проверке медиа).
При отправке изображения с мобильного устройства загрузка изображения завершается успешно, и тело сообщения корректно содержит ссылку на изображение (например,
).
Однако последующий запрос POST /posts содержит:
“image_sizes”: {}
Серверная проверка медиа-контента выполняется только при условии manager.args[:image_sizes].present?:
if manager.args\[:image_sizes\].present? &&
!user.in_any_groups?(SiteSetting.skip_review_media_groups_map)
return :contains_media
end
Пустой хэш в Ruby не считается present? (присутствующим), поэтому сообщение не распознается как содержащее медиа-контент и не отправляется на проверку. Таким образом, проверка skip_review_media_groups никогда не выполняется.
Подтверждение в HAR-файле:
- POST /uploads завершился успешно (2xx).
- Тело запроса POST /posts содержит Markdown-разметку изображения в поле raw.
- То же самое тело запроса содержит “image_sizes”: {}.
- Сообщение не было поставлено в очередь на проверку.
Веб-компоновщик формирует image_sizes на основе изображений в DOM-элементе предпросмотра редактора. Это делает проверку медиа-контента зависимой от метаданных предпросмотра, предоставляемых клиентом, которые могут отсутствовать на мобильных устройствах
или если изображение предпросмотра не было загружено.
Ожидаемое поведение: Сообщение, содержащее загруженное или встроенное изображение, должно попадать на проверку медиа-контента независимо от того, отправляет ли клиент размеры изображения.
Предлагаемое решение:
-
Серверное обнаружение медиа-контента в сообщении — Определяйте наличие медиа-контента в сообщении путем анализа содержимого полей
rawилиcooked(или ссылок на загрузки) на сервере, вместо того чтобы полагаться исключительно на полеimage_sizes, предоставляемое клиентом. -
Проверка всех загруженных медиа-файлов (лучше варианта 1) — Вместо проверки только тех медиа-файлов, которые вставлены в сообщение, напрямую проверяйте каждый медиа-файл, загруженный пользователем. Это полностью устраняет зависимость от метаданных на уровне сообщения и гарантирует, что ни один загруженный медиа-файл не обойдет очередь проверки, независимо от используемого клиента или конечной точки.