w-aura/src/store/compatibilityV2.ts
Daniil Chemerkin b5a80221ef Develop
2025-02-10 20:11:07 +00:00

59 lines
2.0 KiB
TypeScript

import { IPalmistryFinger, IPalmistryLine } from "@/api/resources/Palmistry";
import { createSlice, createSelector } from "@reduxjs/toolkit";
import type { PayloadAction } from "@reduxjs/toolkit";
export type ICompatibilityV2FingerLocal = IPalmistryFinger & { fingerName?: string }
interface ICompatibilityV2 {
lines: IPalmistryLine[];
fingers: ICompatibilityV2FingerLocal[];
photo: string;
fromRedesign: boolean;
isShowPaymentModalV1: boolean;
}
const initialState: ICompatibilityV2 = {
lines: [],
fingers: [],
photo: "",
fromRedesign: false,
isShowPaymentModalV1: false,
};
const compatibilityV2Slice = createSlice({
name: "compatibilityV2",
initialState,
reducers: {
update(state, action: PayloadAction<Partial<ICompatibilityV2>>) {
return { ...state, ...action.payload };
},
setIsShowPaymentModalV1(state, action: PayloadAction<boolean>) {
return { ...state, isShowPaymentModalV1: action.payload };
}
},
extraReducers: (builder) => builder.addCase("reset", () => initialState),
});
export const { actions } = compatibilityV2Slice;
export const selectCompatibilityV2Lines = createSelector(
(state: { compatibilityV2: ICompatibilityV2 }) => state.compatibilityV2.lines,
(compatibilityV2) => compatibilityV2
);
export const selectCompatibilityV2Fingers = createSelector(
(state: { compatibilityV2: ICompatibilityV2 }) => state.compatibilityV2.fingers,
(compatibilityV2) => compatibilityV2
);
export const selectCompatibilityV2Photo = createSelector(
(state: { compatibilityV2: ICompatibilityV2 }) => state.compatibilityV2.photo,
(compatibilityV2) => compatibilityV2
);
export const selectCompatibilityV2FromRedesign = createSelector(
(state: { compatibilityV2: ICompatibilityV2 }) => state.compatibilityV2.fromRedesign,
(compatibilityV2) => compatibilityV2
);
export const selectCompatibilityV2IsShowPaymentModalV1 = createSelector(
(state: { compatibilityV2: ICompatibilityV2 }) => state.compatibilityV2.isShowPaymentModalV1,
(compatibilityV2) => compatibilityV2
);
export default compatibilityV2Slice.reducer;