/home/bdqbpbxa/demo-subdomains/ping-proxies.goodface.com.ua/src/store/slices/FeaturesSlice.js
import { createSlice, createSelector } from '@reduxjs/toolkit';
import { getFeatures, getFeaturesBySlag } from 'api/Features';
import { createRequest } from 'api/helpers';
export const fetchFeatures = createRequest('fetchFeatures', getFeatures, (_, { getState }) => {
const { attributes } = getState().featuresState.features.data;
return !attributes;
});
export const fetchCurrentFeature = createRequest('fetchCurrentFeature', getFeaturesBySlag);
const FeaturesSlice = createSlice({
name: 'FeaturesSlice',
initialState: {
features: {
data: [],
},
featuresIsLoading: false,
currentFeature: {
data: {
attributes: null,
},
},
currentFeatureIsLoading: false,
},
reducers: {},
extraReducers: builder => {
builder.addCase(fetchFeatures.pending, state => {
state.featuresIsLoading = true;
});
builder.addCase(fetchFeatures.fulfilled, (state, action) => {
state.featuresIsLoading = false;
state.features = action.payload;
});
builder.addCase(fetchCurrentFeature.pending, (state, action) => {
state.currentFeatureIsLoading = true;
})
builder.addCase(fetchCurrentFeature.fulfilled, (state, action) => {
state.currentFeatureIsLoading = false;
state.currentFeature = action.payload;
});
},
});
export const selectFeatures = createSelector(
[state => state.featuresState.features],
features => features?.data || [],
);
export const selectCurrentFeatures = createSelector(
[state => state.featuresState.currentFeature],
currentFeature => currentFeature.data[0]?.attributes,
);
export const selectCurrentFeaturesHero = createSelector([selectCurrentFeatures], data => data?.hero || {});
export const selectCurrentFeaturesStatistic = createSelector([selectCurrentFeatures], data => data?.statistics || {});
export const selectCurrentFeaturesSingle = createSelector([selectCurrentFeatures], data => data?.single_feature || []);
export const selectCurrentFeaturesBenefits = createSelector([selectCurrentFeatures], data => data?.benefits || {});
export const selectCurrentFeaturesUseCases = createSelector([selectCurrentFeatures], data => data?.use_cases || {});
export const selectCurrentFeaturesFAQ = createSelector([selectCurrentFeatures], data => data?.faq || {});
export const selectCurrentFeaturesCTA = createSelector([selectCurrentFeatures], data => data?.cta || {});
export const selectFeaturesIsLoading = createSelector([state => state.featuresState], data => data.featuresIsLoading);
export const selectCurrentFeatureIsLoading = createSelector([state => state.featuresState], data => data.currentFeatureIsLoading);
export default FeaturesSlice.reducer;