From e90a9b341187285a4ec991f84e9e1ca07aceefe5 Mon Sep 17 00:00:00 2001 From: Dorian Koch <doriank@fsmpi.rwth-aachen.de> Date: Tue, 2 Jul 2024 17:29:41 +0200 Subject: [PATCH] add meta tags to player page --- src/components/Player.tsx | 12 ++++++++++++ src/pages/_app.tsx | 1 + src/pages/dynamic_player.tsx | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/Player.tsx b/src/components/Player.tsx index 0d40e51..845b8cf 100644 --- a/src/components/Player.tsx +++ b/src/components/Player.tsx @@ -30,6 +30,7 @@ import { PlayerData } from "@/pages/dynamic_player"; import { useLanguage } from "./LanguageProvider"; import { StylizedText } from "./StylizedText"; import { ApiError } from "@/api/ApiError"; +import Head from "next/head"; function VideoPlayer({ lecture, className }: { lecture: lecture; className?: string }) { const videoRef = useRef<HTMLVideoElement>(null); @@ -610,6 +611,7 @@ export function EmbeddedPlayer({ playerData }: { playerData: ResourceType<Player export default function Player({ playerData }: { playerData: ResourceType<PlayerData> }) { const { course, lectureId, perms, loaderHadUserInfo } = playerData.read()!; + const api = useBackendContext(); const userContext = useUserContext(); const hasUserInfo = userContext.hasUserInfo(); const { language } = useLanguage(); @@ -773,6 +775,16 @@ export default function Player({ playerData }: { playerData: ResourceType<Player return ( <> + <Head> + <meta property="og:title" content={`${course.short_name} - ${lecture.title}`} /> + <meta property="og:description" content={course.description} /> + <meta + property="og:image" + content={ + lecture.thumbnail_url ?? `${api.assetUrl()}/thumbnail/l_${lecture.id}.jpg` + } + /> + </Head> <Title title={`${course.short_name} - ${lecture.title}`} /> <div className="card"> <div className="card-header d-flex"> diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 88928ba..feb4f4c 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -22,6 +22,7 @@ export default function App({ Component, pageProps }: AppProps) { name="commit" content={process.env.NEXT_PUBLIC_GIT_COMMIT_HASH ?? "unknown"} /> + <meta name="og:site_name" content="VideoAG" /> </Head> <Title title="Video AG" /> <ReloadBoundary diff --git a/src/pages/dynamic_player.tsx b/src/pages/dynamic_player.tsx index e643274..50ebbda 100644 --- a/src/pages/dynamic_player.tsx +++ b/src/pages/dynamic_player.tsx @@ -99,7 +99,8 @@ export function ActualRedirector() { } export default function DynamicPlayer() { - // The following is a hack to force nextjs to not pre-render this page at build time (which obv wouldnt make sense) + // The following is a hack to force nextjs to not pre-render this page at build time + // this needs to be done because it is not known which lecture is going to be watched (this is dynamic!) const [clientsideForcer, setClientsideForcer] = useState(false); useEffect(() => { setClientsideForcer(true); -- GitLab