57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
/* eslint-disable no-param-reassign,import/prefer-default-export */
|
|
import { createSlice } from '@reduxjs/toolkit';
|
|
|
|
import { RequestStatus } from '../../data/constants';
|
|
|
|
const configSlice = createSlice({
|
|
name: 'config',
|
|
initialState: {
|
|
status: RequestStatus.IN_PROGRESS,
|
|
blackouts: [],
|
|
allowAnonymous: false,
|
|
allowAnonymousToPeers: false,
|
|
userRoles: [],
|
|
groupAtSubsection: false,
|
|
hasModerationPrivileges: false,
|
|
isGroupTa: false,
|
|
isCourseAdmin: false,
|
|
isCourseStaff: false,
|
|
isUserAdmin: false,
|
|
learnersTabEnabled: false,
|
|
settings: {
|
|
divisionScheme: 'none',
|
|
alwaysDivideInlineDiscussions: false,
|
|
dividedInlineDiscussions: [],
|
|
dividedCourseWideDiscussions: [],
|
|
},
|
|
reasonCodesEnabled: false,
|
|
editReasons: [],
|
|
postCloseReasons: [],
|
|
enableInContext: false,
|
|
},
|
|
reducers: {
|
|
fetchConfigRequest: (state) => {
|
|
state.status = RequestStatus.IN_PROGRESS;
|
|
},
|
|
fetchConfigSuccess: (state, { payload }) => {
|
|
state.status = RequestStatus.SUCCESSFUL;
|
|
Object.assign(state, payload);
|
|
},
|
|
fetchConfigFailed: (state) => {
|
|
state.status = RequestStatus.FAILED;
|
|
},
|
|
fetchConfigDenied: (state) => {
|
|
state.status = RequestStatus.DENIED;
|
|
},
|
|
},
|
|
});
|
|
|
|
export const {
|
|
fetchConfigDenied,
|
|
fetchConfigFailed,
|
|
fetchConfigRequest,
|
|
fetchConfigSuccess,
|
|
} = configSlice.actions;
|
|
|
|
export const configReducer = configSlice.reducer;
|