Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.4 kB · 45 lines
TSX
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import { useEffect } from "react";import { Platform } from "react-native";import { useFavicon, useSiteDescription, useSiteTitle,} from "../streamplace-store";
/** * Hook to set the document title, description, and favicon on web based on branding. * No-op on native platforms. */export function useDocumentTitle() { const siteTitle = useSiteTitle(); const siteDescription = useSiteDescription(); const favicon = useFavicon();
useEffect(() => { if (Platform.OS === "web" && typeof document !== "undefined") { // set title document.title = siteTitle;
// set or update meta description let metaDescription = document.querySelector('meta[name="description"]'); if (!metaDescription) { metaDescription = document.createElement("meta"); metaDescription.setAttribute("name", "description"); document.head.appendChild(metaDescription); } metaDescription.setAttribute("content", siteDescription);
// set or update favicon if (favicon) { let link: HTMLLinkElement | null = document.querySelector('link[rel="icon"]'); if (!link) { link = document.createElement("link"); link.rel = "icon"; document.head.appendChild(link); } link.href = favicon; } } }, [siteTitle, siteDescription, favicon]);}