// @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 * as CS 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={CS.FRESH_ALL} defaultOrderBy={CS.ORDER_BY_TOP} meta={ <div className="search__top-links"> <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> </div> } 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;