L'emoji est inséré au mauvais endroit

Bien que la complétion automatique des émojis ne fonctionne pas lorsque vous ajoutez un deux-points après une lettre, elle propose des émojis lorsque vous faites de même après une marque de ponctuation (comme _ - : ; . , ). Mais lorsque vous utilisez la complétion automatique, l’émoji est inséré au début, remplaçant la première lettre, et non à la position où vous tapiez.

Je l’ai remarqué pour la première fois dans le chat, mais le compositeur de sujets se comporte de la même manière.

8 « J'aime »

Je ne peux plus reproduire ce problème, je pense que @kelv l’a résolu.

Je peux toujours reproduire cela.

J’ai tapé :

Écrivons du texte et ajoutons un emoji.

Et j’ai ensuite essayé d’ajouter un emoji derrière la virgule.

1 « J'aime »

Est-ce que cela ne concerne que iOS ? D’autres navigateurs sont-ils affectés ?

Je ne sais pas si c’est un problème iOS. Ce n’est certainement pas limité à iOS car je ne possède pas d’appareil iOS.
La dernière reproduction est sur ma tablette Android avec Firefox. (Je viens de vérifier, c’est pareil avec Chrome)

D’après le nom du fichier, l’heure du rapport et le fait qu’il n’y ait pas de clavier à l’écran dans le message initial, il s’agissait probablement d’Edge sur Windows 10.

Je viens juste de signaler ce problème @Moin :slight_smile:
iPadOS 18.7.1 avec Safari ici si cela peut aider @sam

Je vois également un autre problème lorsque je sélectionne du texte pour le citer sur iPad, la fenêtre contextuelle « citer » de Discourse est maintenant cachée derrière le menu « copier-coller » d’iOS, de sorte qu’on ne peut jamais cliquer dessus. J’essaierai de trouver les étapes pour reproduire et le signaler séparément plus tard dans la semaine (sauf si quelqu’un me devance). Je le mentionne ici car il est peut-être lié, car les deux problèmes ne sont apparus que cette semaine.

1 « J'aime »

Alors je ne suis pas sûr que votre problème soit le même que le mien. Le mauvais placement de l’emoji après un signe de ponctuation est quelque chose qui se produit depuis 1,5 an maintenant.

2 « J'aime »

Ah, je vois, ça résout le problème :

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))
-        ) {
+        // Pour l'autocomplétion d'emojis (key === ':'), utiliser une vérification plus permissive qui inclut
+        // la ponctuation courante comme la virgule, le point, etc. qui peuvent apparaître avant les emojis
+        let isAllowed;
+        if (this.options.key === ":") {
+          // Correspond aux mêmes caractères autorisés dans l'expression régulière onKeyUp de l'autocomplétion d'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 Je ne suis pas très familier avec l’évolution de ce code, peut-être que certaines de ces choses te rappellent quelque chose de tes récents portages ?

2 « J'aime »

Ce n’est pas lié au portage, je l’ai reproduit sur une ancienne instance (3.5.0.beta8-dev) avec l’autocomplétion basée sur floatkit désactivée. Il semble s’agir d’un bug de positionnement du curseur qui existe depuis un certain temps. Je vais quand même chercher une solution appropriée, mais cela ne devrait pas bloquer la suppression complète de l’ancienne bibliothèque d’autocomplétion.

3 « J'aime »

J’ai perdu un message de chat entier après avoir ajouté un emoji.

J’ai tapé le message, puis les deux-points et deux lettres pour obtenir des suggestions, j’ai cliqué sur « plus » et un emoji, et ensuite tout le message a disparu. S’agit-il d’un bug différent ou est-ce lié ? Jusqu’à présent, je n’ai pas pu le reproduire dans le compositeur, seulement dans le chat. Et seulement sur mon ordinateur portable, pas sur ma tablette.

2 « J'aime »

Oui, c’est le bug de détection de limites, nous avons du mal à déterminer où les emojis peuvent commencer et se terminer.

La chose délicate ici est que peut-être toute la logique est erronée. Je me demande pourquoi il a même besoin de prendre ce genre de décision étant donné qu’il sait exactement où se trouve le curseur et combien de lettres nous avons transmises à l’autocomplétion des emojis. Peut-être qu’il suffit de revenir en arrière N caractères, puis de remplacer cela… pas sûr.

Ouf, c’est un bug différent, car je viens de corriger le type de problème précédent avec une insertion d’emoji juste après la ponctuation (FIX: emojis should insert right after punctuation correctly by tyb-talks · Pull Request #35830 · discourse/discourse · GitHub) qui n’est pas encore déployé ici sur Meta.

De même, cela existe depuis un certain temps, et je peux confirmer que cela ne se produit que dans le chat. Je vais y consacrer du temps également.

3 « J'aime »

Merci. Ça fonctionne à merveille.

3 « J'aime »

Ceci est maintenant corrigé avec FIX: emoji picker autocomplete in chat replaces entire draft by tyb-talks · Pull Request #36017 · discourse/discourse · GitHub . Merci pour le signalement :slight_smile:

4 « J'aime »

Ce sujet a été automatiquement fermé après 3 jours. Les nouvelles réponses ne sont plus autorisées.