lbry-desktop/ui/redux/reducers/livestream.js

60 lines
2.1 KiB
JavaScript
Raw Normal View History

2021-04-23 05:04:11 +02:00
// @flow
import * as ACTIONS from 'constants/action_types';
import { handleActions } from 'util/redux-utils';
const defaultState: LivestreamState = {
2021-04-23 19:11:53 +02:00
fetchingById: {},
2021-06-17 20:55:23 +02:00
viewersById: {},
fetchingActiveLivestreams: false,
activeLivestreams: null,
lastFetchedActiveLivestreams: 0,
2021-04-23 05:04:11 +02:00
};
export default handleActions(
{
[ACTIONS.FETCH_NO_SOURCE_CLAIMS_STARTED]: (state: LivestreamState, action: any): LivestreamState => {
const claimId = action.data;
2021-04-23 19:11:53 +02:00
const newIdsFetching = Object.assign({}, state.fetchingById);
2021-04-23 05:04:11 +02:00
newIdsFetching[claimId] = true;
2021-04-23 19:11:53 +02:00
return { ...state, fetchingById: newIdsFetching };
2021-04-23 05:04:11 +02:00
},
[ACTIONS.FETCH_NO_SOURCE_CLAIMS_COMPLETED]: (state: LivestreamState, action: any): LivestreamState => {
const claimId = action.data;
2021-04-23 19:11:53 +02:00
const newIdsFetching = Object.assign({}, state.fetchingById);
2021-04-23 05:04:11 +02:00
newIdsFetching[claimId] = false;
2021-04-23 19:11:53 +02:00
return { ...state, fetchingById: newIdsFetching };
2021-04-23 05:04:11 +02:00
},
[ACTIONS.FETCH_NO_SOURCE_CLAIMS_FAILED]: (state: LivestreamState, action: any) => {
const claimId = action.data;
2021-04-23 19:11:53 +02:00
const newIdsFetching = Object.assign({}, state.fetchingById);
2021-04-23 05:04:11 +02:00
newIdsFetching[claimId] = false;
2021-04-23 19:11:53 +02:00
return { ...state, fetchingById: newIdsFetching };
2021-04-23 05:04:11 +02:00
},
2021-06-17 20:55:23 +02:00
[ACTIONS.VIEWERS_RECEIVED]: (state: LivestreamState, action: any) => {
const { connected, claimId } = action.data;
const newViewersById = Object.assign({}, state.viewersById);
newViewersById[claimId] = connected;
return { ...state, viewersById: newViewersById };
},
[ACTIONS.FETCH_ACTIVE_LIVESTREAMS_STARTED]: (state: LivestreamState) => {
return { ...state, fetchingActiveLivestreams: true };
},
[ACTIONS.FETCH_ACTIVE_LIVESTREAMS_FAILED]: (state: LivestreamState) => {
return { ...state, fetchingActiveLivestreams: false };
},
[ACTIONS.FETCH_ACTIVE_LIVESTREAMS_COMPLETED]: (state: LivestreamState, action: any) => {
const { activeLivestreams, lastFetchedActiveLivestreams } = action.data;
return {
...state,
fetchingActiveLivestreams: false,
activeLivestreams,
lastFetchedActiveLivestreams,
};
},
2021-04-23 05:04:11 +02:00
},
defaultState
);