import { createSlice, createEntityAdapter } from '@reduxjs/toolkit';
import getIndispensable from './thunks/getIndispensable';

const indispensableAdapter = createEntityAdapter({
  selectId: (article) => article.id,
});

const indispensableSlice = createSlice({
  name: 'indispensable',
  initialState: indispensableAdapter.getInitialState({ articleStatus: 'none' }),
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getIndispensable.fulfilled, (state, action) => {
      indispensableAdapter.setAll(state, action.payload);
      state.articleStatus = 'fulfilled';
    })
      .addCase(getIndispensable.pending, (state) => {
        state.articleStatus = 'pending';
      })
      .addCase(getIndispensable.rejected, (state) => {
        state.articleStatus = 'rejected';
      });
  },
});

const {
  selectAll: selectAllIndispensableArticle,
} = indispensableAdapter.getSelectors((state) => state.indispensable);

export { selectAllIndispensableArticle };
export default indispensableSlice;