import { createSlice } from '@reduxjs/toolkit'; import { RequestStatus } from './constants'; const blocksSlice = createSlice({ name: 'courseBlocks', initialState: { status: RequestStatus.IN_PROGRESS, topics: { // Maps topic id to the discussion course path and link }, // List of chapter blocks in the course. Rest of the structure can be derived from children of topics chapters: [], // Mapping of block keys to block data blocks: {}, }, reducers: { fetchCourseBlocksRequest: (state) => ( { ...state, status: RequestStatus.IN_PROGRESS, } ), fetchCourseBlocksSuccess: (state, { payload }) => ( { ...state, status: RequestStatus.SUCCESSFUL, topics: payload.topics, chapters: payload.chapters, blocks: payload.blocks, } ), fetchCourseBlocksFailed: (state) => ( { ...state, status: RequestStatus.FAILED, } ), fetchCourseBlocksDenied: (state) => ( { ...state, status: RequestStatus.DENIED, } ), }, }); export const { fetchCourseBlocksRequest, fetchCourseBlocksSuccess, fetchCourseBlocksFailed, fetchCourseBlocksDenied, } = blocksSlice.actions; export const blocksReducer = blocksSlice.reducer;