diff --git a/__tests__/src/selectors/manifests.test.js b/__tests__/src/selectors/manifests.test.js index c51962e0d3e0811ac0733163ed9fa164a9950efa..0460a07c50db9ac93ca59089ef7a14ce99afea06 100644 --- a/__tests__/src/selectors/manifests.test.js +++ b/__tests__/src/selectors/manifests.test.js @@ -360,6 +360,8 @@ describe('getMetadataLocales', () => { label: 'Some label', value: { '@language': 'one-value', '@value': '1' }, }, + { label: 'Bad value', value: null }, + { label: null, value: 'Bad label' }, ], }; const state = { manifests: { x: { json: manifest } } }; diff --git a/src/state/selectors/manifests.js b/src/state/selectors/manifests.js index 7c166c30dfd79bc3cd43fee765562df70009fde6..4dc15f631259b26f9be427b39321aadab9408e10 100644 --- a/src/state/selectors/manifests.js +++ b/src/state/selectors/manifests.js @@ -338,9 +338,10 @@ export const getManifestMetadata = createSelector( /** */ function getLocalesForStructure(item) { const languages = []; + if (Array.isArray(item)) { languages.push(...item.filter(i => (typeof i === 'object' && i['@language'])).map(i => i['@language'])); - } else if (typeof item === 'object') { + } else if (item && typeof item === 'object') { if (item['@language']) languages.push(item['@language']); } return languages;