import { PARTICIPANT_ID_CHANGED } from '../base/participants';
import { ReducerRegistry } from '../base/redux';

import { LARGE_VIDEO_PARTICIPANT_CHANGED } from './actionTypes';

const INITIAL_STATE = {
    participantId: undefined
};

ReducerRegistry.register(
    'features/largeVideo',
    (state = INITIAL_STATE, action) => {
        switch (action.type) {

        // When conference is joined, we update ID of local participant from
        // default 'local' to real ID. However, in large video we might have
        // already selected 'local' as participant on stage. So in this case we
        // must update ID of participant on stage to match ID in 'participants'
        // state to avoid additional changes in state and (re)renders.
        case PARTICIPANT_ID_CHANGED:
            if (state.participantId === action.oldValue) {
                return {
                    ...state,
                    participantId: action.newValue
                };
            }

            return state;

        case LARGE_VIDEO_PARTICIPANT_CHANGED:
            return {
                ...state,
                participantId: action.participantId
            };

        default:
            return state;
        }
    });
