corpediaslice.js 1.2 KB
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";
import qs from "qs";

export const fetchCorpediaList = createAsyncThunk(
  "CorpediaListSlice/fetchCorpediaList",
  async () => {
    const query = {
      populate: [
        "Image"
      ],
    };
    const queryString = qs.stringify(query, {
      encodeValuesOnly: true,
    });
    const endpoint = `${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/corpedias?${queryString}`;
    const response = await axios.get(endpoint);
    const data = response.data.data;
    return data;
  }
);

const CorpediaListSlice = createSlice({
  name: "corpedia",
  initialState: {
    status: "idle",
    data: [],
    error: null,
  },
  reducers: {},
  extraReducers: (builder) => {
    builder
      .addCase(fetchCorpediaList.pending, (state) => {
        state.status = "loading";
      })
      .addCase(fetchCorpediaList.fulfilled, (state, action) => {
        state.status = "succeeded";
        state.data = action.payload;
      })
      .addCase(fetchCorpediaList.rejected, (state, action) => {
        state.status = "failed";
        state.error = action.error.message;
      });
  },
});
export default CorpediaListSlice.reducer;