initiatived21/d21

View on GitHub
client/app/lib/state/deNormalizePledges.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * Denormalize pledges.
 * Does not mutate state (important!)
 *
 */

import values from 'lodash/values'
import merge from 'lodash/merge'
import includes from 'lodash/includes'

export default function deNormalizePledges(state) {
  const pledges = values(merge({}, state.pledges))

  for (let pledge of pledges) {
    pledge.initiator = state.users[pledge.initiator]
    if (pledge.tags) { // TODO: Why is this `if` needed?
      pledge.tags =
        values(state.tags).filter(tag => includes(pledge.tags, tag.id))
    }
  }

  return pledges
}