From c20b19826785ed4cbabefd148810e17d33a95198 Mon Sep 17 00:00:00 2001 From: fflorent Date: Thu, 17 Oct 2024 15:39:21 +0200 Subject: [PATCH] Apply suggestions from @manuhabitela --- app/server/lib/sendAppPage.ts | 17 ++++++++--------- static/img/opengraph-preview-image.png | Bin 0 -> 12065 bytes static/locales/en.server.json | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 static/img/opengraph-preview-image.png diff --git a/app/server/lib/sendAppPage.ts b/app/server/lib/sendAppPage.ts index 8dbe895fb8..27517df937 100644 --- a/app/server/lib/sendAppPage.ts +++ b/app/server/lib/sendAppPage.ts @@ -174,7 +174,7 @@ export function makeSendAppPage({ server, staticDir, tag, testLogin, baseDomain ).join('\n'); const content = fileContent .replace("", warning) - .replace("", getPageTitle(config) ?? translate(req, 'Loading...')) + .replace("", getDocName(config) ?? translate(req, 'Loading...')) .replace("", getPageMetadataHtmlSnippet(req, config, staticBaseUrl)) .replace("", getPageTitleSuffix(server.getGristConfig())) .replace("", `` + tagManagerSnippet) @@ -264,14 +264,12 @@ function configuredPageTitleSuffix() { } /** - * Returns a page title suitable for inserting into an HTML title element. - * - * Currently returns the document name if the page being requested is for a document, or - * a placeholder, "Loading...", that's updated in the client once the page has loaded. + * Returns the doc name. * * Note: The string returned is escaped and safe to insert into HTML. + * */ -function getPageTitle(config: GristLoadConfig): string|null { +function getDocName(config: GristLoadConfig): string|null { const maybeDoc = getDocFromConfig(config); return maybeDoc && handlebars.Utils.escapeExpression(maybeDoc.name); @@ -291,13 +289,13 @@ function getPageMetadataHtmlSnippet(req: express.Request, config: GristLoadConfi metadataElements.push(''); metadataElements.push(''); - const description = maybeDoc?.options?.description ?? translate(req, 'gristMetaDescription'); + const description = maybeDoc?.options?.description ?? translate(req, 'og-description'); const escapedDescription = handlebars.Utils.escapeExpression(description); metadataElements.push(``); metadataElements.push(``); metadataElements.push(``); - const icon = maybeDoc?.options?.icon ?? new URL('icons/grist.png', staticBaseUrl).href; + const icon = maybeDoc?.options?.icon ?? new URL('img/opengraph-preview-image.png', staticBaseUrl).href; const escapedIcon = handlebars.Utils.escapeExpression(icon); const iconSize = '100'; metadataElements.push(``); @@ -306,7 +304,8 @@ function getPageMetadataHtmlSnippet(req: express.Request, config: GristLoadConfi metadataElements.push(``); metadataElements.push(``); - const title = (getPageTitle(config) ?? translate(req, 'Welcome')) + getPageTitleSuffix(config); + const maybeDocTitle = getDocName(config); + const title = (maybeDocTitle ? maybeDocTitle + getPageTitleSuffix(config) : translate(req, 'og-title')); // NB: We don't generate the content of the tag here. metadataElements.push(`<meta property="og:title" content="${title}">`); metadataElements.push(`<meta name="twitter:title" content="${title}">`); diff --git a/static/img/opengraph-preview-image.png b/static/img/opengraph-preview-image.png new file mode 100644 index 0000000000000000000000000000000000000000..a70a4b9b8f3f8a4c98504062b676794ea314806f GIT binary patch literal 12065 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 XD6?wm1Sq8y?j@W$Q#nTbz5G7_;DfN# literal 0 HcmV?d00001 diff --git a/static/locales/en.server.json b/static/locales/en.server.json index 128b20bd2d..019e01e8b5 100644 --- a/static/locales/en.server.json +++ b/static/locales/en.server.json @@ -1,8 +1,8 @@ { "sendAppPage": { "Loading...": "Loading...", - "gristMetaDescription": "Grist is the evolution of spreadsheets.", - "Welcome": "Welcome" + "og-description": "A modern, open source spreadsheet that goes beyond the grid", + "og-title": "Grist, the evolution of spreadsheet" }, "oidc": { "emailNotVerifiedError": "Please verify your email with the identity provider, and log in again."