diff --git a/src/affiliates.js b/src/affiliates.js index cf05be2..e3b7874 100644 --- a/src/affiliates.js +++ b/src/affiliates.js @@ -25,12 +25,16 @@ export function getAffiliateSceneUrl(scene) { return watchUrl; } - if (scene.affiliate.url?.includes('/track') + const affiliateUrl = scene.affiliate.parameters.replace?.hostname === new URL(watchUrl).hostname + ? scene.affiliate.parameters.replace.url + : scene.affiliate.url; + + if (affiliateUrl?.includes('/track') && scene.affiliate.parameters.scene !== false && (!scene.channel.isIndependent || scene.channel.id === scene.affiliate.entityId)) { // standard NATS redirect const { pathname, search } = new URL(watchUrl); - return `${scene.affiliate.url}${pathname.replace(/^\/trial/, '')}${search}`; // replace needed for Jules Jordan, verify behavior on other sites + return `${affiliateUrl}${pathname.replace(/^\/trial/, '')}${search}`; // replace needed for Jules Jordan, verify behavior on other sites } if (scene.affiliate.parameters.query) { // used by e.g. Bang @@ -50,23 +54,28 @@ export function getAffiliateEntityUrl(entity) { return entity.url; } + const affiliateUrl = entity.affiliate.parameters.replace?.hostname === new URL(entity.url).hostname + ? entity.affiliate.parameters.replace.url + : entity.affiliate.url; + if (entity.id === entity.affiliate.entityId) { - return entity.affiliate.url; + return affiliateUrl; } if (entity.type === 'network' || entity.isIndependent) { return entity.url; } - if (new URL(entity.url).hostname !== new URL(entity.affiliate.url).hostname) { + // channel has its own domain + if (new URL(entity.url).pathname === '/') { return entity.url; } - if (entity.affiliate.url?.includes('/track') + if (affiliateUrl?.includes('/track') && entity.affiliate.parameters.channel !== false) { const { pathname, search } = new URL(entity.url); - return `${entity.affiliate.url}${pathname.replace(/^\/trial/, '')}${search}`; // replace needed for Jules Jordan, verify behavior on other sites + return `${affiliateUrl}${pathname.replace(/^\/trial/, '')}${search}`; // replace needed for Jules Jordan, verify behavior on other sites } if (entity.affiliate.parameters.query) { // used by e.g. Bang