Implement Open Graph meta tags in AnnuncioDettaglio for improved SEO and social sharing

This commit is contained in:
Marco Pedone 2025-08-08 14:13:27 +02:00
parent 0744d032a3
commit 3748afbd7e

View file

@ -73,37 +73,7 @@ const AnnuncioDettaglio: NextPage<AnnuncioProps> = ({
flag,
meta,
}: AnnuncioProps) => {
const session = useSession();
const { locale } = useTranslation();
const { data, isLoading } = api.annunci.getAnnuncio.useQuery(
{
cod: cod,
},
{ refetchOnMount: false },
);
const isDesktop = useMediaQuery("(min-width: 768px)");
if (isLoading || session.status === "pending") return <LoadingPage />;
if (
(!isLoading && !data) ||
session.status === "error" ||
(data && data.stato === "Sospeso")
) {
return <FailedAnnuncioLoading />;
}
if (!isLoading && data) {
const titolo = (locale === "it" ? data.titolo_it : data.titolo_en) || "";
const description = (locale === "it" ? data.desc_it : data.desc_en) || "";
const filteredCaratt = data.caratteristiche
? filteredCaratteristiche(data.caratteristiche)
: null;
return (
<AnnuncioContext.Provider value={data}>
<TouchProvider>
<main>
<Head>
<title>{`${cod} | ${meta.title}`}</title>
@ -121,6 +91,43 @@ const AnnuncioDettaglio: NextPage<AnnuncioProps> = ({
/>
<meta property="og:site_name" content="Infoalloggi.it" />
</Head>
<AnnuncioView cod={cod} flag={flag} />
</main>
);
};
const AnnuncioView = ({ cod, flag }: Omit<AnnuncioProps, "meta">) => {
const session = useSession();
const { locale } = useTranslation();
const { data, isLoading } = api.annunci.getAnnuncio.useQuery(
{
cod: cod,
},
{ refetchOnMount: false },
);
const isDesktop = useMediaQuery("(min-width: 768px)");
if (isLoading || session.status === "pending") return <LoadingPage />;
if (
!data ||
session.status === "error" ||
(data && data.stato === "Sospeso")
) {
return <FailedAnnuncioLoading />;
}
const titolo = (locale === "it" ? data.titolo_it : data.titolo_en) || "";
const description = (locale === "it" ? data.desc_it : data.desc_en) || "";
const filteredCaratt = data.caratteristiche
? filteredCaratteristiche(data.caratteristiche)
: null;
return (
<AnnuncioContext.Provider value={data}>
<TouchProvider>
<div className="mx-auto w-full px-2 sm:px-8">
<CarouselAnnuncio immagini={data.url_immagini} />
@ -145,8 +152,7 @@ const AnnuncioDettaglio: NextPage<AnnuncioProps> = ({
/>
)}
{data.tipo &&
(data.tipo == "Transitorio" ||
data.tipo == "Stabile") && (
(data.tipo == "Transitorio" || data.tipo == "Stabile") && (
<>
<Pricing
tipologia={
@ -180,12 +186,9 @@ const AnnuncioDettaglio: NextPage<AnnuncioProps> = ({
}
/>
</div>
</main>
</TouchProvider>
</AnnuncioContext.Provider>
);
}
return <div>Errore</div>;
};
export async function getStaticProps(
@ -201,6 +204,7 @@ export async function getStaticProps(
await ssg.annunci.getAnnuncio.prefetch({ cod: cod });
const meta = await ssg.annunci.getAnnuncioMeta.fetch({ cod: cod });
console.log("meta", meta);
const flag = await ssg.settings.GetFlagValue.fetch({
id: "ANNUNCIO_INTERACTIONS_DISABLED",