📄 Componente Copiar Publicación

Gracias por identificarlo @Moin. He implementado una corrección:

6 Me gusta

Recibo este mensaje de error cada vez que hago clic en el botón de copiar:

1 me gusta

¿Ves algún error en la consola del navegador?

Mencioné este problema en el otro tema.

1 me gusta

Noté un error en un sitio que utiliza el componente como anónimo:

Hice un PR para solucionarlo:

4 Me gusta

El PR ya está fusionado; ¡gracias, Keegan!

3 Me gusta

¿han estado recibiendo los usuarios de este componente este error más recientemente?

Acabo de instalarlo, aquí hay una idea:

Haz clic en el botón de copiar en varias publicaciones para “construir” tu portapapeles. De esa manera, puedes copiar rápidamente una sección completa de un hilo de forma selectiva.

Digamos que hay cinco publicaciones:

Publicación A
Publicación B
Publicación C
Publicación D
Publicación E

Copias D, luego B, luego E. Lo que hay en tu portapapeles es en realidad:

B
D
E

Así que el portapapeles se organiza según su cronología en la conversación, no el orden en que los copias.

Tuve un error en esto, y como es un error de JS del lado del cliente, no puedo encontrarlo en \logs. Mi versión de Discourse es 2026.7.0-latest +188

Investigué más a fondo sobre la revisión exacta de Discourse en la que originalmente vi el problema, y también sobre la rama main actual.

En una configuración histórica reconstruida de julio, fui capaz de reproducir un fallo relacionado con el portapapeles: la función “Copiar publicación” podía mostrar la indicación de éxito o verificación, mientras que el contenido del portapapeles no se reemplazaba realmente. No puedo confirmar que este fuera el mismo error subyacente que el error de tema o componente mostrado en mi captura de pantalla original de julio.

Sin embargo, la misma implementación de “Copiar publicación” ahora funciona en mi instancia de producción actual, incluido en una PWA de iOS Safari.

Comparé el código relevante entre la revisión de Discourse de julio y la rama main actual. La implementación del portapapeles de “Copiar publicación” en sí misma no ha cambiado, y no pude encontrar ningún cambio relevante en:

  • clipboardCopy / clipboardCopyAsync
  • la despachación de acciones de DButton, incluido el camino para iOS
  • el shim legado de DButton
  • el camino del transformador del menú de publicaciones
  • el camino GET en discourse/lib/ajax

También escribí una especificación de sistema experimental que pausa la solicitud de la publicación cruda y verifica si navigator.clipboard.write() ha comenzado antes de que la solicitud se complete. Esa prueba pasa si se cambia “Copiar publicación” para usar clipboardCopyAsync, y falla contra la implementación actual.

Sin embargo, “Copiar publicación” actual funciona en los navegadores y dispositivos que he probado, incluido iOS Safari PWA, por lo que esa prueba parece imponer una restricción de implementación más fuerte en lugar de demostrar una regresión actual visible para el usuario.

Por esa razón, no estoy proponiendo actualmente esa prueba ni el cambio a clipboardCopyAsync como una corrección. El fallo histórico pudo haber dependido del comportamiento del navegador/WebKit en lugar de un cambio en el propio componente de “Copiar publicación”.

1 me gusta

Siguiendo con este tema, he abierto un PR pequeño que modifica la indicación de éxito/verificación para que solo se muestre después de que la escritura en el portapapeles se haya completado con éxito, junto con una especificación de sistema de regresión:

El flujo de trabajo de GitHub Actions está actualmente a la espera de la aprobación del mantenedor antes de que los trabajos de CI puedan ejecutarse.

1 me gusta