Skip to content

Instantly share code, notes, and snippets.

@arackaf
Created December 31, 2015 22:54
Show Gist options
  • Save arackaf/7d1a5cb3fb759ad85b34 to your computer and use it in GitHub Desktop.
Save arackaf/7d1a5cb3fb759ad85b34 to your computer and use it in GitHub Desktop.
const modifyingBooksSelector = createSelector(
[state => state.booksSubjectsModifier.singleBookModify, state => state.booksSubjectsModifier.selectedBooksModify, state => state.books],
(singleBookModify, selectedBooksModify, books) => {
let modifyingBookIds = singleBookModify ? [singleBookModify] : (selectedBooksModify ? Object.keys(books.selectedBooks) : []);
return modifyingBookIds.filter(_id => _id).map(_id => books.booksHash[_id]);
}
);
const addingSubjectsSelector = createSelector(
[state => state.booksSubjectsModifier.addingSubjects, state => state.subjects.list],
(adding, subjects) => Object.keys(adding).filter(_id => adding[_id]).map(_id => subjects[_id])
);
const removingSubjectsSelector = createSelector(
[state => state.booksSubjectsModifier.removingSubjects, state => state.subjects.list],
(removing, subjects) => Object.keys(removing).filter(_id => removing[_id]).map(_id => subjects[_id])
);
const booksSubjectsModifierSelector = createSelector(
[state => state.booksSubjectsModifier.addingSubjects, state => state.booksSubjectsModifier.removingSubjects,
modifyingBooksSelector, addingSubjectsSelector, removingSubjectsSelector],
(addingSubjectIds, removingSubjectIds, modifyingBooks, addingSubjects, removingSubjects) => ({
addingSubjectIds,
removingSubjectIds,
modifyingBooks,
addingSubjects,
removingSubjects
})
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment