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

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

const articleSlice = createSlice({
  name: 'article',
  initialState: articleAdapter.getInitialState({ articleStatus: 'none' }),
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getArticle.fulfilled, (state, action) => {
      articleAdapter.setAll(state, action.payload);
      state.articleStatus = 'fulfiled';
    })
      .addCase(getArticle.pending, (state) => {
        state.articleStatus = 'pending';
      })
      .addCase(getArticle.rejected, (state) => {
        state.articleStatus = 'rejected';
      });
  },
});

const { selectAll: selectArticlebySlug } = articleAdapter.getSelectors((state) => state.article);

export { selectArticlebySlug };
export default articleSlice;