import { useEffect } from 'react'
// Permet à une page de définir son propre
/ le
// temps qu'elle est affichée. La SPA n'a qu'un seul index.html : sans ce
// hook, toutes les routes partagent le même title/meta. Les valeurs
// précédentes sont restaurées au démontage, donc quitter la page revient à
// l'état d'avant (celui d'index.html, ou celui d'une page parente si elles
// s'enchaînent).
export default function usePageMeta({ title, description } = {}) {
useEffect(() => {
const previousTitle = document.title
if (title) {
document.title = title
}
const metaEl = document.querySelector('meta[name="description"]')
const previousDescription = metaEl?.getAttribute('content') ?? null
if (description && metaEl) {
metaEl.setAttribute('content', description)
}
return () => {
document.title = previousTitle
if (metaEl && previousDescription !== null) {
metaEl.setAttribute('content', previousDescription)
}
}
}, [title, description])
}