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:
infinite-persistence 2021-11-04 10:10:40 +08:00
parent 531a87e969
commit 59db2860d7
No known key found for this signature in database
GPG key ID: B9C3252EDC3D0AA0
2 changed files with 10 additions and 7 deletions

View file

@ -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) {

View file

@ -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;