0f1d4039a9
- selectMyChannelClaims depends on `byId`, which currently is always invalidated per update, so it is not memoized. - Most of the use-cases just needs the ID or the length of the array anyways, so avoid generating a Claim array (in selectMyChannelClaims) unnecessarily -- the client need to reduce it back down to IDs again :/ - The simpler boolean also removes the need to memoize the selector, which saves a bit of memory.
35 lines
1.4 KiB
JavaScript
35 lines
1.4 KiB
JavaScript
import { connect } from 'react-redux';
|
|
import { selectHasChannels, selectFetchingMyChannels } from 'redux/selectors/claims';
|
|
import { doClearPublish } from 'redux/actions/publish';
|
|
import { selectActiveChannelClaim } from 'redux/selectors/app';
|
|
import { doFetchNoSourceClaims } from 'redux/actions/livestream';
|
|
import {
|
|
makeSelectPendingLivestreamsForChannelId,
|
|
makeSelectLivestreamsForChannelId,
|
|
makeSelectIsFetchingLivestreams,
|
|
} from 'redux/selectors/livestream';
|
|
import LivestreamSetupPage from './view';
|
|
import { push } from 'connected-react-router';
|
|
|
|
const select = (state) => {
|
|
const activeChannelClaim = selectActiveChannelClaim(state);
|
|
const { claim_id: channelId, name: channelName } = activeChannelClaim || {};
|
|
return {
|
|
channelName,
|
|
channelId,
|
|
hasChannels: selectHasChannels(state),
|
|
fetchingChannels: selectFetchingMyChannels(state),
|
|
activeChannelClaim,
|
|
myLivestreamClaims: makeSelectLivestreamsForChannelId(channelId)(state),
|
|
pendingClaims: makeSelectPendingLivestreamsForChannelId(channelId)(state),
|
|
fetchingLivestreams: makeSelectIsFetchingLivestreams(channelId)(state),
|
|
};
|
|
};
|
|
const perform = (dispatch) => ({
|
|
doNewLivestream: (path) => {
|
|
dispatch(doClearPublish());
|
|
dispatch(push(path));
|
|
},
|
|
fetchNoSourceClaims: (id) => dispatch(doFetchNoSourceClaims(id)),
|
|
});
|
|
export default connect(select, perform)(LivestreamSetupPage);
|