El emoji está insertado en el lugar incorrecto

Si bien la autocompletación de emojis no funciona cuando agregas dos puntos después de una letra, ofrece emojis cuando haces lo mismo después de un signo de puntuación (como _ - : ; . , ). Pero cuando usas la autocompletación, el emoji se inserta al principio, reemplazando la primera letra, y no en la posición en la que estabas escribiendo.

Lo noté por primera vez en el chat, pero el compositor de temas se comporta de la misma manera.

8 Me gusta

Ya no puedo reproducir esto, creo que @kelv lo arregló.

Todavía puedo reproducir esto.

Escribí:

Escribamos algo de texto y agreguemos un emoji.

Y luego intenté agregar un emoji detrás de la coma.

1 me gusta

¿Es esto solo para iOS? ¿Se ven afectados otros navegadores?

No sé si es algo de iOS. Definitivamente no se limita a iOS porque no tengo un dispositivo iOS.
El último caso reproducible está en mi tablet Android usando Firefox. (Acabo de comprobar que es lo mismo en Chrome)

Basándome en el nombre del archivo, la hora del informe y el hecho de que no hay un teclado en pantalla en el OP, probablemente fue Edge en Windows 10.

Solo vine a reportar este problema @Moin :slight_smile:

iPadOS 18.7.1 con Safari aquí si sirve de algo @sam

También estoy viendo otro problema al resaltar texto para citarlo en iPad, la ventana emergente “cita” de Discourse ahora está oculta detrás de la opción “copiar y pegar” de iOS, por lo que nunca se puede hacer clic en ella. Intentaré averiguar los pasos para reproducirlo y lo reportaré por separado más adelante esta semana (a menos que alguien se me adelante). Lo menciono aquí porque podría estar relacionado, ya que ambos problemas aparecieron esta semana.

1 me gusta

Entonces no estoy seguro de que tu problema sea el mismo que el mío. La colocación incorrecta del emoji después de un signo de puntuación es algo que ha ocurrido durante 1,5 años.

2 Me gusta

Ya veo, esto lo soluciona:

diff --git a/frontend/discourse/app/modifiers/d-autocomplete.js b/frontend/discourse/app/modifiers/d-autocomplete.js
index e49fc0ec53..33fb51a1f4 100644
--- a/frontend/discourse/app/modifiers/d-autocomplete.js
+++ b/frontend/discourse/app/modifiers/d-autocomplete.js
@@ -599,10 +599,19 @@ export default class DAutocompleteModifier extends Modifier {
         prev = this.getValue()[caretPos - 1];
         const shouldTrigger = await this.shouldTrigger({ backSpace });
 
-        if (
-          shouldTrigger &&
-          (prev === undefined || this.ALLOWED_LETTERS_REGEXP.test(prev))
-        ) {
+        // Para el autocompletado de emojis (key === ':'), usa una comprobación más permisiva que incluya
+        // signos de puntuación comunes como coma, punto, etc. que pueden aparecer antes de los emojis.
+        let isAllowed;
+        if (this.options.key === ":") {
+          // Coincide con los mismos caracteres permitidos en la expresión regular onKeyUp del autocompletado de emojis
+          isAllowed =
+            prev === undefined || /[\\s.?,@/#!%\u0026*;:\\[\\]{}=\\-_()+]/.test(prev);
+        } else {
+          isAllowed =
+            prev === undefined || this.ALLOWED_LETTERS_REGEXP.test(prev);
+        }
+
+        if (shouldTrigger && isAllowed) {
           start = caretPos;
           term = this.getValue().substring(caretPos + 1, initialCaretPos);
           end = caretPos + term.length;

@kelv No estoy muy familiarizado con cómo evolucionó este código, ¿quizás algo de esto te suena de alguna de las portabilidades que hiciste recientemente?

2 Me gusta

No está relacionado con la portabilidad, simplemente lo reproduje en una instancia anterior (3.5.0.beta8-dev) con el nuevo autocompletado basado en floatkit desactivado. Parece ser un error de posicionamiento del cursor que ha estado ahí por algún tiempo. Aún así, buscaré una solución adecuada, pero no debería ser un impedimento para la eliminación completa de la antigua biblioteca de autocompletado.

3 Me gusta

Acabo de perder un mensaje de chat completo después de agregar un emoji.

Escribí el mensaje, escribí los dos puntos y dos letras para obtener sugerencias, hice clic en “más” y en un emoji, y luego todo el mensaje desapareció. ¿Es este un error diferente o está relacionado? Hasta ahora, no pude reproducirlo en el editor, solo en el chat. Y solo en mi portátil, no en mi tableta.

2 Me gusta

Sí, es el error de detección de límites, estamos confundidos sobre dónde pueden empezar y terminar los emojis.

Lo complicado aquí es que tal vez toda la lógica sea incorrecta. Me pregunto por qué necesita tomar este tipo de decisión, dado que sabe exactamente dónde está el cursor y cuántas letras hemos pasado al autocompletado de emojis. Tal vez simplemente retroceder N caracteres y luego reemplazar eso… no estoy seguro.

Uf, ese es un error diferente, porque acabo de corregir el tipo anterior de problema con la inserción de un emoji justo después de un signo de puntuación (FIX: emojis should insert right after punctuation correctly by tyb-talks · Pull Request #35830 · discourse/discourse · GitHub) que aún no se ha implementado aquí en Meta.

De manera similar, esto ha estado sucediendo por un tiempo, y puedo confirmar que solo ocurre en el chat. También dedicaré tiempo a esto.

3 Me gusta

Gracias. Funciona fabulosamente.

3 Me gusta

Esto ahora está corregido en FIX: emoji picker autocomplete in chat replaces entire draft by tyb-talks · Pull Request #36017 · discourse/discourse · GitHub . Gracias por el informe :slight_smile:

4 Me gusta

Este tema se cerró automáticamente después de 3 días. Ya no se permiten nuevas respuestas.