Emoji inserido no lugar errado

Embora a autocompletar de emojis não funcione quando você adiciona dois pontos após uma letra, ela oferece emojis quando você faz o mesmo após um sinal de pontuação (como _ - : ; . , ). Mas quando você usa a autocompletar, o emoji é inserido no início, substituindo a primeira letra, e não na posição em que você estava digitando.

Notei isso primeiro no chat, mas o compositor de tópicos se comporta da mesma forma.

8 curtidas

Não consigo mais reproduzir isso, acredito que o @kelv corrigiu.

Ainda consigo reproduzir isso.

Eu digitei:

Vamos escrever um texto e adicionar um emoji.

E então tentei adicionar um emoji atrás da vírgula.

1 curtida

Isso é apenas uma coisa do iOS? Outros navegadores são afetados?

Não sei se é uma coisa do iOS. Definitivamente não se limita ao iOS porque eu não tenho um dispositivo iOS.
A última reprodução está no meu tablet Android usando o Firefox. (Acabei de verificar, é o mesmo no Chrome)

Com base no nome do arquivo, hora do relatório e no fato de que não há teclado na tela no OP, esse provavelmente foi o Edge no Windows 10.

Acabei de vir aqui para relatar este problema @Moin :slight_smile:
iPadOS 18.7.1 com Safari aqui, se ajudar @sam

Também estou vendo outro problema ao destacar texto para citá-lo no iPad, o pop-up “citar” do Discourse agora está oculto atrás do “copiar colar” do iOS, então você nunca pode clicar nele. Tentarei descobrir os passos para reproduzir e relatá-lo separadamente mais tarde esta semana (a menos que alguém o faça antes de mim). Menciono aqui porque pode estar relacionado, já que ambos os problemas só apareceram esta semana.

1 curtida

Então não tenho certeza se o seu problema é o mesmo que o meu. O mau posicionamento do emoji após um sinal de pontuação é algo que acontece há 1,5 anos.

2 curtidas

Ah, entendi, isso corrige:

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 autocompletar emoji (key === ':'), use uma verificação mais permissiva que inclua
+        // pontuação comum como vírgula, ponto, etc., que podem aparecer antes de emojis
+        let isAllowed;
+        if (this.options.key === ":") {
+          // Corresponde aos mesmos caracteres permitidos na regex onKeyUp do autocompletar de 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 Não estou muito familiarizado com a evolução deste código, talvez algo disso soe familiar com alguma das portabilidades que você fez recentemente?

2 curtidas

Não está relacionado à portabilidade, apenas o reproduzi em uma instância mais antiga (3.5.0.beta8-dev) com o novo autocompletar baseado em floatkit desativado. Parece ser um bug de posicionamento do cursor que existe há algum tempo. Ainda vou procurar uma correção adequada, mas não deve ser um impedimento para a remoção completa da antiga biblioteca de autocompletar.

3 curtidas

Perdi uma mensagem de chat inteira depois de adicionar um emoji.

Digitei a mensagem, digitei os dois pontos e duas letras para obter sugestões, cliquei em mais e em um emoji, e então a mensagem inteira desapareceu. Isso é um bug diferente ou relacionado? Até agora, não consegui reproduzir no composer, apenas no chat. E apenas no meu laptop, não no meu tablet.

2 curtidas

Sim, é o bug de detecção de limites, estamos confusos sobre onde os emojis podem começar e terminar.

A coisa complicada aqui é que talvez toda a lógica esteja errada, eu me pergunto por que ela precisa tomar esse tipo de decisão, já que sabe exatamente onde está o cursor e quantas letras passamos para o autocompletar de emojis. Talvez baste voltar N caracteres e depois substituir isso… não tenho certeza.

Oof, esse é um bug diferente, porque acabei de corrigir o tipo anterior de problema com a inserção de um emoji logo após a pontuação (FIX: emojis should insert right after punctuation correctly by tyb-talks · Pull Request #35830 · discourse/discourse · GitHub), que ainda não foi implantado aqui no Meta.

Da mesma forma, isso existe há um tempo, e posso confirmar que está acontecendo apenas no chat. Reservarei um tempo para isso também.

3 curtidas

Obrigado. Funciona fabulosamente.

3 curtidas

Isso agora está corrigido em FIX: emoji picker autocomplete in chat replaces entire draft by tyb-talks · Pull Request #36017 · discourse/discourse · GitHub . Obrigado pelo relato :slight_smile:

4 curtidas

Este tópico foi fechado automaticamente após 3 dias. Novas respostas não são mais permitidas.