import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { Logger } from '../../utils/Log'; import { IConference, IConferenceParticipants, IConferenceState } from './types'; import { conferenceService } from '../../services/calls/conference'; import { currentCallService } from '../../services/calls'; const logger = new Logger('invitationsSlice'); const initialState: IConferenceState = { isConferenceJoinable: false, isLocalVideoEnabled: false, areAllConfUsersMuted: false } const conferenceSlice = createSlice({ name: 'conference', initialState, reducers: { setCurrentConferenceCall(state, action: PayloadAction) { state.currentConferenceCall = action.payload; }, startConference(state, action: PayloadAction) { conferenceService.startConference(action.payload); }, joinConference(state, action: PayloadAction) { conferenceService.joinConference(action.payload); }, addVideoToConference() { conferenceService.addVideoToConference(); }, removeVideoFromConference() { conferenceService.removeVideoFromConference(); }, setIsIsLocalVideoEnabled(state, action: PayloadAction) { state.isLocalVideoEnabled = action.payload; }, endConference(state, action: PayloadAction) { conferenceService.endConferenceCall(action.payload); }, hangUpMySelf(state, action: PayloadAction){ conferenceService.hangUpMySelf(action.payload); }, declineConference(state, action: PayloadAction) { conferenceService.declineCall(action.payload); }, checkConferenceAvailability(state, action: PayloadAction) { conferenceService.CheckConferenceAvailability(action.payload); }, checkConferenceCapabilityResult(state, action: PayloadAction) { state.isConferenceJoinable = action.payload; }, hideActiveCurrentConference(state) { currentCallService.hideActiveCallView() }, checkIfAllUserAreMuted(state, action: PayloadAction) { // conferenceService.checkIfAllUserAreMuted(bubbleId); }, checkIfAllUserAreMutedResult(state, action: PayloadAction) { state.areAllConfUsersMuted = action.payload; }, muteAllParticipants(state, action: PayloadAction) { conferenceService.muteAllParticipants(action.payload); }, unMuteAllParticipants(state, action: PayloadAction) { conferenceService.unMuteAllParticipants(action.payload); }, setConferenceParticipants(state, action: PayloadAction) { if (state.currentConferenceCall) { state.currentConferenceCall.attendees = action.payload; } }, delegateConference(state, action:PayloadAction<{conferenceRoomId: string, participantId: string}>){ conferenceService.delegateConference(action.payload.conferenceRoomId, action.payload.participantId) }, lockConference(state, action:PayloadAction){ conferenceService.lockConference(action.payload); } } }); // Export action creators and reducer export const { setCurrentConferenceCall, startConference, joinConference, addVideoToConference, removeVideoFromConference, setIsIsLocalVideoEnabled, endConference, hangUpMySelf, declineConference, checkConferenceAvailability, checkConferenceCapabilityResult, hideActiveCurrentConference, checkIfAllUserAreMuted, checkIfAllUserAreMutedResult, muteAllParticipants, unMuteAllParticipants, setConferenceParticipants, delegateConference, lockConference } = conferenceSlice.actions; export default conferenceSlice.reducer;