diff --git a/frontend/src/ts/controllers/page-controller.ts b/frontend/src/ts/controllers/page-controller.ts index 601701c6e..db91c32e4 100644 --- a/frontend/src/ts/controllers/page-controller.ts +++ b/frontend/src/ts/controllers/page-controller.ts @@ -23,6 +23,22 @@ type ChangeOptions = { data?: unknown; }; +function updateOpenGraphUrl(): void { + const ogUrlTag = document.querySelector('meta[property="og:url"]'); + const currentUrl = window.location.href; + + if (ogUrlTag) { + // Update existing tag + ogUrlTag.setAttribute("content", currentUrl); + } else { + // Create and append new tag if it doesn't exist + const newOgUrlTag = document.createElement("meta"); + newOgUrlTag.setAttribute("property", "og:url"); + newOgUrlTag.content = currentUrl; + document.head.appendChild(newOgUrlTag); + } +} + export async function change( pageName: PageName, options = {} as ChangeOptions @@ -92,12 +108,15 @@ export async function change( } Focus.set(false); ActivePage.set(nextPage.id); + await previousPage?.afterHide(); await nextPage?.beforeShow({ params: options.params, // @ts-expect-error for the future (i think) data: options.data, }); + + updateOpenGraphUrl(); } ); });