// @flow import React from 'react'; import classnames from 'classnames'; import { NavLink, useHistory } from 'react-router-dom'; import ClaimPreviewTile from 'component/claimPreviewTile'; import CollectionPreviewOverlay from 'component/collectionPreviewOverlay'; import TruncatedText from 'component/common/truncated-text'; import CollectionCount from './collectionCount'; import CollectionPrivate from './collectionPrivate'; import CollectionMenuList from 'component/collectionMenuList'; import { formatLbryUrlForWeb } from 'util/url'; import { COLLECTIONS_CONSTS } from 'lbry-redux'; type Props = { uri: string, collectionId: string, collectionName: string, collectionCount: number, editedCollection?: Collection, pendingCollection?: Collection, claim: ?Claim, channelClaim: ?ChannelClaim, collectionItemUrls: Array, resolveUri: (string) => void, isResolvingUri: boolean, thumbnail?: string, title?: string, placeholder: boolean, blackListedOutpoints: Array<{ txid: string, nout: number, }>, filteredOutpoints: Array<{ txid: string, nout: number, }>, blockedChannelUris: Array, isMature?: boolean, showMature: boolean, collectionId: string, deleteCollection: (string) => void, resolveCollectionItems: (any) => void, isResolvingCollectionClaims: boolean, }; function CollectionPreviewTile(props: Props) { const { uri, collectionId, collectionName, collectionCount, isResolvingUri, isResolvingCollectionClaims, collectionItemUrls, claim, resolveCollectionItems, } = props; const { push } = useHistory(); const hasClaim = Boolean(claim); React.useEffect(() => { if (collectionId && hasClaim && resolveCollectionItems) { resolveCollectionItems({ collectionId, page_size: 5 }); } }, [collectionId, hasClaim]); // const signingChannel = claim && claim.signing_channel; let navigateUrl = formatLbryUrlForWeb(collectionItemUrls[0] || '/'); if (collectionId) { const collectionParams = new URLSearchParams(); collectionParams.set(COLLECTIONS_CONSTS.COLLECTION_ID, collectionId); navigateUrl = navigateUrl + `?` + collectionParams.toString(); } function handleClick(e) { if (navigateUrl) { push(navigateUrl); } } const navLinkProps = { to: navigateUrl, onClick: (e) => e.stopPropagation(), }; /* REMOVE IF WORKS let shouldHide = false; if (isMature && !showMature) { // Unfortunately needed until this is resolved // https://github.com/lbryio/lbry-sdk/issues/2785 shouldHide = true; } // This will be replaced once blocking is done at the wallet server level if (claim && !shouldHide && blackListedOutpoints) { shouldHide = blackListedOutpoints.some( (outpoint) => (signingChannel && outpoint.txid === signingChannel.txid && outpoint.nout === signingChannel.nout) || (outpoint.txid === claim.txid && outpoint.nout === claim.nout) ); } // We're checking to see if the stream outpoint // or signing channel outpoint is in the filter list if (claim && !shouldHide && filteredOutpoints) { shouldHide = filteredOutpoints.some( (outpoint) => (signingChannel && outpoint.txid === signingChannel.txid && outpoint.nout === signingChannel.nout) || (outpoint.txid === claim.txid && outpoint.nout === claim.nout) ); } // block stream claims if (claim && !shouldHide && blockedChannelUris.length && signingChannel) { shouldHide = blockedChannelUris.some((blockedUri) => blockedUri === signingChannel.permanent_url); } // block channel claims if we can't control for them in claim search // e.g. fetchRecommendedSubscriptions if (shouldHide) { return null; } */ if (isResolvingUri || isResolvingCollectionClaims) { return (
  • ); } if (uri) { return ; } return (
  • ); } export default CollectionPreviewTile;