From c66d59c3dcfea71bcdb61715f59911dd8a18d717 Mon Sep 17 00:00:00 2001 From: Kai Wu Date: Fri, 3 Jun 2022 10:10:49 -0700 Subject: [PATCH] Fill Currently Missing`FcmOptions.link` (#6327) --- .changeset/sour-hornets-care.md | 5 +++++ .../src/helpers/externalizePayload.test.ts | 13 +++++++++---- .../messaging/src/helpers/externalizePayload.ts | 13 ++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 .changeset/sour-hornets-care.md diff --git a/.changeset/sour-hornets-care.md b/.changeset/sour-hornets-care.md new file mode 100644 index 00000000000..3f2f067fc93 --- /dev/null +++ b/.changeset/sour-hornets-care.md @@ -0,0 +1,5 @@ +--- +'@firebase/messaging': patch +--- + +Fix missing FcmOptions.link diff --git a/packages/messaging/src/helpers/externalizePayload.test.ts b/packages/messaging/src/helpers/externalizePayload.test.ts index 60baedf02f6..f800a3323eb 100644 --- a/packages/messaging/src/helpers/externalizePayload.test.ts +++ b/packages/messaging/src/helpers/externalizePayload.test.ts @@ -26,7 +26,9 @@ describe('externalizePayload', () => { notification: { title: 'title', body: 'body', - image: 'image' + image: 'image', + // eslint-disable-next-line camelcase + click_action: 'https://www.self_orgin.com' }, from: 'from', // eslint-disable-next-line camelcase @@ -39,7 +41,10 @@ describe('externalizePayload', () => { notification: { title: 'title', body: 'body', image: 'image' }, from: 'from', collapseKey: 'collapse', - messageId: 'mid' + messageId: 'mid', + fcmOptions: { + link: 'https://www.self_orgin.com' + } }; expect(externalizePayload(internalPayload)).to.deep.equal(payload); }); @@ -80,7 +85,7 @@ describe('externalizePayload', () => { baz: 'baz' }, fcmOptions: { - link: 'link', + link: 'https://www.self_orgin.com', // eslint-disable-next-line camelcase analytics_label: 'label' }, @@ -103,7 +108,7 @@ describe('externalizePayload', () => { baz: 'baz' }, fcmOptions: { - link: 'link', + link: 'https://www.self_orgin.com', analyticsLabel: 'label' }, from: 'from', diff --git a/packages/messaging/src/helpers/externalizePayload.ts b/packages/messaging/src/helpers/externalizePayload.ts index 0c4ed0b79f6..6553fa8c631 100644 --- a/packages/messaging/src/helpers/externalizePayload.ts +++ b/packages/messaging/src/helpers/externalizePayload.ts @@ -77,19 +77,26 @@ function propagateFcmOptions( payload: MessagePayload, messagePayloadInternal: MessagePayloadInternal ): void { - if (!messagePayloadInternal.fcmOptions) { + // fcmOptions.link value is written into notification.click_action. see more in b/232072111 + if ( + !messagePayloadInternal.fcmOptions && + !messagePayloadInternal.notification?.click_action + ) { return; } payload.fcmOptions = {}; - const link = messagePayloadInternal.fcmOptions!.link; + const link = + messagePayloadInternal.fcmOptions?.link ?? + messagePayloadInternal.notification?.click_action; + if (!!link) { payload.fcmOptions!.link = link; } // eslint-disable-next-line camelcase - const analyticsLabel = messagePayloadInternal.fcmOptions!.analytics_label; + const analyticsLabel = messagePayloadInternal.fcmOptions?.analytics_label; if (!!analyticsLabel) { payload.fcmOptions!.analyticsLabel = analyticsLabel; }