Improved banner URL calculation.
This commit is contained in:
@@ -89,31 +89,32 @@ function getEntityUrl(entity) {
|
||||
}
|
||||
}
|
||||
|
||||
export function getAffiliateEntityUrl(entity) {
|
||||
export function getAffiliateEntityUrl(entity, affiliate) {
|
||||
const entityUrl = getEntityUrl(entity);
|
||||
const entityAffiliate = affiliate || entity.affiliate;
|
||||
|
||||
if (!entityUrl) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!entity.affiliate) {
|
||||
if (!entityAffiliate) {
|
||||
return entityUrl;
|
||||
}
|
||||
|
||||
if (entity.affiliate.parameters?.query) { // used by e.g. Bang
|
||||
if (entityAffiliate.parameters?.query) { // used by e.g. Bang
|
||||
const newParams = new URLSearchParams({
|
||||
...Object.fromEntries(new URL(entityUrl).searchParams),
|
||||
...Object.fromEntries(new URLSearchParams(entity.affiliate.parameters.query)),
|
||||
...Object.fromEntries(new URLSearchParams(entityAffiliate.parameters.query)),
|
||||
});
|
||||
|
||||
return `${entityUrl}?${newParams.toString()}`;
|
||||
}
|
||||
|
||||
const affiliateUrl = entity.affiliate.parameters.replaceEntity?.hostname === new URL(entityUrl).hostname
|
||||
? entity.affiliate.parameters.replaceEntity.url
|
||||
: entity.affiliate.url;
|
||||
const affiliateUrl = entityAffiliate.parameters?.replaceEntity?.hostname === new URL(entityUrl).hostname
|
||||
? entityAffiliate.parameters.replaceEntity.url
|
||||
: entityAffiliate.url;
|
||||
|
||||
if (entity.id === entity.affiliate.entityId || entityUrl === entity.parent?.url) {
|
||||
if (entity.id === entityAffiliate.entityId || entityUrl === entity.parent?.url) {
|
||||
return affiliateUrl;
|
||||
}
|
||||
|
||||
@@ -126,18 +127,18 @@ export function getAffiliateEntityUrl(entity) {
|
||||
return entityUrl;
|
||||
}
|
||||
|
||||
if (entity.affiliate.parameters.dynamicEntity) {
|
||||
if (entityAffiliate.parameters.dynamicEntity) {
|
||||
const entityPath = new URL(entityUrl).pathname;
|
||||
|
||||
return format(entity.affiliate.parameters.dynamicEntity, {
|
||||
entityPath: entity.affiliate.parameters.prefixSlash
|
||||
return format(entityAffiliate.parameters.dynamicEntity, {
|
||||
entityPath: entityAffiliate.parameters.prefixSlash
|
||||
? entityPath
|
||||
: entityPath.replace(/^\//, ''),
|
||||
});
|
||||
}
|
||||
|
||||
if (affiliateUrl?.includes('/track')
|
||||
&& entity.affiliate.parameters.channel !== false) {
|
||||
&& entityAffiliate.parameters.channel !== false) {
|
||||
const { pathname, search } = new URL(entityUrl);
|
||||
|
||||
return `${affiliateUrl}${pathname.replace(/^\/trial/, '')}${search}`; // replace needed for Jules Jordan, verify behavior on other sites
|
||||
|
||||
Reference in New Issue
Block a user