TypeError: Cannot read properties of null (onKeyDown.js)
Description
Greetings dear fellows.
We did set up Algolia search autocomplete with the help of @algolia/autocomplete-js. It is quite similar to what is defined in the query suggestions sandbox example from your docs.
It is rolled out in one of our services and works, however we are noticing cryptic errors coming from the library code. We cannot reproduce it and it happens quite occasionally. Sentry gives us the following traceback:
TypeError: Cannot read properties of null (reading 'item')
at <anonymous>(./node_modules/@algolia/autocomplete-core/dist/esm/onKeyDown.js:116:20)
at <object>.onKeyDown(./node_modules/@algolia/autocomplete-core/dist/esm/getPropGetters.js:179:9)
at <object>.onKeyDown(./node_modules/@algolia/autocomplete-js/dist/esm/elements/Input.js:36:18)
at eventProxy(./node_modules/@algolia/autocomplete-js/dist/esm/utils/setProperties.js:30:25)
Reproduction
Couldn't yet.
Expected behavior
No errors coming from the library.
Environment
- OS: Windows >= 10
- Browser: Edge 122.0.0, Firefox 124.0, Chrome 122.0.0, Edge 120.0.0
- Autocomplete version: 1.17.0
To start unpacking this behaviour, it seems to be linked to this line: https://github.com/algolia/autocomplete/blob/next/packages/autocomplete-core/src/onKeyDown.ts#L146 where somehow getActiveItem returns null, although I don't know how that can happen
Analysis
- The function
getCollectionFromActiveItemIdattempts to find the collection containing the active item based on theactiveItemId. If no collection contains this item, the function returnsundefined, leadinggetActiveItemto returnnull - Similarly, if the
activeItemIdis invalid the function can fail to find the active item and returnnull.
Possible Fix
- By Validate
activeItemIdBefore Using It. - Null Check in Calling Code: In
onKeyDown.jsand other places wheregetActiveItem()is used.
I would like to open a PR for this issue. Could you please assign it to me? @Haroenv