LGTM
This commit is contained in:
parent
a8165249a4
commit
a4103b0896
64 changed files with 5376 additions and 3832 deletions
33
frontend/src/hooks/usePageMeta.ts
Normal file
33
frontend/src/hooks/usePageMeta.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import { useEffect } from 'react';
|
||||
|
||||
export function usePageMeta(title: string, description: string) {
|
||||
useEffect(() => {
|
||||
const previousTitle = document.title;
|
||||
let descriptionMeta = document.querySelector<HTMLMetaElement>('meta[name="description"]');
|
||||
const previousDescription = descriptionMeta?.getAttribute('content') ?? null;
|
||||
const createdDescriptionMeta = !descriptionMeta;
|
||||
|
||||
if (!descriptionMeta) {
|
||||
descriptionMeta = document.createElement('meta');
|
||||
descriptionMeta.setAttribute('name', 'description');
|
||||
document.head.appendChild(descriptionMeta);
|
||||
}
|
||||
|
||||
document.title = title;
|
||||
descriptionMeta.setAttribute('content', description);
|
||||
|
||||
return () => {
|
||||
document.title = previousTitle;
|
||||
if (!descriptionMeta) return;
|
||||
if (createdDescriptionMeta) {
|
||||
descriptionMeta.remove();
|
||||
return;
|
||||
}
|
||||
if (previousDescription === null) {
|
||||
descriptionMeta.removeAttribute('content');
|
||||
} else {
|
||||
descriptionMeta.setAttribute('content', previousDescription);
|
||||
}
|
||||
};
|
||||
}, [description, title]);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue