alter createCanonicalLink to take an object parameter

This commit is contained in:
Travis Eden 2018-10-29 14:47:47 -04:00
parent 46675107cd
commit bfd3971bd5
3 changed files with 32 additions and 23 deletions

View file

@ -6,19 +6,23 @@ import Row from '@components/Row';
import SpaceBetween from '@components/SpaceBetween'; import SpaceBetween from '@components/SpaceBetween';
import AssetShareButtons from '@components/AssetShareButtons'; import AssetShareButtons from '@components/AssetShareButtons';
import ClickToCopy from '@components/ClickToCopy'; import ClickToCopy from '@components/ClickToCopy';
import createCanonicalLink from '../../utils/createCanonicalLink';
class AssetInfo extends React.Component { class AssetInfo extends React.Component {
render () { render () {
const { const { asset } = this.props;
asset: { const { shortId, claimData: { channelName, channelShortId, certificateId, description, name, claimId, fileExt, contentType, thumbnail, host } } = asset;
shortId,
claimData : {
channelName, certificateId, description, name, claimId, fileExt, contentType, thumbnail, host
},
claimViews,
}
} = this.props;
const assetCanonicalUrl = createCanonicalLink({asset});
let channelCanonicalUrl;
if (channelName) {
const channel = {
name: channelName,
shortId: channelShortId,
};
channelCanonicalUrl = createCanonicalLink({channel});
}
return ( return (
<div> <div>
{channelName && ( {channelName && (
@ -29,7 +33,7 @@ class AssetInfo extends React.Component {
} }
content={ content={
<span className='text'> <span className='text'>
<Link to={`/${channelName}:${certificateId}`}>{channelName}</Link> <Link to={channelCanonicalUrl}>{channelName}</Link>
</span> </span>
} }
/> />

View file

@ -21,7 +21,12 @@ class SEO extends React.Component {
asset, asset,
channel, channel,
}); });
const canonicalLink = createCanonicalLink(asset, channel, pageUri); const canonicalLink = createCanonicalLink({
asset,
channel,
page: pageUri,
absolute: true,
});
// render results // render results
return ( return (
<Helmet <Helmet

View file

@ -6,34 +6,34 @@ const {
}, },
} = siteConfig; } = siteConfig;
const createBasicCanonicalLink = (page) => { const createBasicCanonicalLink = (absolute, page) => {
return `${host}/${page}`; return `${absolute ? host : ''}/${page}`;
}; };
const createAssetCanonicalLink = (asset) => { const createAssetCanonicalLink = (absolute, asset) => {
let channelName, channelShortId, name, claimId; let channelName, channelShortId, name, claimId;
if (asset.claimData) { if (asset.claimData) {
({ channelName, channelShortId, name, claimId } = asset.claimData); ({ channelName, channelShortId, name, claimId } = asset.claimData);
} }
if (channelName) { if (channelName) {
return `${host}/${channelName}:${channelShortId}/${name}`; return `${absolute ? host : ''}/${channelName}:${channelShortId}/${name}`;
} }
return `${host}/${claimId}/${name}`; return `${absolute ? host : ''}/${claimId}/${name}`;
}; };
const createChannelCanonicalLink = (channel) => { const createChannelCanonicalLink = (absolute, channel) => {
const { name, longId } = channel; const { name, longId, shortId } = channel;
return `${host}/${name}:${longId}`; return `${absolute ? host : ''}/${name}:${shortId ? shortId : longId}`;
}; };
const createCanonicalLink = (asset, channel, page) => { const createCanonicalLink = ({asset, channel, page, absolute = false}) => {
if (asset) { if (asset) {
return createAssetCanonicalLink(asset); return createAssetCanonicalLink(absolute, asset);
} }
if (channel) { if (channel) {
return createChannelCanonicalLink(channel); return createChannelCanonicalLink(absolute, channel);
} }
return createBasicCanonicalLink(page); return createBasicCanonicalLink(absolute, page);
}; };
export default createCanonicalLink; export default createCanonicalLink;