Compare commits

..

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian 16f43066a4 0.42.24 2026-01-23 03:26:34 +01:00
DebaucheryLibrarian 6191e17c4e Improved affiliate logic. 2026-01-23 03:26:29 +01:00
3 changed files with 18 additions and 9 deletions

4
package-lock.json generated
View File

@ -1,11 +1,11 @@
{
"name": "traxxx-web",
"version": "0.42.23",
"version": "0.42.24",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "0.42.23",
"version": "0.42.24",
"dependencies": {
"@brillout/json-serializer": "^0.5.8",
"@dicebear/collection": "^7.0.5",

View File

@ -87,7 +87,7 @@
"overrides": {
"vite": "$vite"
},
"version": "0.42.23",
"version": "0.42.24",
"imports": {
"#/*": "./*.js"
}

View File

@ -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