Skip to content

Commit a9f04ca

Browse files
committed
feat: improve seo with registry and entry specific title
1 parent 2d32a93 commit a9f04ca

File tree

2 files changed

+70
-54
lines changed

2 files changed

+70
-54
lines changed

src/pages/light-item-details/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import styled from 'styled-components'
33
import { Layout, Breadcrumb } from 'antd'
44
import { useParams } from 'react-router'
55
import { Link } from 'react-router-dom'
6+
import { Helmet } from 'react-helmet'
67
import qs from 'qs'
78
import { abi as _IArbitrator } from '@kleros/erc-792/build/contracts/IArbitrator.json'
89
import { ethers } from 'ethers'
@@ -197,8 +198,17 @@ const ItemDetails = ({ itemID, search }) => {
197198
)
198199

199200
const { tcrTitle, itemName } = metadata || {}
201+
const capitalizeFirst = s => s.charAt(0).toUpperCase() + s.slice(1)
202+
const title =
203+
decodedItem && metadata
204+
? `${capitalizeFirst(itemName)} - ${tcrTitle} - Kleros · Curate`
205+
: 'Kleros · Curate'
206+
200207
return (
201208
<>
209+
<Helmet>
210+
<title>{title}</title>
211+
</Helmet>
202212
<StyledBanner>
203213
<Breadcrumb separator=">">
204214
<StyledBreadcrumbItem>

src/pages/light-items/banner.js

Lines changed: 60 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import styled, { css } from 'styled-components'
33
import { smallScreenStyle } from 'styles/small-screen-style'
44
import { Link } from 'react-router-dom'
55
import React from 'react'
6+
import { Helmet } from 'react-helmet'
67
import PropTypes from 'prop-types'
78
import { ZERO_ADDRESS, capitalizeFirstLetter } from 'utils/string'
89
import { useWeb3Context } from 'web3-react'
@@ -121,38 +122,43 @@ const Banner = ({
121122
: ''
122123

123124
return (
124-
<StyledBanner>
125-
<TCRInfoColumn id="tcr-info-column">
126-
{metadata ? (
127-
<>
128-
<TitleContainer>
129-
<StyledTitle>{tcrTitle}</StyledTitle>
130-
{defaultTCRAddress && tcrAddress !== defaultTCRAddress && (
131-
<TCRLogo logoURI={logoURI} />
132-
)}
133-
<ContractExplorerUrl
134-
networkId={networkId}
135-
contractAddress={tcrAddress}
136-
/>
137-
</TitleContainer>
138-
<StyledDescription>
139-
{capitalizeFirstLetter(normalizedDescription)}
140-
</StyledDescription>
141-
</>
142-
) : (
143-
<>
144-
<Skeleton active paragraph={false} title={{ width: 100 }} />
145-
<Skeleton
146-
active
147-
paragraph={{ rows: 1, width: 150 }}
148-
title={false}
149-
/>
150-
</>
151-
)}
152-
{connectedTCRAddr &&
153-
connectedTCRAddr !== ZERO_ADDRESS &&
154-
!relTcrDisabled && (
125+
<>
126+
<Helmet>
127+
<title>
128+
{tcrTitle ? `${tcrTitle} - Kleros · Curate` : 'Kleros · Curate'}
129+
</title>
130+
</Helmet>
131+
<StyledBanner>
132+
<TCRInfoColumn id="tcr-info-column">
133+
{metadata ? (
134+
<>
135+
<TitleContainer>
136+
<StyledTitle>{tcrTitle}</StyledTitle>
137+
{defaultTCRAddress && tcrAddress !== defaultTCRAddress && (
138+
<TCRLogo logoURI={logoURI} />
139+
)}
140+
<ContractExplorerUrl
141+
networkId={networkId}
142+
contractAddress={tcrAddress}
143+
/>
144+
</TitleContainer>
145+
<StyledDescription>
146+
{capitalizeFirstLetter(normalizedDescription)}
147+
</StyledDescription>
148+
</>
149+
) : (
155150
<>
151+
<Skeleton active paragraph={false} title={{ width: 100 }} />
152+
<Skeleton
153+
active
154+
paragraph={{ rows: 1, width: 150 }}
155+
title={false}
156+
/>
157+
</>
158+
)}
159+
{connectedTCRAddr &&
160+
connectedTCRAddr !== ZERO_ADDRESS &&
161+
!relTcrDisabled && (
156162
<Typography.Text
157163
ellipsis
158164
type="secondary"
@@ -162,29 +168,29 @@ const Banner = ({
162168
View Badges list
163169
</StyledLink>
164170
</Typography.Text>
165-
</>
166-
)}
167-
</TCRInfoColumn>
168-
<ActionCol>
169-
<StyledButton
170-
type="primary"
171-
size="large"
172-
onClick={() => requestWeb3Auth(() => setSubmissionFormOpen(true))}
173-
id="submit-item-button"
174-
>
175-
{`Submit ${capitalizeFirstLetter(itemName) || 'Item'}`}
176-
<Icon type="plus-circle" />
177-
</StyledButton>
178-
<StyledPolicyAnchor
179-
href={parseIpfs(fileURI || '')}
180-
target="_blank"
181-
rel="noopener noreferrer"
182-
id="policy-link"
183-
>
184-
View Listing Policies
185-
</StyledPolicyAnchor>
186-
</ActionCol>
187-
</StyledBanner>
171+
)}
172+
</TCRInfoColumn>
173+
<ActionCol>
174+
<StyledButton
175+
type="primary"
176+
size="large"
177+
onClick={() => requestWeb3Auth(() => setSubmissionFormOpen(true))}
178+
id="submit-item-button"
179+
>
180+
{`Submit ${capitalizeFirstLetter(itemName) || 'Item'}`}
181+
<Icon type="plus-circle" />
182+
</StyledButton>
183+
<StyledPolicyAnchor
184+
href={parseIpfs(fileURI || '')}
185+
target="_blank"
186+
rel="noopener noreferrer"
187+
id="policy-link"
188+
>
189+
View Listing Policies
190+
</StyledPolicyAnchor>
191+
</ActionCol>
192+
</StyledBanner>
193+
</>
188194
)
189195
}
190196

0 commit comments

Comments
 (0)