From 515d3885c7f3b5ae9dce924281edc01c63f1a6ba Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Tue, 3 Feb 2026 00:04:29 +0100 Subject: [PATCH] Fixed banner URL not resolving to affiliate definition. --- components/campaigns/campaign.vue | 2 ++ src/campaigns.js | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/components/campaigns/campaign.vue b/components/campaigns/campaign.vue index fc71fb8..ea2d576 100644 --- a/components/campaigns/campaign.vue +++ b/components/campaigns/campaign.vue @@ -38,6 +38,8 @@ const props = defineProps({ }, }); +// console.log(props.campaign); + const bannerSrc = (() => { if (props.campaign.banner) { if (props.campaign.banner.entity.type === 'network' || !props.campaign.banner.entity.parent) { diff --git a/src/campaigns.js b/src/campaigns.js index 397d871..ab6e3b2 100644 --- a/src/campaigns.js +++ b/src/campaigns.js @@ -8,7 +8,7 @@ import { getAffiliateEntityUrl } from './affiliates.js'; const logger = initLogger(); -function getCampaignUrl(campaign) { +function getCampaignUrl(campaign, entity) { if (!campaign) { return null; } @@ -17,8 +17,13 @@ function getCampaignUrl(campaign) { return campaign.url; } + if (campaign.affiliate?.url) { + return campaign.affiliate.url; + } + if (campaign.entity) { - return getAffiliateEntityUrl(campaign.entity, campaign.affiliate); + // resolve e.g. parameter tracking + return getAffiliateEntityUrl(entity, campaign.affiliate); } return null; @@ -29,9 +34,11 @@ function curateCampaign(campaign) { return null; } + const entity = campaign.entity && curateEntity({ ...campaign.entity, parent: campaign.parent_entity }); + const curatedCampaign = { id: campaign.id, - entity: campaign.entity && curateEntity({ ...campaign.entity, parent: campaign.parent_entity }), + entity, banner: campaign.banner && { id: campaign.banner.id, type: campaign.banner.type, @@ -48,7 +55,7 @@ function curateCampaign(campaign) { }, }; - curatedCampaign.url = getCampaignUrl(curatedCampaign); + curatedCampaign.url = getCampaignUrl(campaign, entity); return curatedCampaign; }