feat: setup registration slice
parent
4ffd98ae21
commit
264340a45d
@ -0,0 +1,56 @@
|
||||
import { PayloadAction, createSlice } from '@reduxjs/toolkit';
|
||||
import { SignInMode } from '../../../components/registration/stages/SignInTab';
|
||||
import { SignUpMode } from '../../../components/registration/stages/SignUpTab';
|
||||
|
||||
export enum RegistrationPhase {
|
||||
Start,
|
||||
SignIn,
|
||||
SignUp,
|
||||
}
|
||||
|
||||
export type RegistrationState = {
|
||||
generatedRecoveryPhrase: string;
|
||||
hexGeneratedPubKey: string;
|
||||
registrationPhase: RegistrationPhase;
|
||||
signUpMode: SignUpMode;
|
||||
signInMode: SignInMode;
|
||||
};
|
||||
|
||||
const initialState: RegistrationState = {
|
||||
generatedRecoveryPhrase: '',
|
||||
hexGeneratedPubKey: '',
|
||||
registrationPhase: RegistrationPhase.Start,
|
||||
signInMode: SignInMode.Default,
|
||||
signUpMode: SignUpMode.Default,
|
||||
};
|
||||
|
||||
export const registrationSlice = createSlice({
|
||||
name: 'registration',
|
||||
initialState,
|
||||
reducers: {
|
||||
setGeneratedRecoveryPhrase(state, action: PayloadAction<string>) {
|
||||
return { ...state, generatedRecoveryPhrase: action.payload };
|
||||
},
|
||||
setHexGeneratedPubKey(state, action: PayloadAction<string>) {
|
||||
return { ...state, hexGeneratedPubKey: action.payload };
|
||||
},
|
||||
setRegistrationPhase(state, action: PayloadAction<RegistrationPhase>) {
|
||||
return { ...state, registrationPhase: action.payload };
|
||||
},
|
||||
setSignUpMode(state, action: PayloadAction<SignUpMode>) {
|
||||
return { ...state, signUpMode: action.payload };
|
||||
},
|
||||
setSignInMode(state, action: PayloadAction<SignInMode>) {
|
||||
return { ...state, signInMode: action.payload };
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const {
|
||||
setGeneratedRecoveryPhrase,
|
||||
setHexGeneratedPubKey,
|
||||
setRegistrationPhase,
|
||||
setSignUpMode,
|
||||
setSignInMode,
|
||||
} = registrationSlice.actions;
|
||||
export default registrationSlice.reducer;
|
@ -0,0 +1,58 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { SignInMode, SignUpMode } from '../../../components/registration/stages';
|
||||
import { RegistrationPhase, RegistrationState } from '../ducks/registration';
|
||||
import { OnboardingStoreState } from '../store';
|
||||
|
||||
// #region Getters
|
||||
const getRegistration = (state: OnboardingStoreState): RegistrationState => {
|
||||
return state.registration;
|
||||
};
|
||||
|
||||
const getGeneratedRecoveryPhrase = createSelector(
|
||||
getRegistration,
|
||||
(state: RegistrationState): string => state.generatedRecoveryPhrase
|
||||
);
|
||||
|
||||
const getHexGeneratedPubKey = createSelector(
|
||||
getRegistration,
|
||||
(state: RegistrationState): string => state.hexGeneratedPubKey
|
||||
);
|
||||
|
||||
const getRegistrationPhase = createSelector(
|
||||
getRegistration,
|
||||
(state: RegistrationState): RegistrationPhase => state.registrationPhase
|
||||
);
|
||||
|
||||
const getSignUpMode = createSelector(
|
||||
getRegistration,
|
||||
(state: RegistrationState): SignUpMode => state.signUpMode
|
||||
);
|
||||
|
||||
const getSignInMode = createSelector(
|
||||
getRegistration,
|
||||
(state: RegistrationState): SignInMode => state.signInMode
|
||||
);
|
||||
// #endregion
|
||||
|
||||
// #region Hooks
|
||||
export const useRegGeneratedRecoveryPhrase = () => {
|
||||
return useSelector(getGeneratedRecoveryPhrase);
|
||||
};
|
||||
|
||||
export const useRegHexGeneratedPubKey = () => {
|
||||
return useSelector(getHexGeneratedPubKey);
|
||||
};
|
||||
|
||||
export const useRegRegistrationPhase = () => {
|
||||
return useSelector(getRegistrationPhase);
|
||||
};
|
||||
|
||||
export const useRegSignUpMode = () => {
|
||||
return useSelector(getSignUpMode);
|
||||
};
|
||||
|
||||
export const useRegSignInMode = () => {
|
||||
return useSelector(getSignInMode);
|
||||
};
|
||||
// #endregion
|
Loading…
Reference in New Issue