fix: meta title for shared subpages

This commit is contained in:
Philipinho
2026-09-07 16:39:58 +01:00
parent 89e27a1a07
commit 784602406e
2 changed files with 28 additions and 14 deletions
@@ -60,16 +60,21 @@ export class ShareSeoController {
const pageId = this.extractPageSlugId(pageSlug);
const share = await this.shareService.getShareForPage(
pageId,
let title: string;
let searchIndexing = false;
try {
const shared = await this.shareService.getSharedPage(
{ pageId },
workspace.id,
{ includeContent: false },
);
if (!share) {
title = shared.page.title;
searchIndexing = shared.share.searchIndexing;
} catch (err) {
return this.sendIndex(indexFilePath, res);
}
const rawTitle = htmlEscape(share?.sharedPage.title ?? 'untitled');
const rawTitle = htmlEscape(title ?? 'untitled');
const metaTitle =
rawTitle.length > 80 ? `${rawTitle.slice(0, 77)}` : rawTitle;
@@ -78,7 +83,7 @@ export class ShareSeoController {
const metaTags = [
`<meta property="og:title" content="${metaTitle}" />`,
`<meta property="twitter:title" content="${metaTitle}" />`,
!share.searchIndexing ? `<meta name="robots" content="noindex" />` : '',
!searchIndexing ? `<meta name="robots" content="noindex" />` : '',
]
.filter(Boolean)
.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
if (!dto.pageId) throw new NotFoundException('Shared page not found');
@@ -120,10 +124,13 @@ export class ShareService {
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,
includeCreator: true,
});
})
: await this.pageRepo.findById(dto.pageId);
if (!page || page.deletedAt) {
throw new NotFoundException('Shared page not found');
@@ -137,7 +144,9 @@ export class ShareService {
throw new NotFoundException('Shared page not found');
}
if (includeContent) {
page.content = await this.updatePublicAttachments(page);
}
return { page, share };
}