59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
/* eslint-disable no-param-reassign */
|
|
import { createSlice } from '@reduxjs/toolkit';
|
|
|
|
export const LOADING = 'loading';
|
|
export const LOADED = 'loaded';
|
|
export const FAILED = 'failed';
|
|
|
|
const slice = createSlice({
|
|
name: 'course-home',
|
|
initialState: {
|
|
courseStatus: 'loading',
|
|
courseId: null,
|
|
gradesFeatureIsLocked: false,
|
|
toastBodyText: null,
|
|
toastBodyLink: null,
|
|
toastHeader: '',
|
|
},
|
|
reducers: {
|
|
fetchTabRequest: (state, { payload }) => {
|
|
state.courseId = payload.courseId;
|
|
state.courseStatus = LOADING;
|
|
},
|
|
fetchTabSuccess: (state, { payload }) => {
|
|
state.courseId = payload.courseId;
|
|
state.targetUserId = payload.targetUserId;
|
|
state.courseStatus = LOADED;
|
|
},
|
|
fetchTabFailure: (state, { payload }) => {
|
|
state.courseId = payload.courseId;
|
|
state.courseStatus = FAILED;
|
|
},
|
|
setCallToActionToast: (state, { payload }) => {
|
|
const {
|
|
header,
|
|
link,
|
|
linkText,
|
|
} = payload;
|
|
state.toastBodyLink = link;
|
|
state.toastBodyText = linkText;
|
|
state.toastHeader = header;
|
|
},
|
|
setGradesFeatureStatus: (state, { payload }) => {
|
|
state.gradesFeatureIsLocked = payload.gradesFeatureIsLocked;
|
|
},
|
|
},
|
|
});
|
|
|
|
export const {
|
|
fetchTabRequest,
|
|
fetchTabSuccess,
|
|
fetchTabFailure,
|
|
setCallToActionToast,
|
|
setGradesFeatureStatus,
|
|
} = slice.actions;
|
|
|
|
export const {
|
|
reducer,
|
|
} = slice;
|