diff --git a/src/containers/ListingPage/ListingPage.js b/src/containers/ListingPage/ListingPage.js index 06eef10a..32955485 100644 --- a/src/containers/ListingPage/ListingPage.js +++ b/src/containers/ListingPage/ListingPage.js @@ -52,9 +52,8 @@ export class ListingPageComponent extends Component { render() { const { entitiesData, intl, params } = this.props; const id = new types.UUID(params.id); - const currentListing = entitiesData.entities.listing - ? getListingsById(entitiesData, [id])[0] - : null; + const listingsById = getListingsById(entitiesData, [id]); + const currentListing = listingsById.length > 0 ? listingsById[0] : null; const title = currentListing ? currentListing.attributes.title : ''; const description = currentListing ? currentListing.attributes.description : ''; diff --git a/src/ducks/sdk.duck.js b/src/ducks/sdk.duck.js index 89adb04c..491fa213 100644 --- a/src/ducks/sdk.duck.js +++ b/src/ducks/sdk.duck.js @@ -107,8 +107,14 @@ export default function sdkReducer(state = initialState, action = {}) { * @param {Object} data the state part of the Redux store for this SDK reducer * @param {Array} listingIds listing IDs to select from the store */ -export const getListingsById = (data, listingIds) => - denormalisedEntities(data.entities, 'listing', listingIds); +export const getListingsById = (data, listingIds) => { + try { + return denormalisedEntities(data.entities, 'listing', listingIds); + } catch (e) { + console.error(`Could not denormalise entities with given ids (${listingIds.map(id => id.uuid)}). Error: ${e}`); + return []; + } +}; // ================ Action creators ================ //