import { createSelector } from "reselect"; export const _selectState = state => state.user || {}; export const selectAuthenticationIsPending = createSelector( _selectState, state => state.authenticationIsPending ); export const selectUserIsPending = createSelector( _selectState, state => state.userIsPending ); export const selectUser = createSelector( _selectState, state => state.user || {} ); export const selectEmailToVerify = createSelector( _selectState, state => state.emailToVerify ); export const selectUserHasEmail = createSelector( selectUser, selectEmailToVerify, (user, email) => (user && user.has_email) || email ); export const selectUserIsRewardEligible = createSelector( selectUser, user => user && user.is_reward_eligible ); export const selectUserIsRewardApproved = createSelector( selectUser, user => user && user.is_reward_approved ); export const selectEmailNewIsPending = createSelector( _selectState, state => state.emailNewIsPending ); export const selectEmailNewErrorMessage = createSelector( _selectState, state => state.emailNewErrorMessage ); export const selectEmailNewDeclined = createSelector( _selectState, state => state.emailNewDeclined ); export const selectEmailVerifyIsPending = createSelector( _selectState, state => state.emailVerifyIsPending ); export const selectEmailVerifyErrorMessage = createSelector( _selectState, state => state.emailVerifyErrorMessage ); export const selectUserIsVerificationCandidate = createSelector( selectUserIsRewardEligible, selectUserIsRewardApproved, selectEmailToVerify, selectUser, (isEligible, isApproved, emailToVerify, user) => (isEligible && !isApproved) || (emailToVerify && user && !user.has_email) ); export const selectUserIsAuthRequested = createSelector( selectEmailNewDeclined, selectAuthenticationIsPending, selectUserIsVerificationCandidate, selectUserHasEmail, (isEmailDeclined, isPending, isVerificationCandidate, hasEmail) => !isEmailDeclined && (isPending || !hasEmail || isVerificationCandidate) );