You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
2.7 KiB
129 lines
2.7 KiB
const initialState = {};
|
|
|
|
const consumers = (state = initialState, action) =>
|
|
{
|
|
switch (action.type)
|
|
{
|
|
case 'SET_ROOM_STATE':
|
|
{
|
|
const roomState = action.payload.state;
|
|
|
|
if (roomState === 'closed')
|
|
return {};
|
|
else
|
|
return state;
|
|
}
|
|
|
|
case 'ADD_CONSUMER':
|
|
{
|
|
const { consumer } = action.payload;
|
|
|
|
return { ...state, [consumer.id]: consumer };
|
|
}
|
|
|
|
case 'REMOVE_CONSUMER':
|
|
{
|
|
const { consumerId } = action.payload;
|
|
const newState = { ...state };
|
|
|
|
delete newState[consumerId];
|
|
|
|
return newState;
|
|
}
|
|
|
|
case 'SET_CONSUMER_PAUSED':
|
|
{
|
|
const { consumerId, originator } = action.payload;
|
|
const consumer = state[consumerId];
|
|
let newConsumer;
|
|
|
|
if (originator === 'local')
|
|
newConsumer = { ...consumer, locallyPaused: true };
|
|
else
|
|
newConsumer = { ...consumer, remotelyPaused: true };
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
case 'SET_CONSUMER_RESUMED':
|
|
{
|
|
const { consumerId, originator } = action.payload;
|
|
const consumer = state[consumerId];
|
|
let newConsumer;
|
|
|
|
if (originator === 'local')
|
|
newConsumer = { ...consumer, locallyPaused: false };
|
|
else
|
|
newConsumer = { ...consumer, remotelyPaused: false };
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
case 'SET_CONSUMER_CURRENT_LAYERS':
|
|
{
|
|
const { consumerId, spatialLayer, temporalLayer } = action.payload;
|
|
const consumer = state[consumerId];
|
|
const newConsumer =
|
|
{
|
|
...consumer,
|
|
currentSpatialLayer : spatialLayer,
|
|
currentTemporalLayer : temporalLayer
|
|
};
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
case 'SET_CONSUMER_PREFERRED_LAYERS':
|
|
{
|
|
const { consumerId, spatialLayer, temporalLayer } = action.payload;
|
|
const consumer = state[consumerId];
|
|
const newConsumer =
|
|
{
|
|
...consumer,
|
|
preferredSpatialLayer : spatialLayer,
|
|
preferredTemporalLayer : temporalLayer
|
|
};
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
case 'SET_CONSUMER_PRIORITY':
|
|
{
|
|
const { consumerId, priority } = action.payload;
|
|
const consumer = state[consumerId];
|
|
const newConsumer = { ...consumer, priority };
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
case 'SET_CONSUMER_TRACK':
|
|
{
|
|
const { consumerId, track } = action.payload;
|
|
const consumer = state[consumerId];
|
|
const newConsumer = { ...consumer, track };
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
case 'SET_CONSUMER_SCORE':
|
|
{
|
|
const { consumerId, score } = action.payload;
|
|
const consumer = state[consumerId];
|
|
|
|
if (!consumer)
|
|
return state;
|
|
|
|
const newConsumer = { ...consumer, score };
|
|
|
|
return { ...state, [consumerId]: newConsumer };
|
|
}
|
|
|
|
default:
|
|
{
|
|
return state;
|
|
}
|
|
}
|
|
};
|
|
|
|
export default consumers;
|