From 7dc103ffe6695549ce7c1c9d8abaad8d5088b3bc Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Tue, 8 Jul 2025 10:13:47 +0800 Subject: [PATCH] feat(server): add apple-itunes-app meta tag on shage page (#13065) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit disable on selfhosted close AF-2715 ![IMG_1232](https://github.com/user-attachments/assets/21fdd066-3f67-411e-9407-7349e221c23e) ## Summary by CodeRabbit * **New Features** * Added an Apple iTunes app association meta tag to the document share page for improved app integration, shown only in non-self-hosted environments. * **Tests** * Introduced end-to-end tests to verify the conditional presence of the Apple iTunes app meta tag based on the deployment environment. #### PR Dependency Tree * **PR #13065** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) --- .../e2e/doc-renderer/controller.spec.ts | 64 +++++++++++++++++++ .../src/core/doc-renderer/controller.ts | 1 + 2 files changed, 65 insertions(+) create mode 100644 packages/backend/server/src/__tests__/e2e/doc-renderer/controller.spec.ts diff --git a/packages/backend/server/src/__tests__/e2e/doc-renderer/controller.spec.ts b/packages/backend/server/src/__tests__/e2e/doc-renderer/controller.spec.ts new file mode 100644 index 0000000000..4622ec2955 --- /dev/null +++ b/packages/backend/server/src/__tests__/e2e/doc-renderer/controller.spec.ts @@ -0,0 +1,64 @@ +import { app, createApp, e2e, Mockers } from '../test'; + +e2e('should render doc share page with apple-itunes-app meta tag', async t => { + const owner = await app.signup(); + const workspace = await app.create(Mockers.Workspace, { + owner, + }); + + const docSnapshot = await app.create(Mockers.DocSnapshot, { + workspaceId: workspace.id, + user: owner, + }); + // set public to true + await app.create(Mockers.DocMeta, { + workspaceId: workspace.id, + docId: docSnapshot.id, + public: true, + }); + + const res = await app + .GET(`/workspace/${workspace.id}/${docSnapshot.id}`) + .expect(200) + .expect('Content-Type', 'text/html; charset=utf-8'); + + t.regex( + res.text, + // + ); +}); + +e2e( + 'should render doc share page without apple-itunes-app meta tag when selfhosted', + async t => { + // @ts-expect-error override + globalThis.env.DEPLOYMENT_TYPE = 'selfhosted'; + await using app = await createApp(); + + const owner = await app.signup(); + const workspace = await app.create(Mockers.Workspace, { + owner, + }); + + const docSnapshot = await app.create(Mockers.DocSnapshot, { + workspaceId: workspace.id, + user: owner, + }); + // set public to true + await app.create(Mockers.DocMeta, { + workspaceId: workspace.id, + docId: docSnapshot.id, + public: true, + }); + + const res = await app + .GET(`/workspace/${workspace.id}/${docSnapshot.id}`) + .expect(200) + .expect('Content-Type', 'text/html; charset=utf-8'); + + t.notRegex( + res.text, + // + ); + } +); diff --git a/packages/backend/server/src/core/doc-renderer/controller.ts b/packages/backend/server/src/core/doc-renderer/controller.ts index 2afb115e95..1458498245 100644 --- a/packages/backend/server/src/core/doc-renderer/controller.ts +++ b/packages/backend/server/src/core/doc-renderer/controller.ts @@ -171,6 +171,7 @@ export class DocRendererController { name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> + ${env.selfhosted ? '' : ''} ${title}