2020-02-26 19:39:03 +01:00
|
|
|
// @flow
|
2021-12-20 21:35:59 +01:00
|
|
|
import { CUSTOM_HOMEPAGE, SIMPLE_SITE, SITE_NAME } from 'config';
|
2021-10-17 10:36:14 +02:00
|
|
|
import { parseURI } from 'util/lbryURI';
|
2021-12-20 21:35:59 +01:00
|
|
|
import * as CS from 'constants/claim_search';
|
|
|
|
import COMMUNITY_CHANNELS from 'constants/community_channels';
|
2020-03-12 02:43:52 +01:00
|
|
|
import Button from 'component/button';
|
2020-04-13 21:16:07 +02:00
|
|
|
import Card from 'component/common/card';
|
2021-12-20 21:35:59 +01:00
|
|
|
import ClaimListDiscover from 'component/claimListDiscover';
|
|
|
|
import Nag from 'component/common/nag';
|
|
|
|
import React from 'react';
|
2020-02-26 19:39:03 +01:00
|
|
|
|
|
|
|
type Props = {
|
2020-11-10 17:07:00 +01:00
|
|
|
homepageData: any,
|
2021-12-20 21:35:59 +01:00
|
|
|
language: string,
|
2021-04-25 07:31:19 +02:00
|
|
|
prefsReady: boolean,
|
2021-12-20 21:35:59 +01:00
|
|
|
subscribedChannels: Array<Subscription>,
|
|
|
|
channelSubscribe: (string, string) => void,
|
|
|
|
onContinue: () => void,
|
2020-02-26 19:39:03 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
function UserChannelFollowIntro(props: Props) {
|
2021-12-20 21:35:59 +01:00
|
|
|
const { homepageData, language, prefsReady, subscribedChannels, channelSubscribe, onContinue } = props;
|
|
|
|
|
2021-09-29 21:22:46 +02:00
|
|
|
const { PRIMARY_CONTENT, LATEST } = homepageData;
|
2021-12-20 21:35:59 +01:00
|
|
|
|
|
|
|
const autoFollowChannels = COMMUNITY_CHANNELS[language] || COMMUNITY_CHANNELS['en'];
|
|
|
|
|
|
|
|
const channelsToSubscribe = autoFollowChannels
|
|
|
|
.trim()
|
|
|
|
.split(' ')
|
|
|
|
.filter((x) => x !== '');
|
|
|
|
|
2021-07-17 00:20:22 +02:00
|
|
|
let channelIds;
|
2021-09-29 21:22:46 +02:00
|
|
|
if (CUSTOM_HOMEPAGE) {
|
|
|
|
if (LATEST) {
|
|
|
|
channelIds = LATEST.channelIds;
|
|
|
|
} else if (PRIMARY_CONTENT) {
|
|
|
|
channelIds = PRIMARY_CONTENT.channelIds;
|
|
|
|
}
|
2021-07-17 00:20:22 +02:00
|
|
|
}
|
2021-12-20 21:35:59 +01:00
|
|
|
|
2020-02-26 19:39:03 +01:00
|
|
|
const followingCount = (subscribedChannels && subscribedChannels.length) || 0;
|
2021-08-11 04:35:25 +02:00
|
|
|
const followingCountIgnoringAutoFollows = (subscribedChannels || []).filter(
|
|
|
|
(channel) => !channelsToSubscribe.includes(channel.uri)
|
|
|
|
).length;
|
2020-02-26 19:39:03 +01:00
|
|
|
|
2021-12-20 21:35:59 +01:00
|
|
|
// subscribe to odysee channels
|
|
|
|
React.useEffect(() => {
|
2021-04-25 07:31:19 +02:00
|
|
|
if (channelsToSubscribe && channelsToSubscribe.length && prefsReady) {
|
|
|
|
const delayedChannelSubscribe = () => {
|
2021-12-20 21:35:59 +01:00
|
|
|
channelsToSubscribe.forEach((channelUri) => {
|
2021-10-17 10:36:14 +02:00
|
|
|
let claimName;
|
|
|
|
try {
|
2021-12-20 21:35:59 +01:00
|
|
|
const { claimName: name } = parseURI(channelUri);
|
2021-10-17 10:36:14 +02:00
|
|
|
claimName = name;
|
|
|
|
} catch (e) {}
|
2021-12-20 21:35:59 +01:00
|
|
|
|
|
|
|
if (claimName) channelSubscribe(claimName, channelUri);
|
2021-10-17 10:36:14 +02:00
|
|
|
});
|
2021-04-25 07:31:19 +02:00
|
|
|
};
|
Re-design comment threads (#1489)
* Redesign threadline and fetching state
- threadline goes right below channel avatar, mimicking reddits implementation, has a increase effect on hover and is slimmer, creating more space for comments on screen
- fetching state now replaces show/hide button, also mimicking reddit, and now says that it is loading, instead of a blank spinner, and also improves space a bit
* Redesign comment threads
- Allow for infinite comment chains
- Can go back and forth between the pages
- Can go back to all comments or to the first comment in the chain
- Some other improvements, which include:
- add title on non-drawer comment sections (couldn't see amount of comments)
- fix Expandable component (would begin expanded and collapse after the effect runs, which looked bad and shifted the layout, now each comments greater than the set length begins collapsed)
- used constants for consistency
* Fix replying to last thread comment
* Fix buttons condition (only on fetched comment to avoid deleted case)
* Fix auto-scroll
* Bring back instant feedback for Show More replies
* Improve thread back links
- Now going back to all comments links the top-level comment for easier navigation
- Going back to ~ previous ~ now goes back into the chain instead of topmost level
* Clear timeouts due to unrelated issue
* Fix deep thread linked comment case and more scroll improvements
* More minor changes
* Flow
* Fix commentList tile style
* Fix long channel names overflowing on small screens
* More scroll changes
* Fix threadline
* Revert "Fix long channel names overflowing on small screens"
This reverts commit e4d2dc7da5861ed8136a60f3352e41a690cd4d33.
* Fix replies fetch
* Revert "Fix replies fetch"
This reverts commit ec70054675a604a7a5f3764ba07c36bf7b0f49c8.
* Cleanup and make smooth
* Always use linked comment on threads
* Cleanup
* Higlight thread comment
* Fix comment body styles
2022-05-16 12:22:13 +02:00
|
|
|
const timer = setTimeout(delayedChannelSubscribe, 1000);
|
|
|
|
|
|
|
|
return () => clearTimeout(timer);
|
2020-08-26 23:00:10 +02:00
|
|
|
}
|
2021-12-20 21:35:59 +01:00
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
2021-04-25 07:31:19 +02:00
|
|
|
}, [prefsReady]);
|
2020-03-12 02:43:52 +01:00
|
|
|
|
2020-02-26 19:39:03 +01:00
|
|
|
return (
|
2020-04-13 21:16:07 +02:00
|
|
|
<Card
|
2022-02-18 09:15:56 +01:00
|
|
|
className="channelsToFollow-wrapper"
|
2020-08-26 22:28:33 +02:00
|
|
|
title={__('Find channels to follow')}
|
2020-04-13 21:16:07 +02:00
|
|
|
subtitle={__(
|
2021-07-23 05:51:29 +02:00
|
|
|
'%SITE_NAME% works better if you find and follow a couple creators you like. You can also block channels you never want to see.',
|
|
|
|
{ SITE_NAME }
|
2020-04-13 21:16:07 +02:00
|
|
|
)}
|
|
|
|
actions={
|
2021-12-20 21:35:59 +01:00
|
|
|
<div className="section__body">
|
|
|
|
<ClaimListDiscover
|
|
|
|
hideFilters={SIMPLE_SITE}
|
|
|
|
hideAdvancedFilter={SIMPLE_SITE}
|
|
|
|
meta={
|
|
|
|
<Button
|
|
|
|
button={subscribedChannels.length < 1 ? 'alt' : 'primary'}
|
2020-04-13 21:16:07 +02:00
|
|
|
onClick={onContinue}
|
2021-12-20 21:35:59 +01:00
|
|
|
label={subscribedChannels.length < 1 ? __('Skip') : __('Continue')}
|
2020-04-13 21:16:07 +02:00
|
|
|
/>
|
2021-12-20 21:35:59 +01:00
|
|
|
}
|
2022-03-21 23:53:09 +01:00
|
|
|
defaultOrderBy={CS.ORDER_BY_TRENDING}
|
2021-12-20 21:35:59 +01:00
|
|
|
defaultFreshness={CS.FRESH_ALL}
|
|
|
|
claimType="channel"
|
|
|
|
claimIds={(CUSTOM_HOMEPAGE && channelIds) || undefined}
|
|
|
|
defaultTags={followingCount > 3 ? CS.TAGS_FOLLOWED : undefined}
|
|
|
|
maxPages={SIMPLE_SITE ? 3 : undefined}
|
|
|
|
/>
|
|
|
|
|
|
|
|
{followingCountIgnoringAutoFollows > 0 && (
|
|
|
|
<Nag
|
|
|
|
type="helpful"
|
|
|
|
message={__(
|
|
|
|
followingCountIgnoringAutoFollows === 1
|
2021-12-22 01:57:47 +01:00
|
|
|
? 'Nice! You are currently following %followingCount% creator'
|
|
|
|
: 'Nice! You are currently following %followingCount% creators',
|
2021-12-20 21:35:59 +01:00
|
|
|
{
|
2021-12-22 01:57:47 +01:00
|
|
|
followingCount: followingCountIgnoringAutoFollows,
|
2021-12-20 21:35:59 +01:00
|
|
|
}
|
|
|
|
)}
|
|
|
|
actionText={__('Continue')}
|
|
|
|
onClick={onContinue}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</div>
|
2020-04-13 21:16:07 +02:00
|
|
|
}
|
|
|
|
/>
|
2020-02-26 19:39:03 +01:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default UserChannelFollowIntro;
|