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