--- import { escapeHtml } from "@utils/helpers/general.js"; import { fetchGlobalData } from "@utils/data/global/index.js"; const { schema = "page", pageTitle: titleOverride, description: descriptionOverride, ogImage: ogImageOverride, fullUrl, post, artist, movie, movies, show, tv, book, books, genre, year, } = Astro.props; const { globals } = await fetchGlobalData(Astro); let pageTitle = globals.site_name; let pageDescription = globals.site_description; let ogImage = `${globals.cdn_url}${globals.avatar}`; switch (schema) { case "blog": pageTitle = post?.title || pageTitle; pageDescription = post?.description || pageDescription; ogImage = `${globals.cdn_url}${post?.image}`; break; case "music": case "music-index": case "music-period": pageTitle = schema === "music" ? `Music / ${titleOverride}` : "Music"; if (schema === "music") { ogImage = `${globals.cdn_url}${post?.image}`; } else if (schema === "music-index") { ogImage = `${globals.cdn_url}${movies?.week?.artists[0]?.grid?.image}`; } else if (schema === "music-period") { ogImage = `${globals.cdn_url}${post?.image}`; } break; case "artist": pageTitle = `Artists / ${artist?.name}`; pageDescription = artist?.description || pageDescription; ogImage = `${globals.cdn_url}${artist?.image}`; break; case "genre": pageTitle = `Music / ${genre?.name}`; pageDescription = genre?.description || pageDescription; ogImage = `${globals.cdn_url}${genre?.artists[0]?.image}`; break; case "book": pageTitle = `Books / ${book?.title} by ${book?.author}`; pageDescription = book?.review || book?.description || pageDescription; ogImage = `${globals.cdn_url}${book?.image}`; break; case "books": pageTitle = "Books"; const overviewBook = books?.all?.find((b) => b.status === "started"); ogImage = `${globals.cdn_url}${overviewBook?.image}`; break; case "books-year": const bookYear = year?.data?.find((b) => b.status === "finished"); ogImage = `${globals.cdn_url}${bookYear?.image}`; break; case "movie": pageTitle = `Movies / ${movie?.title}`; if (movie?.rating) { pageTitle += ` (${movie.rating})`; } pageDescription = movie?.review || movie?.description || pageDescription; ogImage = `${globals.cdn_url}${movie?.backdrop}`; break; case "favorite-movies": pageTitle = "Favorite movies"; const favoriteMovie = movies?.favorites?.[0]; ogImage = `${globals.cdn_url}${favoriteMovie?.backdrop}`; break; case "show": pageTitle = `Show / ${show?.title}`; pageDescription = show?.review || show?.description || pageDescription; ogImage = `${globals.cdn_url}${show?.backdrop}`; break; case "favorite-shows": pageTitle = "Favorite shows"; const favoriteShow = tv?.favorites?.[0]; ogImage = `${globals.cdn_url}${favoriteShow?.backdrop}`; break; case "watching": pageTitle = "Watching"; const overviewMovie = movies?.recentlyWatched?.[0]; ogImage = `${globals.cdn_url}${overviewMovie?.backdrop}`; break; case "page": pageTitle = titleOverride || pageTitle; pageDescription = descriptionOverride || pageDescription; break; default: break; } if (titleOverride) pageTitle = titleOverride; if (descriptionOverride) pageDescription = descriptionOverride; if (ogImageOverride) ogImage = ogImageOverride; if (pageTitle !== globals.site_name && schema !== "blog") pageTitle = `${pageTitle} / ${globals.site_name}`; const escapedPageDescription = escapeHtml(pageDescription); --- {pageTitle}