137 lines
5.8 KiB
JavaScript
137 lines
5.8 KiB
JavaScript
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 selectEmailAlreadyExists = createSelector(selectState, (state) => state.emailAlreadyExists);
|
|
|
|
export const selectEmailDoesNotExist = createSelector(selectState, (state) => state.emailDoesNotExist);
|
|
|
|
export const selectResendingVerificationEmail = createSelector(
|
|
selectState,
|
|
(state) => state.resendingVerificationEmail
|
|
);
|
|
|
|
export const selectUserEmail = createSelector(selectUser, (user) =>
|
|
user ? user.primary_email || user.latest_claimed_email : null
|
|
);
|
|
|
|
export const selectUserPhone = createSelector(selectUser, (user) => (user ? user.phone_number : null));
|
|
|
|
export const selectUserCountryCode = createSelector(selectUser, (user) => (user ? user.country_code : null));
|
|
|
|
export const selectEmailToVerify = createSelector(
|
|
selectState,
|
|
selectUserEmail,
|
|
(state, userEmail) => state.emailToVerify || userEmail
|
|
);
|
|
|
|
export const selectPhoneToVerify = createSelector(
|
|
selectState,
|
|
selectUserPhone,
|
|
(state, userPhone) => state.phoneToVerify || userPhone
|
|
);
|
|
|
|
export const selectYoutubeChannels = createSelector(selectUser, (user) => (user ? user.youtube_channels : null));
|
|
|
|
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) => {
|
|
const error = state.emailNewErrorMessage;
|
|
return typeof error === 'object' && error !== null ? error.message : error;
|
|
});
|
|
|
|
export const selectPasswordExists = createSelector(selectState, (state) => state.passwordExistsForUser);
|
|
|
|
export const selectPasswordResetIsPending = createSelector(selectState, (state) => state.passwordResetPending);
|
|
|
|
export const selectPasswordResetSuccess = createSelector(selectState, (state) => state.passwordResetSuccess);
|
|
|
|
export const selectPasswordResetError = createSelector(selectState, (state) => {
|
|
const error = state.passwordResetError;
|
|
return typeof error === 'object' && error !== null ? error.message : error;
|
|
});
|
|
|
|
export const selectPasswordSetIsPending = createSelector(selectState, (state) => state.passwordSetPending);
|
|
|
|
export const selectPasswordSetSuccess = createSelector(selectState, (state) => state.passwordSetSuccess);
|
|
|
|
export const selectPasswordSetError = createSelector(selectState, (state) => {
|
|
const error = state.passwordSetError;
|
|
return typeof error === 'object' && error !== null ? error.message : error;
|
|
});
|
|
|
|
export const selectPhoneNewErrorMessage = createSelector(selectState, (state) => state.phoneNewErrorMessage);
|
|
|
|
export const selectEmailVerifyIsPending = createSelector(selectState, (state) => state.emailVerifyIsPending);
|
|
|
|
export const selectEmailVerifyErrorMessage = createSelector(selectState, (state) => state.emailVerifyErrorMessage);
|
|
|
|
export const selectPhoneNewIsPending = createSelector(selectState, (state) => state.phoneNewIsPending);
|
|
|
|
export const selectPhoneVerifyIsPending = createSelector(selectState, (state) => state.phoneVerifyIsPending);
|
|
|
|
export const selectPhoneVerifyErrorMessage = createSelector(selectState, (state) => state.phoneVerifyErrorMessage);
|
|
|
|
export const selectIdentityVerifyIsPending = createSelector(selectState, (state) => state.identityVerifyIsPending);
|
|
|
|
export const selectIdentityVerifyErrorMessage = createSelector(
|
|
selectState,
|
|
(state) => state.identityVerifyErrorMessage
|
|
);
|
|
|
|
export const selectUserVerifiedEmail = createSelector(selectUser, (user) => user && user.has_verified_email);
|
|
|
|
export const selectUserIsVerificationCandidate = createSelector(
|
|
selectUser,
|
|
(user) => user && (!user.has_verified_email || !user.is_identity_verified)
|
|
);
|
|
|
|
export const selectAccessToken = createSelector(selectState, (state) => state.accessToken);
|
|
|
|
export const selectUserInviteStatusIsPending = createSelector(selectState, (state) => state.inviteStatusIsPending);
|
|
|
|
export const selectUserInvitesRemaining = createSelector(selectState, (state) => state.invitesRemaining);
|
|
|
|
export const selectUserInvitees = createSelector(selectState, (state) => state.invitees);
|
|
|
|
export const selectUserInviteStatusFailed = createSelector(
|
|
selectUserInvitesRemaining,
|
|
() => selectUserInvitesRemaining === null
|
|
);
|
|
|
|
export const selectUserInviteNewIsPending = createSelector(selectState, (state) => state.inviteNewIsPending);
|
|
|
|
export const selectUserInviteNewErrorMessage = createSelector(selectState, (state) => state.inviteNewErrorMessage);
|
|
|
|
export const selectUserInviteReferralLink = createSelector(selectState, (state) => state.referralLink);
|
|
|
|
export const selectUserInviteReferralCode = createSelector(selectState, (state) =>
|
|
state.referralCode ? state.referralCode[0] : ''
|
|
);
|
|
|
|
export const selectYouTubeImportPending = createSelector(selectState, (state) => state.youtubeChannelImportPending);
|
|
|
|
export const selectYouTubeImportError = createSelector(selectState, (state) => state.youtubeChannelImportErrorMessage);
|
|
|
|
export const selectSetReferrerPending = createSelector(selectState, (state) => state.referrerSetIsPending);
|
|
|
|
export const selectSetReferrerError = createSelector(selectState, (state) => state.referrerSetError);
|
|
|
|
export const selectYouTubeImportVideosComplete = createSelector(selectState, (state) => {
|
|
const total = state.youtubeChannelImportTotal;
|
|
const complete = state.youtubeChannelImportComplete || 0;
|
|
|
|
if (total) {
|
|
return [complete, total];
|
|
}
|
|
});
|
|
|
|
export const makeSelectUserPropForProp = (prop) => createSelector(selectUser, (user) => (user ? user[prop] : null));
|