import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { Logger } from '../../utils/Log'; import { IInvitation, IInvitationsState } from './types'; import { invitationsService } from '../../services/invitations-service'; const logger = new Logger('invitationsSlice'); const initialState: IInvitationsState = { loading: false, sentInvitations: [], receivedInvitations: [] } const invitationsSlice = createSlice({ name: 'invitations', initialState, reducers: { getInvitations(state){ state.loading = true; invitationsService.getInvitations(); }, getReceivedInvitationsResult(state, action: PayloadAction){ state.loading = false; state.receivedInvitations = action.payload; }, getSentInvitationsResult(state, action: PayloadAction){ state.loading = false; state.sentInvitations = action.payload; }, acceptInvitation(state, action: PayloadAction){ state.loading = true; invitationsService.acceptInvitation(action.payload); }, declineInvitation(state, action: PayloadAction){ state.loading = true; invitationsService.declineInvitation(action.payload); }, cancelInvitation(state, action: PayloadAction){ state.loading = true; invitationsService.cancelInvitation(action.payload); }, sendInvitation(state, action: PayloadAction){ state.loading = true; invitationsService.sendInvitation(action.payload); }, sendInvitationByEmail(state, action: PayloadAction){ state.loading = true; invitationsService.sendInvitationByEmail(action.payload); }, getPendingContactInvitation(state){ invitationsService.getPendingContactInvitation(); } } }); // Export action creators and reducer export const { getInvitations, getReceivedInvitationsResult, getSentInvitationsResult, acceptInvitation, declineInvitation, cancelInvitation, sendInvitation, sendInvitationByEmail, getPendingContactInvitation } = invitationsSlice.actions; export default invitationsSlice.reducer;