From 9612942a607ec2737a2dcc5cde317b60f89f08b9 Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Wed, 30 Apr 2025 14:31:53 +0530 Subject: [PATCH 1/2] MC:2978 Added utm source, utm medium and utm campaign at login flow --- packages/sdk/src/index.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index a3aa11a..429b7dd 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -75,9 +75,15 @@ export class MermaidChart { public async getAuthorizationData({ state, scope = ['email'], + utm_source, + utm_medium, + utm_campaign }: { state?: string; scope?: string[]; + utm_source?: string; + utm_medium?: string; + utm_campaign?: string; } = {}): Promise { if (!this.redirectURI) { throw new Error('redirectURI is not set'); @@ -90,12 +96,20 @@ export class MermaidChart { this.pendingStates[stateID] = { codeVerifier, }; + + const extraParams: Record = {}; + if (utm_source && utm_medium && utm_campaign) { + extraParams.utm_source = utm_source; + extraParams.utm_medium = utm_medium; + extraParams.utm_campaign = utm_campaign; + } const url = await this.oauth.authorizationCode.getAuthorizeUri({ redirectUri: this.redirectURI, state: stateID, codeVerifier, scope, + ...(Object.keys(extraParams).length > 0 && { extraParams }), }); // Deletes the state after 60 seconds From 2ede4e8ed476348d3d3417d7bf7b50889a6fe876 Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Wed, 30 Apr 2025 15:38:45 +0530 Subject: [PATCH 2/2] updated UTM params handling --- packages/sdk/src/index.ts | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 429b7dd..7b5c80e 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -75,15 +75,15 @@ export class MermaidChart { public async getAuthorizationData({ state, scope = ['email'], - utm_source, - utm_medium, - utm_campaign + trackingParams, }: { state?: string; scope?: string[]; - utm_source?: string; - utm_medium?: string; - utm_campaign?: string; + trackingParams?: { + utm_source: string; + utm_medium: string; + utm_campaign: string; + } } = {}): Promise { if (!this.redirectURI) { throw new Error('redirectURI is not set'); @@ -96,20 +96,19 @@ export class MermaidChart { this.pendingStates[stateID] = { codeVerifier, }; - - const extraParams: Record = {}; - if (utm_source && utm_medium && utm_campaign) { - extraParams.utm_source = utm_source; - extraParams.utm_medium = utm_medium; - extraParams.utm_campaign = utm_campaign; - } const url = await this.oauth.authorizationCode.getAuthorizeUri({ redirectUri: this.redirectURI, state: stateID, codeVerifier, scope, - ...(Object.keys(extraParams).length > 0 && { extraParams }), + ...(trackingParams && { + extraParams: { + utm_source: trackingParams.utm_source, + utm_medium: trackingParams.utm_medium, + utm_campaign: trackingParams.utm_campaign, + } + }), }); // Deletes the state after 60 seconds @@ -267,4 +266,4 @@ export class MermaidChart { const raw = await this.axios.get(URLS.raw(document, theme).svg); return raw.data; } -} +} \ No newline at end of file