Селектор эмодзи вызывает сбой редактора сообщений в Android / Chrome

Я могу воспроизвести проблему. Вот трассировка стека:

_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

Это происходит в этой строке:

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

Ошибка возникает потому, что selectedOption равен 0 (единственное предложение, то есть первое), в то время как autocompleteOptions каким-то образом равен null.

Сейчас исследую причину…

Пока что я не уверен, почему это происходит. Сначала я подозревал этот PR от @Osama:

Но я установил множество точек останова и не могу точно определить, «кто» изменяет autocompleteOptions и устанавливает его в null.

Также довольно странно, что autocompleteOptions берётся из области видимости родительской замыкающей функции, находящейся на два уровня выше, что делает код немного сложным для понимания и отладки.

8 лайков