Repository URL to install this package:
|
Version:
2.0.0 ▾
|
import { setUserDataRequest } from '../methods/requests';
import { businessPremiumPlans, inactivePlans, paywallSegments } from '../constants/segments';
import { bannerPostfix } from '../constants/tracking';
import { modalTypes } from '../constants/paywall';
export default ({ segments, activeCalendarMax, activeCalendarCount, appSettings = {}, token, apiHost }) => {
const isBusinessPlan = segments.some(segment =>
businessPremiumPlans.some(businessPremiumPlan => businessPremiumPlan === segment)
);
const isLimitOfCalendars = activeCalendarCount >= activeCalendarMax;
const isPremiumActive = segments.some(segment => segment === paywallSegments.PRIVATE_PREMIUM_ACTIVE);
const isPremiumInTrial = segments.some(segment => segment === paywallSegments.PRIVATE_PREMIUM_IN_TRIAL);
const isUserHadTrial = segments.some(segment => inactivePlans.some(inactivePlan => inactivePlan === segment));
const { isUpgradeToBusinessModalDisabled } = appSettings;
switch (true) {
case isBusinessPlan: {
return { shouldOpenModal: false };
}
case isPremiumActive && !isUpgradeToBusinessModalDisabled: {
setUserDataRequest({
data: { ...appSettings, isUpgradeToBusinessModalDisabled: !isUpgradeToBusinessModalDisabled },
token,
apiHost,
});
return {
shouldOpenModal: true,
modalType: modalTypes.getPremium,
trackingEventPostfix: bannerPostfix.privateSubscription,
};
}
case !isLimitOfCalendars: {
return { shouldOpenModal: false };
}
case isPremiumActive: {
return {
shouldOpenModal: true,
modalType: modalTypes.getPlanAfterLimit,
trackingEventPostfix: bannerPostfix.privateSubscription,
};
}
case isPremiumInTrial: {
return {
shouldOpenModal: true,
modalType: modalTypes.upgradePrivateTrial,
trackingEventPostfix: bannerPostfix.privateTrial,
};
}
case isUserHadTrial: {
return {
shouldOpenModal: true,
modalType: modalTypes.getPremiumAfterLimit,
trackingEventPostfix: bannerPostfix.freeNotEligibleForTrial,
};
}
default: {
return {
shouldOpenModal: true,
modalType: modalTypes.getTrial,
trackingEventPostfix: bannerPostfix.freeEligibleForTrial,
};
}
}
};