Improve versions in title

This commit is contained in:
Misode
2022-05-09 03:38:07 +02:00
parent 9e12bbf558
commit 15dc9bd4ab
3 changed files with 24 additions and 11 deletions

View File

@@ -9,20 +9,20 @@ const VERSIONS_IN_TITLE = 3
interface Title {
title: string,
changeTitle: (title: string, versions?: VersionId[]) => unknown,
changeTitle: (title: string, versions?: VersionId[], suffix?: string) => unknown,
}
const Title = createContext<Title>({
title: '',
changeTitle: () => {},
})
export function useTitle(title?: string, versions?: VersionId[]) {
export function useTitle(title?: string, versions?: VersionId[], suffix?: string) {
const context = useContext(Title)
useEffect(() => {
if (title) {
context.changeTitle(title, versions)
context.changeTitle(title, versions, suffix)
}
}, [title, versions])
}, [title, versions, suffix])
return context
}
@@ -30,10 +30,20 @@ export function TitleProvider({ children }: { children: ComponentChildren }) {
const { locale } = useLocale()
const [title, setTitle] = useState<string>(locale('title.home'))
const changeTitle = useCallback((title: string, versions?: VersionId[]) => {
versions ??= config.versions.map(v => v.id as VersionId)
const titleVersions = versions.slice(-VERSIONS_IN_TITLE)
document.title = `${title} Minecraft ${titleVersions.join(', ')}`
const changeTitle = useCallback((title: string, versionIds?: VersionId[], suffix?: string) => {
let versions = config.versions
if (versionIds !== undefined) {
versions = config.versions.filter(v => versionIds?.includes(v.id as VersionId))
}
let titleSuffix = ''
if (suffix) {
titleSuffix = ` - ${suffix}`
}
if (!(versionIds?.length === 0)) {
const titleVersions = versions.map(v => v.id).slice(-VERSIONS_IN_TITLE)
titleSuffix = ` - Minecraft ${titleVersions.join(', ')}`
}
document.title = title + titleSuffix
setTitle(title)
}, [])

View File

@@ -16,7 +16,10 @@ export function Versions({}: Props) {
const [selectedId] = useSearchParam('id')
const selected = (versions ?? []).find(v => v.id === selectedId)
useTitle(selected ? selected.name : 'Versions Explorer', selected ? [] : undefined)
useTitle(
selected ? `Minecraft ${selected.name}` : 'Versions Explorer',
selected ? [] : undefined,
selected ? 'Changes and metadata' : undefined)
const nextVersion = selected && getOffsetVersion(versions ?? [], selected, -1)
const previousVersion = selected && getOffsetVersion(versions ?? [], selected, 1)

View File

@@ -62,7 +62,7 @@ export default defineConfig({
...guides.map(g => {
return html({
fileName: `guides/${g.id}/index.html`,
title: `${g.title} Minecraft${g.versions ? ` ${g.versions.join(' ')}` : ''}`,
title: `${g.title} - Minecraft${g.versions ? ` ${g.versions.join(' ')}` : ''}`,
template,
})
}),
@@ -95,7 +95,7 @@ function getTitle(m) {
const minVersion = Math.max(0, config.versions.findIndex(v => m.minVersion === v.id))
const versions = config.versions.slice(minVersion).map(v => v.id)
versions.splice(0, versions.length - 3)
return `${English[m.id] ?? ''}${m.page ? '' : ` Generator${m.category === true ? 's' : ''}`} Minecraft ${versions.join(', ')}`
return `${English[m.id] ?? ''}${m.page ? '' : ` Generator${m.category === true ? 's' : ''}`} - Minecraft ${versions.join(', ')}`
}
function template({ files, title }) {