L'emoji è inserito nel posto sbagliato

Mentre l’autocompletamento delle emoji non funziona quando si aggiunge i due punti dopo una lettera, offre emoji quando si fa lo stesso dopo un segno di punteggiatura (come _ - : ; . , ). Ma quando si utilizza l’autocompletamento, l’emoji viene inserita all’inizio, sostituendo la prima lettera, e non nella posizione in cui si stava digitando.

L’ho notato per la prima volta in chat, ma anche il compositore di argomenti si comporta allo stesso modo.

8 Mi Piace

Non riesco più a riprodurlo, credo che @kelv l’abbia risolto.

Posso ancora riprodurre questo problema.

Ho digitato:

Scriviamo del testo e aggiungiamo un’emoji.

E poi ho provato ad aggiungere un’emoji dopo la virgola.

1 Mi Piace

È solo una cosa di iOS? Sono interessati altri browser?

Non so se sia una cosa di iOS. Di certo non è limitato a iOS perché non possiedo un dispositivo iOS.
L’ultimo caso di riproduzione è sul mio tablet Android usando Firefox. (Ho appena controllato, è lo stesso anche su Chrome)

In base al nome del file, all’ora del report e al fatto che non ci sia una tastiera a schermo nell’OP, quello era probabilmente Edge su Windows 10.

Sono appena venuto qui per segnalare questo problema @Moin :slight_smile:
iPadOS 18.7.1 con Safari qui, se può essere d’aiuto @sam

Vedo anche un altro problema quando evidenzio il testo per citarlo su iPad, il popup “cita” di Discourse è ora nascosto dietro il “copia incolla” di iOS, quindi non è mai possibile fare clic su di esso. Cercherò di capire i passaggi per replicarlo e lo segnalerò separatamente più tardi questa settimana (a meno che qualcuno non mi batta). Lo menziono qui perché potrebbe essere correlato, dato che entrambi i problemi sono apparsi solo questa settimana.

1 Mi Piace

Allora non sono sicuro che il tuo problema sia lo stesso del mio. Il disallineamento dell’emoji dopo un segno di punteggiatura è qualcosa che accade da 1,5 anni.

2 Mi Piace

Capisco, questo risolve il problema:

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))
-        ) {
+        // Per l'autocompletamento emoji (key === ':'), usa un controllo più permissivo che include
+        // punteggiatura comune come virgola, punto, ecc. che possono apparire prima delle emoji
+        let isAllowed;
+        if (this.options.key === ":") {
+          // Corrisponde agli stessi caratteri consentiti nell'espressione regolare onKeyUp dell'autocompletamento emoji
+          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 Non ho molta familiarità con l’evoluzione di questo codice, forse qualcosa ti ricorda riguardo al porting che hai fatto di recente?

2 Mi Piace

Non è correlato al porting, l’ho appena riprodotto su un’istanza precedente (3.5.0.beta8-dev) con l’autocompletamento basato su floatkit disattivato. Sembra essere un bug nel posizionamento del cursore che è presente da tempo. Cercherò comunque una soluzione adeguata, ma non dovrebbe bloccare la completa rimozione della vecchia libreria di autocompletamento.

3 Mi Piace

Ho appena perso un intero messaggio di chat dopo aver aggiunto un emoji.

Ho digitato il messaggio, digitato i due punti e due lettere per ottenere suggerimenti, ho cliccato su altro e un emoji, e poi l’intero messaggio è scomparso. Si tratta di un bug diverso o correlato? Finora, non sono riuscito a riprodurlo nel composer, solo in chat. E solo sul mio portatile, non sul mio tablet.

2 Mi Piace

Sì, è il bug del rilevamento dei confini, siamo confusi su dove le emoji possano iniziare e finire.
La cosa complicata qui è che forse tutta la logica è sbagliata, mi chiedo perché debba prendere questo tipo di decisione dato che sa esattamente dov’è il cursore e quante lettere abbiamo passato all’autocompletamento delle emoji. Forse basta lavorare all’indietro N caratteri e poi sostituire… non sono sicuro.

Oof, quello è un bug diverso, perché ho appena corretto il precedente tipo di problema con un’emoji inserita subito dopo la punteggiatura (FIX: emojis should insert right after punctuation correctly by tyb-talks · Pull Request #35830 · discourse/discourse · GitHub) che non è ancora stata distribuita qui su Meta.

Allo stesso modo, questo è presente da un po’ di tempo e posso confermare che si verifica solo in chat. Dedicherò del tempo anche a questo.

3 Mi Piace

Grazie. Funziona favolosamente.

3 Mi Piace

Questo è ora risolto come da FIX: emoji picker autocomplete in chat replaces entire draft by tyb-talks · Pull Request #36017 · discourse/discourse · GitHub . Grazie per la segnalazione :slight_smile:

4 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più ammesse nuove risposte.