Seletor de emoji trava o editor de mensagens no Android / Chrome

Consegui reproduzir. Segue o stack trace:

_application-bfbda341c2eb6dd7d61c681e17bdccec057c30e045ddc332927a7363150e9b1b.js:16386 Uncaught TypeError: Cannot read property '0' of null
    at HTMLLIElement.<anonymous> (application-bfbda341c2eb6dd7d61c681e17bdccec057c30e045ddc332927a7363150e9b1b.br.js:1)
    at HTMLLIElement.dispatch (ember_jquery-36a23101c869ab0dc53fc908de69adb785731593573d32bdeef416acc1076ef4.br.js:1)
    at HTMLLIElement.d.handle (ember_jquery-36a23101c869ab0dc53fc908de69adb785731593573d32bdeef416acc1076ef4.br.js:1)
(anonymous) @ application-bfbda341c2eb6dd7d61c681e17bdccec057c30e045ddc332927a7363150e9b1b.br.js:1
dispatch @ ember_jquery-36a23101c869ab0dc53fc908de69adb785731593573d32bdeef416acc1076ef4.br.js:1
d.handle @ ember_jquery-36a23101c869ab0dc53fc908de69adb785731593573d32bdeef416acc1076ef4.br.js:1

Isso ocorre nesta linha:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/autocomplete.js#L308

O erro acontece porque selectedOption é 0 (primeira sugestão única), enquanto autocompleteOptions está, de alguma forma, como null.

Investigando o motivo agora…

Ainda não tenho certeza do porquê. Inicialmente, eu suspeitava deste PR de @Osama:

https://github.com/discourse/discourse/pull/11637

Mas adicionei vários pontos de interrupção e não consegui realmente descobrir “quem” está mutando autocompleteOptions e definindo-o como null.

Ter autocompleteOptions vindo do escopo do fechamento pai, dois níveis acima, também é bastante estranho e torna o código um pouco difícil de seguir e depurar.

8 curtidas