diff --git a/app/assets/javascripts/discourse/app/lib/autocomplete.js b/app/assets/javascripts/discourse/app/lib/autocomplete.js index 56450508780..38ab5601e01 100644 --- a/app/assets/javascripts/discourse/app/lib/autocomplete.js +++ b/app/assets/javascripts/discourse/app/lib/autocomplete.js @@ -309,9 +309,22 @@ export default function (options) { } ul.find("li").click(function () { selectedOption = ul.find("li").index(this); - completeTerm(autocompleteOptions[selectedOption]); - if (!options.single) { - me.focus(); + // hack for Gboard, see meta.discourse.org/t/-/187009/24 + if (autocompleteOptions == null) { + const opts = { ...options, _gboard_hack_force_lookup: true }; + const forcedAutocompleteOptions = dataSource(prevTerm, opts); + forcedAutocompleteOptions?.then((data) => { + updateAutoComplete(data); + completeTerm(autocompleteOptions[selectedOption]); + if (!options.single) { + me.focus(); + } + }); + } else { + completeTerm(autocompleteOptions[selectedOption]); + if (!options.single) { + me.focus(); + } } return false; }); @@ -398,7 +411,11 @@ export default function (options) { } function dataSource(term, opts) { - if (prevTerm === term) { + const force = opts._gboard_hack_force_lookup; + if (force) { + delete opts._gboard_hack_force_lookup; + } + if (prevTerm === term && !force) { return SKIP; }