Fix memo: makeSelectViewCountForUri, makeSelectSubCountForUri
- switch to a lighter selectClaimIdForUri - also, these 2 don't need to memo because they are just simple accessors.
This commit is contained in:
parent
c8ad9718bb
commit
652ec4b69b
8 changed files with 32 additions and 32 deletions
|
@ -53,7 +53,7 @@ export { selectFilteredOutpoints, selectFilteredOutpointMap } from './redux/sele
|
||||||
// selectTrendingUris,
|
// selectTrendingUris,
|
||||||
// selectFetchingTrendingUris,
|
// selectFetchingTrendingUris,
|
||||||
// } from './redux/selectors/homepage';
|
// } from './redux/selectors/homepage';
|
||||||
export { selectViewCount, makeSelectViewCountForUri, makeSelectSubCountForUri } from './redux/selectors/stats';
|
export { selectViewCount, selectViewCountForUri, selectSubCountForUri } from './redux/selectors/stats';
|
||||||
export { selectBanStateForUri } from './redux/selectors/ban';
|
export { selectBanStateForUri } from './redux/selectors/ban';
|
||||||
export {
|
export {
|
||||||
selectHasSyncedWallet,
|
selectHasSyncedWallet,
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
import { createSelector } from 'reselect';
|
// @flow
|
||||||
import { makeSelectClaimForUri } from 'redux/selectors/claims';
|
import { selectClaimIdForUri } from 'redux/selectors/claims';
|
||||||
|
|
||||||
const selectState = state => state.stats || {};
|
type State = { claims: any, stats: any };
|
||||||
export const selectViewCount = createSelector(selectState, state => state.viewCountById);
|
|
||||||
export const selectSubCount = createSelector(selectState, state => state.subCountById);
|
|
||||||
|
|
||||||
export const makeSelectViewCountForUri = uri =>
|
const selectState = (state: State) => state.stats || {};
|
||||||
createSelector(
|
export const selectViewCount = (state: State) => selectState(state).viewCountById;
|
||||||
makeSelectClaimForUri(uri),
|
export const selectSubCount = (state: State) => selectState(state).subCountById;
|
||||||
selectViewCount,
|
|
||||||
(claim, viewCountById) => (claim ? viewCountById[claim.claim_id] || 0 : 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
export const makeSelectSubCountForUri = uri =>
|
export const selectViewCountForUri = (state: State, uri: string) => {
|
||||||
createSelector(
|
const claimId = selectClaimIdForUri(state, uri);
|
||||||
makeSelectClaimForUri(uri),
|
const viewCountById = selectViewCount(state);
|
||||||
selectSubCount,
|
return claimId ? viewCountById[claimId] || 0 : 0;
|
||||||
(claim, subCountById) => (claim ? subCountById[claim.claim_id] || 0 : 0)
|
};
|
||||||
);
|
|
||||||
|
export const selectSubCountForUri = (state: State, uri: string) => {
|
||||||
|
const claimId = selectClaimIdForUri(state, uri);
|
||||||
|
const subCountById = selectSubCount(state);
|
||||||
|
return claimId ? subCountById[claimId] || 0 : 0;
|
||||||
|
};
|
||||||
|
|
|
@ -8,7 +8,7 @@ import {
|
||||||
import { doClearPublish, doPrepareEdit } from 'redux/actions/publish';
|
import { doClearPublish, doPrepareEdit } from 'redux/actions/publish';
|
||||||
import { push } from 'connected-react-router';
|
import { push } from 'connected-react-router';
|
||||||
import ClaimPreviewSubtitle from './view';
|
import ClaimPreviewSubtitle from './view';
|
||||||
import { doFetchSubCount, makeSelectSubCountForUri } from 'lbryinc';
|
import { doFetchSubCount, selectSubCountForUri } from 'lbryinc';
|
||||||
|
|
||||||
const select = (state, props) => {
|
const select = (state, props) => {
|
||||||
const claim = selectClaimForUri(state, props.uri);
|
const claim = selectClaimForUri(state, props.uri);
|
||||||
|
@ -18,7 +18,7 @@ const select = (state, props) => {
|
||||||
claim,
|
claim,
|
||||||
pending: makeSelectClaimIsPending(props.uri)(state),
|
pending: makeSelectClaimIsPending(props.uri)(state),
|
||||||
isLivestream: makeSelectClaimIsStreamPlaceholder(props.uri)(state),
|
isLivestream: makeSelectClaimIsStreamPlaceholder(props.uri)(state),
|
||||||
subCount: isChannel ? makeSelectSubCountForUri(props.uri)(state) : 0,
|
subCount: isChannel ? selectSubCountForUri(state, props.uri) : 0,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import {
|
||||||
} from 'redux/selectors/claims';
|
} from 'redux/selectors/claims';
|
||||||
import { doFileGet } from 'redux/actions/file';
|
import { doFileGet } from 'redux/actions/file';
|
||||||
import { doResolveUri } from 'redux/actions/claims';
|
import { doResolveUri } from 'redux/actions/claims';
|
||||||
import { makeSelectViewCountForUri, selectBanStateForUri } from 'lbryinc';
|
import { selectViewCountForUri, selectBanStateForUri } from 'lbryinc';
|
||||||
import { makeSelectIsActiveLivestream } from 'redux/selectors/livestream';
|
import { makeSelectIsActiveLivestream } from 'redux/selectors/livestream';
|
||||||
import { selectShowMatureContent } from 'redux/selectors/settings';
|
import { selectShowMatureContent } from 'redux/selectors/settings';
|
||||||
import ClaimPreviewTile from './view';
|
import ClaimPreviewTile from './view';
|
||||||
|
@ -35,7 +35,7 @@ const select = (state, props) => {
|
||||||
isMature: makeSelectClaimIsNsfw(props.uri)(state),
|
isMature: makeSelectClaimIsNsfw(props.uri)(state),
|
||||||
isLivestream: makeSelectClaimIsStreamPlaceholder(props.uri)(state),
|
isLivestream: makeSelectClaimIsStreamPlaceholder(props.uri)(state),
|
||||||
isLivestreamActive: makeSelectIsActiveLivestream(props.uri)(state),
|
isLivestreamActive: makeSelectIsActiveLivestream(props.uri)(state),
|
||||||
viewCount: makeSelectViewCountForUri(props.uri)(state),
|
viewCount: selectViewCountForUri(state, props.uri),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { doFetchSubCount, makeSelectSubCountForUri } from 'lbryinc';
|
import { doFetchSubCount, selectSubCountForUri } from 'lbryinc';
|
||||||
import { makeSelectTitleForUri, makeSelectClaimForUri } from 'redux/selectors/claims';
|
import { makeSelectTitleForUri, makeSelectClaimForUri } from 'redux/selectors/claims';
|
||||||
import { makeSelectInsufficientCreditsForUri } from 'redux/selectors/content';
|
import { makeSelectInsufficientCreditsForUri } from 'redux/selectors/content';
|
||||||
import { makeSelectViewersForId } from 'redux/selectors/livestream';
|
import { makeSelectViewersForId } from 'redux/selectors/livestream';
|
||||||
|
@ -10,7 +10,7 @@ const select = (state, props) => {
|
||||||
const viewers = claim && makeSelectViewersForId(claim.claim_id)(state);
|
const viewers = claim && makeSelectViewersForId(claim.claim_id)(state);
|
||||||
const channelClaimId = claim && claim.signing_channel ? claim.signing_channel.claim_id : undefined;
|
const channelClaimId = claim && claim.signing_channel ? claim.signing_channel.claim_id : undefined;
|
||||||
const channelUri = claim && claim.signing_channel ? claim.signing_channel.canonical_url : undefined;
|
const channelUri = claim && claim.signing_channel ? claim.signing_channel.canonical_url : undefined;
|
||||||
const subCount = channelUri && makeSelectSubCountForUri(channelUri)(state);
|
const subCount = channelUri && selectSubCountForUri(state, channelUri);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
viewers,
|
viewers,
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { makeSelectClaimForUri } from 'redux/selectors/claims';
|
import { makeSelectClaimForUri } from 'redux/selectors/claims';
|
||||||
import { doFetchViewCount, makeSelectViewCountForUri } from 'lbryinc';
|
import { doFetchViewCount, selectViewCountForUri } from 'lbryinc';
|
||||||
import { doAnalyticsView } from 'redux/actions/app';
|
import { doAnalyticsView } from 'redux/actions/app';
|
||||||
import FileViewCount from './view';
|
import FileViewCount from './view';
|
||||||
|
|
||||||
const select = (state, props) => ({
|
const select = (state, props) => ({
|
||||||
claim: makeSelectClaimForUri(props.uri)(state),
|
claim: makeSelectClaimForUri(props.uri)(state),
|
||||||
viewCount: makeSelectViewCountForUri(props.uri)(state),
|
viewCount: selectViewCountForUri(state, props.uri),
|
||||||
});
|
});
|
||||||
|
|
||||||
const perform = (dispatch) => ({
|
const perform = (dispatch) => ({
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { makeSelectClaimForUri } from 'redux/selectors/claims';
|
import { selectClaimForUri } from 'redux/selectors/claims';
|
||||||
import { makeSelectViewCountForUri } from 'lbryinc';
|
import { selectViewCountForUri } from 'lbryinc';
|
||||||
import { selectLanguage } from 'redux/selectors/settings';
|
import { selectLanguage } from 'redux/selectors/settings';
|
||||||
import FileViewCountInline from './view';
|
import FileViewCountInline from './view';
|
||||||
|
|
||||||
const select = (state, props) => {
|
const select = (state, props) => {
|
||||||
return {
|
return {
|
||||||
claim: makeSelectClaimForUri(props.uri)(state),
|
claim: selectClaimForUri(state, props.uri),
|
||||||
viewCount: makeSelectViewCountForUri(props.uri)(state),
|
viewCount: selectViewCountForUri(state, props.uri),
|
||||||
lang: selectLanguage(state),
|
lang: selectLanguage(state),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,7 @@ import {
|
||||||
makeSelectClaimIsPending,
|
makeSelectClaimIsPending,
|
||||||
} from 'redux/selectors/claims';
|
} from 'redux/selectors/claims';
|
||||||
import { selectMyUnpublishedCollections } from 'redux/selectors/collections';
|
import { selectMyUnpublishedCollections } from 'redux/selectors/collections';
|
||||||
import { selectBlackListedOutpoints, doFetchSubCount, makeSelectSubCountForUri } from 'lbryinc';
|
import { selectBlackListedOutpoints, doFetchSubCount, selectSubCountForUri } from 'lbryinc';
|
||||||
import { selectYoutubeChannels } from 'redux/selectors/user';
|
import { selectYoutubeChannels } from 'redux/selectors/user';
|
||||||
import { selectIsSubscribedForUri } from 'redux/selectors/subscriptions';
|
import { selectIsSubscribedForUri } from 'redux/selectors/subscriptions';
|
||||||
import { selectModerationBlockList } from 'redux/selectors/comments';
|
import { selectModerationBlockList } from 'redux/selectors/comments';
|
||||||
|
@ -29,7 +29,7 @@ const select = (state, props) => {
|
||||||
claim,
|
claim,
|
||||||
isSubscribed: selectIsSubscribedForUri(state, props.uri),
|
isSubscribed: selectIsSubscribedForUri(state, props.uri),
|
||||||
blackListedOutpoints: selectBlackListedOutpoints(state),
|
blackListedOutpoints: selectBlackListedOutpoints(state),
|
||||||
subCount: makeSelectSubCountForUri(props.uri)(state),
|
subCount: selectSubCountForUri(state, props.uri),
|
||||||
pending: makeSelectClaimIsPending(props.uri)(state),
|
pending: makeSelectClaimIsPending(props.uri)(state),
|
||||||
youtubeChannels: selectYoutubeChannels(state),
|
youtubeChannels: selectYoutubeChannels(state),
|
||||||
blockedChannels: selectModerationBlockList(state),
|
blockedChannels: selectModerationBlockList(state),
|
||||||
|
|
Loading…
Add table
Reference in a new issue