From e76febd3a0a7ae7e808ddddc834326b374d4ff68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLAKSHMIRPILLAI=E2=80=9D?= <“luxmi.r.pillai@gmail.com”> Date: Wed, 26 Feb 2025 17:38:35 +0000 Subject: [PATCH 1/4] Initial commit to return no epic and banner data for info pageIds --- src/server/api/epicRouter.ts | 8 ++++++++ src/server/tests/banners/bannerSelection.ts | 8 ++++++++ src/shared/types/targeting/banner.ts | 1 + src/shared/types/targeting/epic.ts | 1 + 4 files changed, 18 insertions(+) diff --git a/src/server/api/epicRouter.ts b/src/server/api/epicRouter.ts index cdb9ef7dc..52d3f6f48 100644 --- a/src/server/api/epicRouter.ts +++ b/src/server/api/epicRouter.ts @@ -83,6 +83,14 @@ export const buildEpicRouter = ( return {}; } + if ( + targeting.pageId === 'info/privacy' || + targeting.pageId === 'info/complaints-and-corrections' || + targeting.pageId === 'about' + ) { + return {}; + } + const targetingMvtId = targeting.mvtId || 1; const tests = diff --git a/src/server/tests/banners/bannerSelection.ts b/src/server/tests/banners/bannerSelection.ts index fb15e9db5..26c82cec4 100644 --- a/src/server/tests/banners/bannerSelection.ts +++ b/src/server/tests/banners/bannerSelection.ts @@ -205,6 +205,14 @@ export const selectBannerTest = ( return null; } + if ( + targeting.pageId === 'info/privacy' || + targeting.pageId === 'info/complaints-and-corrections' || + targeting.pageId === 'about' + ) { + return null; + } + if (forcedTestVariant) { return getForcedVariant(forcedTestVariant, tests); } diff --git a/src/shared/types/targeting/banner.ts b/src/shared/types/targeting/banner.ts index a652176c9..fbc4920df 100644 --- a/src/shared/types/targeting/banner.ts +++ b/src/shared/types/targeting/banner.ts @@ -21,6 +21,7 @@ export type BannerTargeting = { isSignedIn: boolean; hasConsented: boolean; abandonedBasket?: AbandonedBasket; + pageId?: string; }; export type BannerPayload = { diff --git a/src/shared/types/targeting/epic.ts b/src/shared/types/targeting/epic.ts index 9216c5c89..4ae13c1d1 100644 --- a/src/shared/types/targeting/epic.ts +++ b/src/shared/types/targeting/epic.ts @@ -25,6 +25,7 @@ export type EpicTargeting = { url?: string; browserId?: string; // Only present if the user has consented to browserId-based targeting isSignedIn?: boolean; + pageId?: string; }; export type EpicPayload = { From d00146917ddbb70507c345792393349f81e592c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLAKSHMIRPILLAI=E2=80=9D?= <“luxmi.r.pillai@gmail.com”> Date: Thu, 27 Feb 2025 11:40:07 +0000 Subject: [PATCH 2/4] Add gutter and refactor --- src/server/api/bannerRouter.ts | 5 +++++ src/server/api/epicRouter.ts | 7 ++----- src/server/api/gutterRouter.ts | 5 +++++ src/server/tests/banners/bannerSelection.ts | 8 -------- src/shared/types/targeting/gutter.ts | 1 + src/shared/types/targeting/shared.ts | 7 +++++++ 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/server/api/bannerRouter.ts b/src/server/api/bannerRouter.ts index eaa3ab058..b4a68fb22 100644 --- a/src/server/api/bannerRouter.ts +++ b/src/server/api/bannerRouter.ts @@ -9,6 +9,7 @@ import { TestTracking, BannerDesignFromTool, Tracking, + pageIdsOfInterest, } from '../../shared/types'; import { selectAmountsTestVariant } from '../lib/ab'; import { ChannelSwitches } from '../channelSwitches'; @@ -60,6 +61,10 @@ export const buildBannerRouter = ( return {}; } + if (targeting.pageId && pageIdsOfInterest.has(targeting.pageId)) { + return {}; + } + const selectedTest = selectBannerTest( targeting, getDeviceType(req), diff --git a/src/server/api/epicRouter.ts b/src/server/api/epicRouter.ts index 52d3f6f48..42d67c726 100644 --- a/src/server/api/epicRouter.ts +++ b/src/server/api/epicRouter.ts @@ -6,6 +6,7 @@ import { EpicTest, EpicType, EpicVariant, + pageIdsOfInterest, TestTracking, Tracking, WeeklyArticleLog, @@ -83,11 +84,7 @@ export const buildEpicRouter = ( return {}; } - if ( - targeting.pageId === 'info/privacy' || - targeting.pageId === 'info/complaints-and-corrections' || - targeting.pageId === 'about' - ) { + if (targeting.pageId && pageIdsOfInterest.has(targeting.pageId)) { return {}; } diff --git a/src/server/api/gutterRouter.ts b/src/server/api/gutterRouter.ts index 2e1ceb634..7b20b919f 100644 --- a/src/server/api/gutterRouter.ts +++ b/src/server/api/gutterRouter.ts @@ -8,6 +8,7 @@ import { TestTracking, GutterTargeting, Tracking, + pageIdsOfInterest, } from '../../shared/types'; import { ChannelSwitches } from '../channelSwitches'; import { getDeviceType } from '../lib/deviceType'; @@ -41,6 +42,10 @@ export const buildGutterRouter = ( if (!enableGutterLiveblogs) { return {}; } + if (targeting.pageId && pageIdsOfInterest.has(targeting.pageId)) { + return {}; + } + const testSelection = selectGutterTest( targeting, tests.get(), diff --git a/src/server/tests/banners/bannerSelection.ts b/src/server/tests/banners/bannerSelection.ts index 26c82cec4..fb15e9db5 100644 --- a/src/server/tests/banners/bannerSelection.ts +++ b/src/server/tests/banners/bannerSelection.ts @@ -205,14 +205,6 @@ export const selectBannerTest = ( return null; } - if ( - targeting.pageId === 'info/privacy' || - targeting.pageId === 'info/complaints-and-corrections' || - targeting.pageId === 'about' - ) { - return null; - } - if (forcedTestVariant) { return getForcedVariant(forcedTestVariant, tests); } diff --git a/src/shared/types/targeting/gutter.ts b/src/shared/types/targeting/gutter.ts index 23327421a..a12f93650 100644 --- a/src/shared/types/targeting/gutter.ts +++ b/src/shared/types/targeting/gutter.ts @@ -5,6 +5,7 @@ export interface GutterTargeting { isSignedIn: boolean; tagIds?: string[]; sectionId?: string; + pageId?: string; } export type GutterPayload = { diff --git a/src/shared/types/targeting/shared.ts b/src/shared/types/targeting/shared.ts index 2ddf245b8..163e9f273 100644 --- a/src/shared/types/targeting/shared.ts +++ b/src/shared/types/targeting/shared.ts @@ -28,6 +28,13 @@ export interface PurchaseInfo { product: purchaseInfoProduct; } +//The pageIdsOfInterest has the pageIds in which we want to hide the SR messages +export const pageIdsOfInterest = new Set([ + 'info/privacy', + 'info/complaints-and-corrections', + 'about', +]); + export const abandonedBasketSchema = z.object({ amount: z.union([z.number(), z.literal('other')]), billingPeriod: z.union([z.literal('ONE_OFF'), z.literal('MONTHLY'), z.literal('ANNUAL')]), From c6fd6d8405fe3b270a2b55fead14e54bf304de57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLAKSHMIRPILLAI=E2=80=9D?= <“luxmi.r.pillai@gmail.com”> Date: Thu, 27 Feb 2025 11:57:33 +0000 Subject: [PATCH 3/4] Use common function --- src/server/api/bannerRouter.ts | 4 ++-- src/server/api/epicRouter.ts | 4 ++-- src/server/api/gutterRouter.ts | 5 +++-- src/shared/types/targeting/shared.ts | 9 +++++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/server/api/bannerRouter.ts b/src/server/api/bannerRouter.ts index b4a68fb22..4ffc915be 100644 --- a/src/server/api/bannerRouter.ts +++ b/src/server/api/bannerRouter.ts @@ -9,7 +9,7 @@ import { TestTracking, BannerDesignFromTool, Tracking, - pageIdsOfInterest, + hideSRMessagingForInfoPageIds, } from '../../shared/types'; import { selectAmountsTestVariant } from '../lib/ab'; import { ChannelSwitches } from '../channelSwitches'; @@ -61,7 +61,7 @@ export const buildBannerRouter = ( return {}; } - if (targeting.pageId && pageIdsOfInterest.has(targeting.pageId)) { + if (hideSRMessagingForInfoPageIds(targeting)) { return {}; } diff --git a/src/server/api/epicRouter.ts b/src/server/api/epicRouter.ts index 42d67c726..28c1c295c 100644 --- a/src/server/api/epicRouter.ts +++ b/src/server/api/epicRouter.ts @@ -6,7 +6,7 @@ import { EpicTest, EpicType, EpicVariant, - pageIdsOfInterest, + hideSRMessagingForInfoPageIds, TestTracking, Tracking, WeeklyArticleLog, @@ -84,7 +84,7 @@ export const buildEpicRouter = ( return {}; } - if (targeting.pageId && pageIdsOfInterest.has(targeting.pageId)) { + if (hideSRMessagingForInfoPageIds(targeting)) { return {}; } diff --git a/src/server/api/gutterRouter.ts b/src/server/api/gutterRouter.ts index 7b20b919f..8918f407a 100644 --- a/src/server/api/gutterRouter.ts +++ b/src/server/api/gutterRouter.ts @@ -8,7 +8,7 @@ import { TestTracking, GutterTargeting, Tracking, - pageIdsOfInterest, + hideSRMessagingForInfoPageIds, } from '../../shared/types'; import { ChannelSwitches } from '../channelSwitches'; import { getDeviceType } from '../lib/deviceType'; @@ -42,7 +42,8 @@ export const buildGutterRouter = ( if (!enableGutterLiveblogs) { return {}; } - if (targeting.pageId && pageIdsOfInterest.has(targeting.pageId)) { + + if (hideSRMessagingForInfoPageIds(targeting)) { return {}; } diff --git a/src/shared/types/targeting/shared.ts b/src/shared/types/targeting/shared.ts index 163e9f273..9fcae43bc 100644 --- a/src/shared/types/targeting/shared.ts +++ b/src/shared/types/targeting/shared.ts @@ -1,5 +1,8 @@ import { z } from 'zod'; import { purchaseInfoProduct, purchaseInfoUser } from '../purchaseInfo'; +import { BannerTargeting } from './banner'; +import { EpicTargeting } from './epic'; +import { GutterTargeting } from './gutter'; export type TagCounts = { [tag: string]: number; @@ -35,6 +38,12 @@ export const pageIdsOfInterest = new Set([ 'about', ]); +export const hideSRMessagingForInfoPageIds = ( + targeting: BannerTargeting | EpicTargeting | GutterTargeting, +): boolean => { + return targeting.pageId ? pageIdsOfInterest.has(targeting.pageId) : false; +}; + export const abandonedBasketSchema = z.object({ amount: z.union([z.number(), z.literal('other')]), billingPeriod: z.union([z.literal('ONE_OFF'), z.literal('MONTHLY'), z.literal('ANNUAL')]), From 2a1a474bcd24054f3790f20708b509747d85d16b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CLAKSHMIRPILLAI=E2=80=9D?= <“luxmi.r.pillai@gmail.com”> Date: Thu, 27 Feb 2025 12:01:53 +0000 Subject: [PATCH 4/4] Add changeset file --- .changeset/gorgeous-days-give.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gorgeous-days-give.md diff --git a/.changeset/gorgeous-days-give.md b/.changeset/gorgeous-days-give.md new file mode 100644 index 000000000..d801dc50b --- /dev/null +++ b/.changeset/gorgeous-days-give.md @@ -0,0 +1,5 @@ +--- +'@guardian/support-dotcom-components': minor +--- + +Add pageId to targeting