import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { Logger } from '../../utils/Log'; import { IContact, IContactsState, Presence } from './types'; import { contactsService } from '../../services/contacts-service'; const logger = new Logger('callLogSlice'); const initialState: IContactsState = { loading: false, contacts: [], localContacts: [] } const contactsSlice = createSlice({ name: 'contacts', initialState, reducers: { getContacts(state) { state.loading = true; contactsService.getRosterContacts(); }, getContactsResult(state, action: PayloadAction) { state.loading = false; state.contacts = action.payload; }, updateContactPresence(state, action: PayloadAction<{ presence: Presence, contactJId: string }>) { const { contactJId, presence } = action.payload; const contactsArray = state.contacts; state.contacts = contactsArray.map((item, _i) => item.jId === contactJId ? { ...item, presence } : item ) }, addContactToRoster(state, action: PayloadAction){ contactsService.addContactToRoster(action.payload); }, removeContact(state, action: PayloadAction){ contactsService.removeContact(action.payload); } } }); // Export action creators and reducer export const { getContacts, getContactsResult, updateContactPresence, addContactToRoster, removeContact } = contactsSlice.actions; export default contactsSlice.reducer;