Files
frontend-app-authoring/src/certificates/data/slice.js
Kyr e306b62dd1 feat: [FC-0044] Certificates page (#872)
* feat: [FC-0044]  Certificates page

* feat: add descriptions for details, signatories, sidebar i18n messages

---------

Co-authored-by: Kyrylo Hudym-Levkovych <kyr.hudym@kyrs-MacBook-Pro.local>
2024-04-04 13:28:04 -04:00

60 lines
1.7 KiB
JavaScript

/* eslint-disable no-param-reassign */
import { createSlice } from '@reduxjs/toolkit';
import { RequestStatus } from '../../data/constants';
import { MODE_STATES } from './constants';
const slice = createSlice({
name: 'certificates',
initialState: {
certificatesData: {},
componentMode: MODE_STATES.noModes,
loadingStatus: RequestStatus.PENDING,
savingStatus: '',
savingImageStatus: '',
},
reducers: {
updateSavingStatus: (state, { payload }) => {
state.savingStatus = payload.status;
},
updateSavingImageStatus: (state, { payload }) => {
state.savingImageStatus = payload.status;
},
updateLoadingStatus: (state, { payload }) => {
state.loadingStatus = payload.status;
},
fetchCertificatesSuccess: (state, { payload }) => {
Object.assign(state.certificatesData, payload);
},
createCertificateSuccess: (state, action) => {
state.certificatesData.certificates.push(action.payload);
},
updateCertificateSuccess: (state, action) => {
const index = state.certificatesData.certificates.findIndex(c => c.id === action.payload.id);
if (index !== -1) {
state.certificatesData.certificates[index] = action.payload;
}
},
setMode: (state, action) => {
state.componentMode = action.payload;
},
deleteCertificateSuccess: (state) => {
state.certificatesData.certificates = [];
},
},
});
export const {
setMode,
updateSavingStatus,
updateLoadingStatus,
updateSavingImageStatus,
fetchCertificatesSuccess,
createCertificateSuccess,
updateCertificateSuccess,
deleteCertificateSuccess,
} = slice.actions;
export const { reducer } = slice;