vroom-react
Version:
Vroom React UI
53 lines (43 loc) • 1.39 kB
text/typescript
const participantsReducer = (state: any[], action: { type: string, payload: any}) => {
switch (action.type) {
case 'add':
if (action.payload?.email === "bot-recorder@vroom.com") {
return state
}
if (state?.length > 0) {
const nIdx = state.findIndex((i: any) => i.id === action.payload.id)
if (nIdx > -1) {
state[nIdx] = {...state[nIdx], ...action.payload}
return state
}
}
return [...state, action.payload]
case 'remove':
return state.filter(i => i.id !== action.payload.id)
case 'set_video_stream': {
const nIdx = state.findIndex((i: any) => i.id === action.payload.id)
if (action.payload.type === 'video') {
if (nIdx > -1) {
state[nIdx].videoMediaStream = action.payload.mediaStream
} else {
state[state.length] = {
id: action.payload.id,
hasVideo: true,
videoMediaStream: action.payload.mediaStream
}
}
}
return state
}
case 'set_audio_stream': {
const nIdx = state.findIndex((i: any) => i.id === action.payload.id)
if (nIdx > -1 && action.payload.type === 'audio') {
state[nIdx].audioMediaStream = action.payload.mediaStream
}
return state
}
default:
return state
}
}
export default participantsReducer