Fixed entity affiliate URL generator breaking if no entity URL exists, falling back on parent URL.
This commit is contained in:
parent
9e20af925f
commit
70049ed495
|
|
@ -164,11 +164,7 @@ const scrollable = computed(() => children.value?.scrollWidth > children.value?.
|
||||||
const domain = routeParams.domain;
|
const domain = routeParams.domain;
|
||||||
|
|
||||||
const entityUrl = (() => {
|
const entityUrl = (() => {
|
||||||
if (!entity.url) {
|
return entity.affiliateUrl || entity.url || null;
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return entity.affiliateUrl || entity.url;
|
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ export function getAffiliateSceneUrl(scene) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!scene.affiliate) {
|
if (!scene.affiliate || scene.affiliate.parameters.scene === false) {
|
||||||
return watchUrl;
|
return watchUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,14 +42,25 @@ export function getAffiliateSceneUrl(scene) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NATS deep URL
|
||||||
if (affiliateUrl?.includes('/track')
|
if (affiliateUrl?.includes('/track')
|
||||||
&& scene.affiliate.parameters.scene !== false
|
&& scene.affiliate.parameters.scene !== false
|
||||||
&& (!scene.channel.isIndependent || scene.channel.id === scene.affiliate.entityId)) { // standard NATS redirect
|
&& (!scene.channel.isIndependent || scene.channel.id === scene.affiliate.entityId)) {
|
||||||
const { pathname, search } = new URL(watchUrl);
|
const { pathname, search } = new URL(watchUrl);
|
||||||
|
|
||||||
return `${affiliateUrl}${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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const affiliateUrlComponents = new URL(affiliateUrl);
|
||||||
|
|
||||||
|
// NetFame / GammaE deep URL
|
||||||
|
if (affiliateUrlComponents.searchParams.has('pa') && affiliateUrlComponents.searchParams.has('ar')) {
|
||||||
|
affiliateUrlComponents.searchParams.set('pa', 'clip');
|
||||||
|
affiliateUrlComponents.searchParams.set('ar', scene.entryId);
|
||||||
|
|
||||||
|
return affiliateUrlComponents.href;
|
||||||
|
}
|
||||||
|
|
||||||
if (scene.affiliate.parameters.query) { // used by e.g. Bang
|
if (scene.affiliate.parameters.query) { // used by e.g. Bang
|
||||||
const newParams = new URLSearchParams({
|
const newParams = new URLSearchParams({
|
||||||
...Object.fromEntries(new URL(watchUrl).searchParams),
|
...Object.fromEntries(new URL(watchUrl).searchParams),
|
||||||
|
|
@ -63,29 +74,35 @@ export function getAffiliateSceneUrl(scene) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getAffiliateEntityUrl(entity) {
|
export function getAffiliateEntityUrl(entity) {
|
||||||
if (!entity.affiliate) {
|
const entityUrl = entity.url || entity.parent?.url;
|
||||||
return entity.url;
|
|
||||||
|
if (!entityUrl) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const affiliateUrl = entity.affiliate.parameters.replaceEntity?.hostname === new URL(entity.url).hostname
|
if (!entity.affiliate) {
|
||||||
? entity.affiliate.parameters.replaceEntity.url
|
return entityUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
const affiliateUrl = entity.affiliate.parameters.replaceEntity?.hostname === new URL(entityUrl).hostname
|
||||||
|
? entity.affiliate.parameters.replaceentityUrl
|
||||||
: entity.affiliate.url;
|
: entity.affiliate.url;
|
||||||
|
|
||||||
if (entity.id === entity.affiliate.entityId || entity.url === entity.parent?.url) {
|
if (entity.id === entity.affiliate.entityId || entityUrl === entity.parent?.url) {
|
||||||
return affiliateUrl;
|
return affiliateUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity.type === 'network' || entity.isIndependent) {
|
if (entity.type === 'network' || entity.isIndependent) {
|
||||||
return entity.url;
|
return entityUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// channel has its own domain
|
// channel has its own domain
|
||||||
if (new URL(entity.url).pathname === '/' && entity.url !== entity.parent?.url) {
|
if (new URL(entityUrl).pathname === '/' && entityUrl !== entity.parent?.url) {
|
||||||
return entity.url;
|
return entityUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity.affiliate.parameters.dynamicEntity) {
|
if (entity.affiliate.parameters.dynamicEntity) {
|
||||||
const entityPath = new URL(entity.url).pathname;
|
const entityPath = new URL(entityUrl).pathname;
|
||||||
|
|
||||||
return format(entity.affiliate.parameters.dynamicEntity, {
|
return format(entity.affiliate.parameters.dynamicEntity, {
|
||||||
entityPath: entity.affiliate.parameters.prefixSlash
|
entityPath: entity.affiliate.parameters.prefixSlash
|
||||||
|
|
@ -96,19 +113,19 @@ export function getAffiliateEntityUrl(entity) {
|
||||||
|
|
||||||
if (affiliateUrl?.includes('/track')
|
if (affiliateUrl?.includes('/track')
|
||||||
&& entity.affiliate.parameters.channel !== false) {
|
&& entity.affiliate.parameters.channel !== false) {
|
||||||
const { pathname, search } = new URL(entity.url);
|
const { pathname, search } = new URL(entityUrl);
|
||||||
|
|
||||||
return `${affiliateUrl}${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
|
if (entity.affiliate.parameters.query) { // used by e.g. Bang
|
||||||
const newParams = new URLSearchParams({
|
const newParams = new URLSearchParams({
|
||||||
...Object.fromEntries(new URL(entity.url).searchParams),
|
...Object.fromEntries(new URL(entityUrl).searchParams),
|
||||||
...Object.fromEntries(new URLSearchParams(entity.affiliate.parameters.query)),
|
...Object.fromEntries(new URLSearchParams(entity.affiliate.parameters.query)),
|
||||||
});
|
});
|
||||||
|
|
||||||
return `${entity.url}?${newParams.toString()}`;
|
return `${entityUrl}?${newParams.toString()}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return entity.url;
|
return entityUrl;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue