fix: meta title for shared subpages (#2478)

This commit is contained in:
Philip Okugbe
2026-09-07 16:43:02 +01:00
committed by GitHub
parent 89e27a1a07
commit 0a87db4f1f
2 changed files with 28 additions and 14 deletions
@@ -60,16 +60,21 @@ export class ShareSeoController {
const pageId = this.extractPageSlugId(pageSlug); const pageId = this.extractPageSlugId(pageSlug);
const share = await this.shareService.getShareForPage( let title: string;
pageId, let searchIndexing = false;
try {
const shared = await this.shareService.getSharedPage(
{ pageId },
workspace.id, workspace.id,
{ includeContent: false },
); );
title = shared.page.title;
if (!share) { searchIndexing = shared.share.searchIndexing;
} catch (err) {
return this.sendIndex(indexFilePath, res); return this.sendIndex(indexFilePath, res);
} }
const rawTitle = htmlEscape(share?.sharedPage.title ?? 'untitled'); const rawTitle = htmlEscape(title ?? 'untitled');
const metaTitle = const metaTitle =
rawTitle.length > 80 ? `${rawTitle.slice(0, 77)}` : rawTitle; rawTitle.length > 80 ? `${rawTitle.slice(0, 77)}` : rawTitle;
@@ -78,7 +83,7 @@ export class ShareSeoController {
const metaTags = [ const metaTags = [
`<meta property="og:title" content="${metaTitle}" />`, `<meta property="og:title" content="${metaTitle}" />`,
`<meta property="twitter:title" content="${metaTitle}" />`, `<meta property="twitter:title" content="${metaTitle}" />`,
!share.searchIndexing ? `<meta name="robots" content="noindex" />` : '', !searchIndexing ? `<meta name="robots" content="noindex" />` : '',
] ]
.filter(Boolean) .filter(Boolean)
.join('\n '); .join('\n ');
+12 -3
View File
@@ -110,7 +110,11 @@ export class ShareService {
} }
} }
async getSharedPage(dto: ShareInfoDto, workspaceId: string) { async getSharedPage(
dto: ShareInfoDto,
workspaceId: string,
opts?: { includeContent?: boolean },
) {
//TODO: we should resolve the page from the share id //TODO: we should resolve the page from the share id
if (!dto.pageId) throw new NotFoundException('Shared page not found'); if (!dto.pageId) throw new NotFoundException('Shared page not found');
@@ -120,10 +124,13 @@ export class ShareService {
throw new NotFoundException('Shared page not found'); throw new NotFoundException('Shared page not found');
} }
const page = await this.pageRepo.findById(dto.pageId, { const includeContent = opts?.includeContent !== false;
const page = includeContent
? await this.pageRepo.findById(dto.pageId, {
includeContent: true, includeContent: true,
includeCreator: true, includeCreator: true,
}); })
: await this.pageRepo.findById(dto.pageId);
if (!page || page.deletedAt) { if (!page || page.deletedAt) {
throw new NotFoundException('Shared page not found'); throw new NotFoundException('Shared page not found');
@@ -137,7 +144,9 @@ export class ShareService {
throw new NotFoundException('Shared page not found'); throw new NotFoundException('Shared page not found');
} }
if (includeContent) {
page.content = await this.updatePublicAttachments(page); page.content = await this.updatePublicAttachments(page);
}
return { page, share }; return { page, share };
} }