changes after review
This commit is contained in:
parent
ffbe3dcf8a
commit
e1f2d8938b
8 changed files with 23 additions and 32 deletions
|
@ -1,9 +1,10 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { selectChannelIsBlocked, doToggleBlockChannel, doToast } from 'lbry-redux';
|
import { selectChannelIsBlocked, doToggleBlockChannel, doToast, makeSelectShortUrlForUri } from 'lbry-redux';
|
||||||
import BlockButton from './view';
|
import BlockButton from './view';
|
||||||
|
|
||||||
const select = (state, props) => ({
|
const select = (state, props) => ({
|
||||||
channelIsBlocked: selectChannelIsBlocked(props.uri)(state),
|
channelIsBlocked: selectChannelIsBlocked(props.uri)(state),
|
||||||
|
shortUrl: makeSelectShortUrlForUri(props.uri)(state),
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(
|
export default connect(
|
||||||
|
|
|
@ -7,6 +7,7 @@ import useHover from 'util/use-hover';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
uri: string,
|
uri: string,
|
||||||
|
shortUrl: string,
|
||||||
isSubscribed: boolean,
|
isSubscribed: boolean,
|
||||||
toggleBlockChannel: (uri: string) => void,
|
toggleBlockChannel: (uri: string) => void,
|
||||||
channelIsBlocked: boolean,
|
channelIsBlocked: boolean,
|
||||||
|
@ -14,7 +15,7 @@ type Props = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function BlockButton(props: Props) {
|
export default function BlockButton(props: Props) {
|
||||||
const { uri, toggleBlockChannel, channelIsBlocked, doToast } = props;
|
const { uri, shortUrl, toggleBlockChannel, channelIsBlocked, doToast } = props;
|
||||||
|
|
||||||
const blockRef = useRef();
|
const blockRef = useRef();
|
||||||
const isHovering = useHover(blockRef);
|
const isHovering = useHover(blockRef);
|
||||||
|
@ -25,13 +26,13 @@ export default function BlockButton(props: Props) {
|
||||||
<Button
|
<Button
|
||||||
ref={blockRef}
|
ref={blockRef}
|
||||||
iconColor="red"
|
iconColor="red"
|
||||||
icon={blockedOverride ? ICONS.UNBLOCK : ICONS.BLOCK}
|
icon={ICONS.BLOCK}
|
||||||
button={'alt'}
|
button={'alt'}
|
||||||
label={blockedOverride || blockLabel}
|
label={blockedOverride || blockLabel}
|
||||||
onClick={e => {
|
onClick={e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
if (!channelIsBlocked) {
|
if (!channelIsBlocked) {
|
||||||
doToast({ message: `Blocked ${uri}`, linkText: 'Manage', linkTarget: `/${PAGES.BLOCKED}` });
|
doToast({ message: `Blocked ${shortUrl}`, linkText: 'Manage', linkTarget: `/${PAGES.BLOCKED}` });
|
||||||
}
|
}
|
||||||
toggleBlockChannel(uri);
|
toggleBlockChannel(uri);
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -36,7 +36,7 @@ function ChannelContent(props: Props) {
|
||||||
|
|
||||||
{!fetching && channelIsBlocked && (
|
{!fetching && channelIsBlocked && (
|
||||||
<div className="card--section">
|
<div className="card--section">
|
||||||
<h2 className="card__content help">{__('You have blocked this channel content.')}</h2>
|
<h2 className="help">{__('You have blocked this channel content.')}</h2>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
|
@ -19,15 +19,15 @@ function ChannelThumbnail(props: Props) {
|
||||||
const { channelName } = parseURI(uri);
|
const { channelName } = parseURI(uri);
|
||||||
const initializer = channelName.charCodeAt(0) - 65; // will be between 0 and 57
|
const initializer = channelName.charCodeAt(0) - 65; // will be between 0 and 57
|
||||||
const colorClassName = `channel-thumbnail__default--${initializer % 4}`;
|
const colorClassName = `channel-thumbnail__default--${initializer % 4}`;
|
||||||
|
const showThumb = !obscure && !!thumbnail;
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={classnames('channel-thumbnail', className, {
|
className={classnames('channel-thumbnail', className, {
|
||||||
[colorClassName]: !thumbnail,
|
[colorClassName]: !showThumb,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{(!thumbnail || obscure) && <img className="channel-thumbnail__default" src={thumbnailPreview || Gerbil} />}
|
{!showThumb && <img className="channel-thumbnail__default" src={thumbnailPreview || Gerbil} />}
|
||||||
{!obscure && thumbnail && <img className="channel-thumbnail__custom" src={thumbnailPreview || thumbnail} />}
|
{showThumb && <img className="channel-thumbnail__custom" src={thumbnailPreview || thumbnail} />}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,6 +107,7 @@ function ClaimPreview(props: Props) {
|
||||||
shouldHide = blockedChannelUris.some(blockedUri => blockedUri === signingChannel.permanent_url);
|
shouldHide = blockedChannelUris.some(blockedUri => blockedUri === signingChannel.permanent_url);
|
||||||
}
|
}
|
||||||
// block channel claims if we can't control for them in claim search
|
// block channel claims if we can't control for them in claim search
|
||||||
|
// e.g. fetchRecommendedSubscriptions
|
||||||
if (claim && isChannel && !shouldHide && !showUserBlocked && blockedChannelUris.length && isChannel) {
|
if (claim && isChannel && !shouldHide && !showUserBlocked && blockedChannelUris.length && isChannel) {
|
||||||
shouldHide = blockedChannelUris.some(blockedUri => blockedUri === claim.permanent_url);
|
shouldHide = blockedChannelUris.some(blockedUri => blockedUri === claim.permanent_url);
|
||||||
}
|
}
|
||||||
|
@ -168,22 +169,12 @@ function ClaimPreview(props: Props) {
|
||||||
{claim ? <TruncatedText text={title || claim.name} lines={1} /> : <span>{__('Nothing here')}</span>}
|
{claim ? <TruncatedText text={title || claim.name} lines={1} /> : <span>{__('Nothing here')}</span>}
|
||||||
</div>
|
</div>
|
||||||
{!hideActions && (
|
{!hideActions && (
|
||||||
<div className={'claim-preview-actions'}>
|
<div className={'card__actions'}>
|
||||||
{isChannel && !channelIsBlocked && (
|
{isChannel && !channelIsBlocked && (
|
||||||
<div className={'claim-preview__button'}>
|
|
||||||
<SubscribeButton uri={uri.startsWith('lbry://') ? uri : `lbry://${uri}`} />
|
<SubscribeButton uri={uri.startsWith('lbry://') ? uri : `lbry://${uri}`} />
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{isChannel && !isSubscribed && (
|
|
||||||
<div className={'claim-preview__button'}>
|
|
||||||
<BlockButton uri={uri.startsWith('lbry://') ? uri : `lbry://${uri}`} />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{!isChannel && (
|
|
||||||
<div className={'claim-preview__button'}>
|
|
||||||
<FileProperties uri={uri} />
|
|
||||||
</div>
|
|
||||||
)}
|
)}
|
||||||
|
{isChannel && !isSubscribed && <BlockButton uri={uri.startsWith('lbry://') ? uri : `lbry://${uri}`} />}
|
||||||
|
{!isChannel && <FileProperties uri={uri} />}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@ function ListBlocked(props: Props) {
|
||||||
const { uris } = props;
|
const { uris } = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page notContained>
|
<Page>
|
||||||
{uris && uris.length ? (
|
{uris && uris.length ? (
|
||||||
<div className="card">
|
<div className="card">
|
||||||
<ClaimList
|
<ClaimList
|
||||||
|
@ -25,9 +25,8 @@ function ListBlocked(props: Props) {
|
||||||
) : (
|
) : (
|
||||||
<div className="main--empty">
|
<div className="main--empty">
|
||||||
<section className="card card--section">
|
<section className="card card--section">
|
||||||
<header className="card__header">
|
<h2 className="card__title">{__('You aren’t blocking any channels')}</h2>
|
||||||
<h2 className="card__title">{__('It looks like you have no blocked channels.')}</h2>
|
<p className="card__subtitle">When you block a channel, all content from that channel will be hidden.</p>
|
||||||
</header>
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -8,7 +8,7 @@ import {
|
||||||
notificationsReducer,
|
notificationsReducer,
|
||||||
tagsReducer,
|
tagsReducer,
|
||||||
commentReducer,
|
commentReducer,
|
||||||
blockChannelReducer,
|
blockedReducer,
|
||||||
publishReducer,
|
publishReducer,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
import {
|
import {
|
||||||
|
@ -26,7 +26,6 @@ import contentReducer from 'redux/reducers/content';
|
||||||
import settingsReducer from 'redux/reducers/settings';
|
import settingsReducer from 'redux/reducers/settings';
|
||||||
import subscriptionsReducer from 'redux/reducers/subscriptions';
|
import subscriptionsReducer from 'redux/reducers/subscriptions';
|
||||||
|
|
||||||
|
|
||||||
export default history =>
|
export default history =>
|
||||||
combineReducers({
|
combineReducers({
|
||||||
router: connectRouter(history),
|
router: connectRouter(history),
|
||||||
|
@ -48,7 +47,7 @@ export default history =>
|
||||||
stats: statsReducer,
|
stats: statsReducer,
|
||||||
subscriptions: subscriptionsReducer,
|
subscriptions: subscriptionsReducer,
|
||||||
tags: tagsReducer,
|
tags: tagsReducer,
|
||||||
blockedChannels: blockChannelReducer,
|
blocked: blockedReducer,
|
||||||
user: userReducer,
|
user: userReducer,
|
||||||
wallet: walletReducer,
|
wallet: walletReducer,
|
||||||
});
|
});
|
||||||
|
|
|
@ -48,7 +48,7 @@ const appFilter = createFilter('app', ['hasClickedComment', 'searchOptionsExpand
|
||||||
const walletFilter = createFilter('wallet', ['receiveAddress']);
|
const walletFilter = createFilter('wallet', ['receiveAddress']);
|
||||||
const searchFilter = createFilter('search', ['options']);
|
const searchFilter = createFilter('search', ['options']);
|
||||||
const tagsFilter = createFilter('tags', ['followedTags']);
|
const tagsFilter = createFilter('tags', ['followedTags']);
|
||||||
const blockedFilter = createFilter('blockedChannels', ['blockedChannels']);
|
const blockedFilter = createFilter('blocked', ['blockedChannels']);
|
||||||
const whiteListedReducers = [
|
const whiteListedReducers = [
|
||||||
// @if TARGET='app'
|
// @if TARGET='app'
|
||||||
'publish',
|
'publish',
|
||||||
|
@ -60,7 +60,7 @@ const whiteListedReducers = [
|
||||||
'app',
|
'app',
|
||||||
'search',
|
'search',
|
||||||
'tags',
|
'tags',
|
||||||
'blockedChannels',
|
'blocked',
|
||||||
];
|
];
|
||||||
|
|
||||||
const transforms = [
|
const transforms = [
|
||||||
|
|
Loading…
Reference in a new issue