You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/state/onboarding/selectors/registration.ts

118 lines
2.9 KiB
TypeScript

import { createSelector } from '@reduxjs/toolkit';
import { useSelector } from 'react-redux';
import {
AccountCreation,
AccountRestoration,
OnboardDirection,
Onboarding,
OnboardingState,
} from '../ducks/registration';
import { OnboardingStoreState } from '../store';
// #region Getters
const getRegistration = (state: OnboardingStoreState): OnboardingState => {
return state.registration;
};
const getOnboardingStep = createSelector(
getRegistration,
(state: OnboardingState): Onboarding => state.step
);
const getDirection = createSelector(
getRegistration,
(state: OnboardingState): OnboardDirection => state.direction
);
const getAccountCreationStep = createSelector(
getRegistration,
(state: OnboardingState): AccountCreation => state.accountCreationStep
);
const getAccountRestorationStep = createSelector(
getRegistration,
(state: OnboardingState): AccountRestoration => state.accountRestorationStep
);
const getProgress = createSelector(
getRegistration,
(state: OnboardingState): number => state.progress
);
const getRecoveryPassword = createSelector(
getRegistration,
(state: OnboardingState): string => state.recoveryPassword
);
const getRecoveryPasswordError = createSelector(
getRegistration,
(state: OnboardingState): string | undefined => state.recoveryPasswordError
);
const getHexGeneratedPubKey = createSelector(
getRegistration,
(state: OnboardingState): string => state.hexGeneratedPubKey
);
const getPrivateKeyBytesHex = createSelector(
getRegistration,
(state: OnboardingState): string | undefined => state.privateKeyBytesHex
);
const getDisplayName = createSelector(
getRegistration,
(state: OnboardingState): string => state.displayName
);
const getDisplayNameError = createSelector(
getRegistration,
(state: OnboardingState): string | undefined => state.displayNameError
);
// #endregion
// #region Hooks
export const useOnboardStep = () => {
return useSelector(getOnboardingStep);
};
export const useOnboardDirection = () => {
return useSelector(getDirection);
};
export const useOnboardAccountCreationStep = () => {
return useSelector(getAccountCreationStep);
};
export const useOnboardAccountRestorationStep = () => {
return useSelector(getAccountRestorationStep);
};
export const useProgress = () => {
return useSelector(getProgress);
};
export const useRecoveryPassword = () => {
return useSelector(getRecoveryPassword);
};
export const useRecoveryPasswordError = () => {
return useSelector(getRecoveryPasswordError);
};
export const useOnboardHexGeneratedPubKey = () => {
return useSelector(getHexGeneratedPubKey);
};
export const useOnboardPrivateKeyBytesHex = () => {
return useSelector(getPrivateKeyBytesHex);
};
export const useDisplayName = () => {
return useSelector(getDisplayName);
};
export const useDisplayNameError = () => {
return useSelector(getDisplayNameError);
};
// #endregion