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

const newsAdapter = createEntityAdapter({
  selectId: (news) => news.id,
});

const newsSlice = createSlice({
  name: 'news',
  initialState: newsAdapter.getInitialState({ newsStatus: 'none' }),
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getNews.fulfilled, (state, action) => {
      newsAdapter.setAll(state, action.payload);
      state.newsStatus = 'fulfilled';
    })
      .addCase(getNews.pending, (state) => {
        state.newsStatus = 'pending';
      })
      .addCase(getNews.rejected, (state) => {
        state.newsStatus = 'rejected';
      });
  },
});

const { selectAll: selectAllNews } = newsAdapter.getSelectors((state) => state.news);

export { selectAllNews };
export default newsSlice;