24 lines
752 B
JavaScript
24 lines
752 B
JavaScript
export function mergeCampaignAvailability(existingAvailability, campaignIds) {
|
|
const existingEnabled =
|
|
existingAvailability?.enabled &&
|
|
typeof existingAvailability.enabled === "object" &&
|
|
!Array.isArray(existingAvailability.enabled)
|
|
? existingAvailability.enabled
|
|
: {};
|
|
const normalizedCampaignIds = [
|
|
...new Set(campaignIds.filter((id) => typeof id === "string" && id.length > 0)),
|
|
];
|
|
const campaignIdSet = new Set(normalizedCampaignIds);
|
|
const preservedEntries = Object.entries(existingEnabled).filter(
|
|
([id]) => !campaignIdSet.has(id),
|
|
);
|
|
|
|
return {
|
|
schemaVersion: 1,
|
|
enabled: Object.fromEntries([
|
|
...preservedEntries,
|
|
...normalizedCampaignIds.map((id) => [id, true]),
|
|
]),
|
|
};
|
|
}
|