Clarify watermark features across packages
This commit is contained in:
@@ -41,11 +41,26 @@ function normalizePackageFeatures(pkg: Package | null): string[] {
|
||||
}
|
||||
|
||||
export function getEnabledPackageFeatures(pkg: Package): string[] {
|
||||
return normalizePackageFeatures(pkg);
|
||||
const features = normalizePackageFeatures(pkg);
|
||||
const watermarkFeature = resolvePackageWatermarkFeatureKey(pkg, features);
|
||||
|
||||
if (watermarkFeature) {
|
||||
const cleaned = features.filter(
|
||||
(feature) => !['watermark', 'watermark_allowed', 'no_watermark', 'watermark_base', 'watermark_custom'].includes(feature)
|
||||
);
|
||||
cleaned.push(watermarkFeature);
|
||||
return Array.from(new Set(cleaned));
|
||||
}
|
||||
|
||||
return features;
|
||||
}
|
||||
|
||||
function collectFeatures(pkg: Package | null): Set<string> {
|
||||
return new Set(normalizePackageFeatures(pkg));
|
||||
if (!pkg) {
|
||||
return new Set();
|
||||
}
|
||||
|
||||
return new Set(getEnabledPackageFeatures(pkg));
|
||||
}
|
||||
|
||||
function compareLimit(candidate: number | null, active: number | null): number {
|
||||
@@ -119,9 +134,12 @@ export function selectRecommendedPackageId(
|
||||
return null;
|
||||
}
|
||||
|
||||
const candidates = feature === 'watermark_allowed'
|
||||
? packages.filter((pkg) => pkg.watermark_allowed === true)
|
||||
: packages.filter((pkg) => normalizePackageFeatures(pkg).includes(feature));
|
||||
const candidates =
|
||||
feature === 'watermark_allowed'
|
||||
? packages.filter((pkg) => pkg.watermark_allowed === true)
|
||||
: feature?.startsWith('watermark')
|
||||
? packages.filter((pkg) => resolvePackageWatermarkFeatureKey(pkg, normalizePackageFeatures(pkg)) === feature)
|
||||
: packages.filter((pkg) => normalizePackageFeatures(pkg).includes(feature));
|
||||
if (candidates.length === 0) {
|
||||
return null;
|
||||
}
|
||||
@@ -151,7 +169,7 @@ export function buildPackageComparisonRows(packages: Package[]): PackageComparis
|
||||
|
||||
const featureKeys = new Set<string>();
|
||||
packages.forEach((pkg) => {
|
||||
normalizePackageFeatures(pkg).forEach((key) => {
|
||||
getEnabledPackageFeatures(pkg).forEach((key) => {
|
||||
if (key !== 'photos') {
|
||||
featureKeys.add(key);
|
||||
}
|
||||
@@ -168,3 +186,23 @@ export function buildPackageComparisonRows(packages: Package[]): PackageComparis
|
||||
|
||||
return [...limitRows, ...featureRows];
|
||||
}
|
||||
|
||||
function resolvePackageWatermarkFeatureKey(pkg: Package, features: string[]): string | null {
|
||||
if (pkg.type === 'reseller') {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (pkg.watermark_allowed === false) {
|
||||
return 'watermark_base';
|
||||
}
|
||||
|
||||
if (features.includes('no_watermark')) {
|
||||
return 'no_watermark';
|
||||
}
|
||||
|
||||
if (pkg.watermark_allowed === true) {
|
||||
return 'watermark_custom';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user