El código de identificación de carga restrictivo dificulta la escritura de componentes de tema que utilizan activos subidos

Hola a todos,

Recientemente escribí un componente temático de Discourse (GitHub - Beholder-Vision/discourse-insert-model-3d: A Discourse theme component for adding 3D models to topics) que permite a los administradores de Discourse habilitar la carga y visualización de modelos 3D en sus foros.

Al principio, todo parecía funcionar bien hasta que recibí un informe de que algunos modelos cargados habían desaparecido, y luego, al revisar mi propio foro, vi que los activos cargados (modelos 3D e imágenes del póster) también habían sido purgados Insert Model 3D - #2 by patrickemin.

Leyendo la documentación (Understanding Uploads, Images, and Attachments), asumí que los activos cargados estarían bien porque estaban referenciados por una publicación, pero después de investigar un poco, encontré este código, discourse/app/models/post.rb at 03bb43f7468d3aa6e73bba0805193ae50c7ec2d5 · discourse/discourse · GitHub que parece ser el que identifica las cargas en el servidor. Por lo que puedo entender, un archivo cargado solo se cuenta como referenciado por una publicación si se hace referencia a él en uno de un número limitado de etiquetas HTML. Por lo tanto, una carga enlazada será reconocida si se hace referencia a ella en el atributo href de un elemento <a>, pero no si se hace referencia a ella en el atributo src de un elemento <model-viewer> (que es lo que agrega mi nuevo componente temático).

¿Alguien familiarizado con ese código puede confirmar si mi comprensión es correcta o no? Si es así, creo que las personas que crean componentes temáticos pueden marcar los activos como cargas generando un enlace <a> oculto que hace referencia al activo, pero sería muy útil si la documentación (Understanding Uploads, Images, and Attachments) pudiera actualizarse para resaltar este problema.

Muchas gracias
Alan

3 Me gusta

Tus parámetros y src provienen de un análisis JSON, por lo que hacerlo automáticamente parece complicado (por decir lo menos).

Siento que, en un nivel fundamental, esto está pidiendo a la API que “adjunte permanentemente” una carga a una publicación y la marque de tal manera que nunca se elimine.

Esto abre la puerta a otros problemas (¿dónde puedo ver qué cargas están adjuntas permanentemente? ¿Cuáles son los límites?).

Dicho esto, adjuntar permanentemente parece la única forma limpia de resolver esto.

Un enlace oculto funcionará como solución alternativa.

Estoy cambiando esto a una solicitud de función porque está funcionando según lo diseñado, pero la API no te lo está poniendo fácil.

Marcaré al equipo de dev-xp, que puede tener más ideas al respecto.