Comments: use the lighter selectMyClaimIdsRaw
`selectMyActiveClaims` includes `byId`, which gets invalidated on each resolve. Having this as an input selector breaks memoization. For the case of comment-filtering, we don't really care about pending or abandoned own claims (I think), so just grab the raw IDs.
This commit is contained in:
parent
531a87e969
commit
59db2860d7
2 changed files with 10 additions and 7 deletions
|
@ -143,6 +143,9 @@ export const makeSelectClaimForUri = (uri: string, returnRepost: boolean = true)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Returns your claim IDs without handling pending and abandoned claims.
|
||||||
|
export const selectMyClaimIdsRaw = (state: State) => selectState(state).myClaims;
|
||||||
|
|
||||||
export const selectMyClaimsRaw = createSelector(selectState, selectClaimsById, (state, byId) => {
|
export const selectMyClaimsRaw = createSelector(selectState, selectClaimsById, (state, byId) => {
|
||||||
const ids = state.myClaims;
|
const ids = state.myClaims;
|
||||||
if (!ids) {
|
if (!ids) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { createCachedSelector } from 're-reselect';
|
||||||
import { selectMutedChannels } from 'redux/selectors/blocked';
|
import { selectMutedChannels } from 'redux/selectors/blocked';
|
||||||
import { selectShowMatureContent } from 'redux/selectors/settings';
|
import { selectShowMatureContent } from 'redux/selectors/settings';
|
||||||
import { selectBlacklistedOutpointMap, selectFilteredOutpointMap } from 'lbryinc';
|
import { selectBlacklistedOutpointMap, selectFilteredOutpointMap } from 'lbryinc';
|
||||||
import { selectClaimsById, selectMyActiveClaims } from 'redux/selectors/claims';
|
import { selectClaimsById, selectMyClaimIdsRaw } from 'redux/selectors/claims';
|
||||||
import { isClaimNsfw } from 'util/claim';
|
import { isClaimNsfw } from 'util/claim';
|
||||||
|
|
||||||
type State = { comments: CommentsState };
|
type State = { comments: CommentsState };
|
||||||
|
@ -180,7 +180,7 @@ export const makeSelectCommentIdsForUri = (uri: string) =>
|
||||||
|
|
||||||
const filterCommentsDepOnList = {
|
const filterCommentsDepOnList = {
|
||||||
claimsById: selectClaimsById,
|
claimsById: selectClaimsById,
|
||||||
myClaims: selectMyActiveClaims,
|
myClaimIds: selectMyClaimIdsRaw,
|
||||||
mutedChannels: selectMutedChannels,
|
mutedChannels: selectMutedChannels,
|
||||||
personalBlockList: selectModerationBlockList,
|
personalBlockList: selectModerationBlockList,
|
||||||
blacklistedMap: selectBlacklistedOutpointMap,
|
blacklistedMap: selectBlacklistedOutpointMap,
|
||||||
|
@ -258,7 +258,7 @@ export const selectRepliesForParentId = createCachedSelector(
|
||||||
*
|
*
|
||||||
* @param comments List of comments to filter.
|
* @param comments List of comments to filter.
|
||||||
* @param claimId The claim that `comments` reside in.
|
* @param claimId The claim that `comments` reside in.
|
||||||
* @oaram filterInputs Values returned by filterCommentsDepOnList.
|
* @param filterInputs Values returned by filterCommentsDepOnList.
|
||||||
*/
|
*/
|
||||||
const filterComments = (comments: Array<Comment>, claimId?: string, filterInputs: any) => {
|
const filterComments = (comments: Array<Comment>, claimId?: string, filterInputs: any) => {
|
||||||
const filterProps = filterInputs.reduce(function (acc, cur, i) {
|
const filterProps = filterInputs.reduce(function (acc, cur, i) {
|
||||||
|
@ -268,7 +268,7 @@ const filterComments = (comments: Array<Comment>, claimId?: string, filterInputs
|
||||||
|
|
||||||
const {
|
const {
|
||||||
claimsById,
|
claimsById,
|
||||||
myClaims,
|
myClaimIds,
|
||||||
mutedChannels,
|
mutedChannels,
|
||||||
personalBlockList,
|
personalBlockList,
|
||||||
blacklistedMap,
|
blacklistedMap,
|
||||||
|
@ -287,8 +287,8 @@ const filterComments = (comments: Array<Comment>, claimId?: string, filterInputs
|
||||||
|
|
||||||
// Return comment if `channelClaim` doesn't exist so the component knows to resolve the author
|
// Return comment if `channelClaim` doesn't exist so the component knows to resolve the author
|
||||||
if (channelClaim) {
|
if (channelClaim) {
|
||||||
if (myClaims && myClaims.size > 0) {
|
if (myClaimIds && myClaimIds.size > 0) {
|
||||||
const claimIsMine = channelClaim.is_my_output || myClaims.has(channelClaim.claim_id);
|
const claimIsMine = channelClaim.is_my_output || myClaimIds.includes(channelClaim.claim_id);
|
||||||
if (claimIsMine) {
|
if (claimIsMine) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ const filterComments = (comments: Array<Comment>, claimId?: string, filterInputs
|
||||||
}
|
}
|
||||||
|
|
||||||
if (claimId) {
|
if (claimId) {
|
||||||
const claimIdIsMine = myClaims && myClaims.size > 0 && myClaims.has(claimId);
|
const claimIdIsMine = myClaimIds && myClaimIds.size > 0 && myClaimIds.includes(claimId);
|
||||||
if (!claimIdIsMine) {
|
if (!claimIdIsMine) {
|
||||||
if (personalBlockList.includes(comment.channel_url)) {
|
if (personalBlockList.includes(comment.channel_url)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue