Skip to content

Instantly share code, notes, and snippets.

@mrtnbroder
Created March 1, 2016 15:29
Show Gist options
  • Select an option

  • Save mrtnbroder/6ae73cdbb3cb8b3ff255 to your computer and use it in GitHub Desktop.

Select an option

Save mrtnbroder/6ae73cdbb3cb8b3ff255 to your computer and use it in GitHub Desktop.
export const moviesSelector = ({ movies }) => movies.movies
import { createSelector } from 'reselect'
import { moviesSelector } from './movies-selectors'
import { subscriptionsOfUserSelector } from './subscription-selectors'
export const getUserSubscriptions = createSelector(
moviesSelector,
subscriptionsOfUserSelector,
(movies, subscriptions) =>
subscriptions.map((s) => s.movieId) // create array of movie id's
.filter((movieId) => !~subscriptions.indexOf(+movieId)) // get movies the user is not subscribed to
.map((id) => movies[id]) // get the movies
)
import { createSelector } from 'reselect'
export const subscriptionsSelector = ({ subscriptions }) => subscriptions.subscriptions
export const subscriptionsOfUserSelector = createSelector(
subscriptionsSelector,
(_, { userId }) => +userId, // userId is passed as a prop to some component
(subscriptions, userId) => ({
subscriptions: Object.keys(subscriptions).map(key => subscriptions[key]).filter(s => s.userId === userId)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment