72 lines
2.4 KiB
TypeScript

import { createReducer, createAction } from '@reduxjs/toolkit';
// ─── Actions ──────────────────────────────────────────────────────────────────
export const saveProfileData = createAction<{
name: string;
email: string;
gender: 'MALE' | 'FEMALE' | 'OTHER';
addressLine1: string;
houseNumber: string;
landmark: string;
city: string;
state: string;
postalCode: string;
addressPhone: string;
addressLabel: string;
}>('completeProfile/saveProfileData');
export const clearProfileData = createAction('completeProfile/clearProfileData');
// ─── State ────────────────────────────────────────────────────────────────────
export interface CompleteProfileState {
name: string;
email: string;
gender: 'MALE' | 'FEMALE' | 'OTHER';
addressLine1: string;
houseNumber: string;
landmark: string;
city: string;
state: string;
postalCode: string;
addressPhone: string;
addressLabel: string;
}
const initialState: CompleteProfileState = {
name: '',
email: '',
gender: 'MALE',
addressLine1: '',
houseNumber: '',
landmark: '',
city: '',
state: '',
postalCode: '',
addressPhone: '',
addressLabel: 'Home',
};
// ─── Reducer ──────────────────────────────────────────────────────────────────
const completeProfileReducer = createReducer(initialState, builder => {
builder
.addCase(saveProfileData, (state, action) => {
state.name = action.payload.name;
state.email = action.payload.email;
state.gender = action.payload.gender;
state.addressLine1 = action.payload.addressLine1;
state.houseNumber = action.payload.houseNumber;
state.landmark = action.payload.landmark;
state.city = action.payload.city;
state.state = action.payload.state;
state.postalCode = action.payload.postalCode;
state.addressPhone = action.payload.addressPhone;
state.addressLabel = action.payload.addressLabel;
})
.addCase(clearProfileData, () => initialState);
});
export default completeProfileReducer;