twreporter-redux
Version:
redux actions and reducers for twreporter website
40 lines (33 loc) • 870 B
JavaScript
import clone from 'lodash/clone'
import get from 'lodash/get'
import set from 'lodash/set'
import reduxStateFields from '../constants/redux-state-fields'
const _ = {
clone,
get,
set,
}
const denormalizePosts = (slugs, entities) => {
const posts = slugs.map((slug) => {
return _.clone(entities[slug])
})
return posts
}
const denormalizeTopics = (topicSlugs, topicEntities, postEntities) => {
let slugs = topicSlugs
if (!Array.isArray(topicSlugs)) {
slugs = [topicSlugs]
}
const topics = slugs.map((slug) => {
const topic = _.clone(topicEntities[slug])
const relatedSlugs = _.get(topic, reduxStateFields.relateds, [])
const relateds = denormalizePosts(relatedSlugs, postEntities)
_.set(topic, reduxStateFields.relateds, relateds)
return topic
})
return topics
}
export {
denormalizePosts,
denormalizeTopics,
}