/home/bdqbpbxa/demo-subdomains/ping-proxies.goodface.com.ua/src/store/slices/ProductSlice.js
import { createSlice, createSelector } from '@reduxjs/toolkit';
import { getProductBySlag } from 'api/Product';
import { createRequest } from 'api/helpers';

// export const fetchCurrentProduct = createRequest('fetchCurrentProduct', getProductById);
export const fetchCurrentProduct = createRequest('fetchCurrentProduct', getProductBySlag);

const ProductSlice = createSlice({
    name: 'ProductSlice',
    initialState: {
        currentProduct: {
            data: {},
        },
        currentProductIsLoading: false,
    },
    reducers: {},
    extraReducers: builder => {
        builder.addCase(fetchCurrentProduct.pending, (state, action) => {
            state.currentProductIsLoading = true;
        })
        builder.addCase(fetchCurrentProduct.fulfilled, (state, action) => {
            state.currentProductIsLoading = false;
            state.currentProduct = action.payload;
        });
    },
});


export const selectCurrentProduct = createSelector(
    [state => state.productState.currentProduct],
    currentProduct => currentProduct.data[0]?.attributes,
);

export const selectProductHero = createSelector([selectCurrentProduct], data => data?.hero || {});
export const selectProductStatistics = createSelector([selectCurrentProduct], data => data?.statistics || {});
export const selectProductCTA = createSelector([selectCurrentProduct], data => data?.cta || {});
export const selectProductPayments = createSelector([selectCurrentProduct], data => data?.payments || {});
export const selectProductFeatures = createSelector([selectCurrentProduct], data => data?.features || {});
export const selectProductDashboard = createSelector([selectCurrentProduct], data => data?.dashboard || {});
export const selectProductBenefits = createSelector([selectCurrentProduct], data => data?.benefits || {});
export const selectProductLocations = createSelector([selectCurrentProduct], data => data?.locations || {});
export const selectProductFAQ = createSelector([selectCurrentProduct], data => data?.faq || {});
export const selectProductCTAFooter = createSelector([selectCurrentProduct], data => data?.cta_footer || {});



export const selectProductIsLoading = createSelector([state => state.productState], data => data.currentProductIsLoading);
export default ProductSlice.reducer;