5098b7cd87
## Issues Ad-filtering: - Filtering was done whether or not ads are injected. - Constants are repeatedly calculated. - No short-circuiting in the for-loop. - No memoization (being called 5-6 times on average due to redux updates, can't avoid that). Others: - Potentially passing null claimID to recsys (I think this is the issue that Johnny reported in Slack). ## Changes - Moved 1-time calculations outside of the function. - Optimized the filtering function and memoize it. - Reduce unnecessary props since we are passing the whole `Claim` object already. - Fix recsys being called when claim is not resolved yet (null claimId). - Move away from the incorrect `makeSelect*` selectors.
21 lines
863 B
JavaScript
21 lines
863 B
JavaScript
import { connect } from 'react-redux';
|
|
import { selectClaimForUri } from 'redux/selectors/claims';
|
|
import { doFetchRecommendedContent } from 'redux/actions/search';
|
|
import { selectRecommendedContentForUri, selectIsSearching } from 'redux/selectors/search';
|
|
import { selectUserVerifiedEmail } from 'redux/selectors/user';
|
|
import RecommendedContent from './view';
|
|
|
|
const select = (state, props) => {
|
|
const recommendedContentUris = selectRecommendedContentForUri(state, props.uri);
|
|
const nextRecommendedUri = recommendedContentUris && recommendedContentUris[0];
|
|
|
|
return {
|
|
claim: selectClaimForUri(state, props.uri),
|
|
recommendedContentUris,
|
|
nextRecommendedUri,
|
|
isSearching: selectIsSearching(state),
|
|
isAuthenticated: selectUserVerifiedEmail(state),
|
|
};
|
|
};
|
|
|
|
export default connect(select, { doFetchRecommendedContent })(RecommendedContent);
|