diff --git a/src/app/share/ShareProvider.tsx b/src/app/share/ShareProvider.tsx index 9862a974..b83d3794 100644 --- a/src/app/share/ShareProvider.tsx +++ b/src/app/share/ShareProvider.tsx @@ -32,11 +32,23 @@ const ALL_SECTION_IDS = [ 'attribution', ]; +function getSharePath(pathname: string) { + const segments = pathname.split('/'); + const firstSegment = segments[3]; + + // If first segment looks like a domain name, skip it + if (firstSegment?.includes('.')) { + return segments[4]; + } + + return firstSegment; +} + export function ShareProvider({ slug, children }: { slug: string; children: ReactNode }) { const { share, isLoading, isFetching } = useShareTokenQuery(slug); const router = useRouter(); const pathname = usePathname(); - const path = pathname.split('/')[3]; + const path = getSharePath(pathname); const allowedSections = share?.parameters ? ALL_SECTION_IDS.filter(id => share.parameters[id] !== false) diff --git a/src/app/share/[slug]/[[...path]]/SharePage.tsx b/src/app/share/[slug]/[[...path]]/SharePage.tsx index 5d93fd96..d80bc3b1 100644 --- a/src/app/share/[slug]/[[...path]]/SharePage.tsx +++ b/src/app/share/[slug]/[[...path]]/SharePage.tsx @@ -39,11 +39,23 @@ const PAGE_COMPONENTS: Record attribution: AttributionPage, }; +function getSharePath(pathname: string) { + const segments = pathname.split('/'); + const firstSegment = segments[3]; + + // If first segment looks like a domain name, skip it + if (firstSegment?.includes('.')) { + return segments[4]; + } + + return firstSegment; +} + export function SharePage() { const share = useShare(); const { setTheme } = useTheme(); const pathname = usePathname(); - const path = pathname.split('/')[3]; + const path = getSharePath(pathname); const { websiteId, parameters = {} } = share; useEffect(() => {