lbry-desktop/ui/page/top/view.jsx
zeppi 99ab165a8f New repost flow
Clearer display of takeover amounts
Repost from empty search result, from top page, or from claim

review changes

final touches

bump

empty comment copy

they

emptier

validation cleanup

extra
2020-12-16 09:47:28 -05:00

79 lines
2.6 KiB
JavaScript

// @flow
import React from 'react';
import classnames from 'classnames';
import Page from 'component/page';
import ClaimListDiscover from 'component/claimListDiscover';
import ClaimEffectiveAmount from 'component/claimEffectiveAmount';
import SearchTopClaim from 'component/searchTopClaim';
import { ORDER_BY_TOP, FRESH_ALL } from 'constants/claim_search';
import Button from 'component/button';
import I18nMessage from 'component/i18nMessage';
import * as PAGES from 'constants/pages';
type Props = {
name: string,
beginPublish: string => void,
};
function TopPage(props: Props) {
const { name, beginPublish } = props;
const [channelActive, setChannelActive] = React.useState(false);
// if the query was actually '@name', still offer repost for 'name'
const queryName = name[0] === '@' ? name.slice(1) : name;
return (
<Page>
<SearchTopClaim query={name} hideLink setChannelActive={setChannelActive} />
<ClaimListDiscover
name={channelActive ? `@${queryName}` : queryName}
defaultFreshness={FRESH_ALL}
defaultOrderBy={ORDER_BY_TOP}
meta={
<I18nMessage
tokens={{
repost: (
<Button
button="secondary"
navigate={`/$/${PAGES.REPOST_NEW}?to=${queryName}`}
label={__('Repost Here')}
/>
),
publish: <Button button="secondary" onClick={() => beginPublish(queryName)} label={'Publish Here'} />,
}}
>
%repost% %publish%
</I18nMessage>
}
includeSupportAction
renderProperties={claim => (
<span className="claim-preview__custom-properties">
{claim.meta.is_controlling && <span className="help--inline">{__('Currently winning')}</span>}
<ClaimEffectiveAmount uri={claim.repost_url || claim.canonical_url} />
</span>
)}
header={
<div className="claim-search__menu-group">
<Button
label={queryName}
button="alt"
onClick={() => setChannelActive(false)}
className={classnames('button-toggle', {
'button-toggle--active': !channelActive,
})}
/>
<Button
label={`@${queryName}`}
button="alt"
onClick={() => setChannelActive(true)}
className={classnames('button-toggle', {
'button-toggle--active': channelActive,
})}
/>
</div>
}
/>
</Page>
);
}
export default TopPage;