diff --git a/assets/js/src/announcements/free_plan_announcement.jsx b/assets/js/src/announcements/free_plan_announcement.jsx index 49d16d0069..b422e0269b 100644 --- a/assets/js/src/announcements/free_plan_announcement.jsx +++ b/assets/js/src/announcements/free_plan_announcement.jsx @@ -1,6 +1,5 @@ import React from 'react'; import MailPoet from 'mailpoet'; -import addReferralId from 'referral_url_decorator.jsx'; class FreePlanAnnouncement extends React.Component { constructor(props) { @@ -33,7 +32,7 @@ class FreePlanAnnouncement extends React.Component {

{MailPoet.I18n.t('freePlanDescription')}

diff --git a/assets/js/src/listing/notices.jsx b/assets/js/src/listing/notices.jsx index 81638e9fad..f6c0ddeec7 100644 --- a/assets/js/src/listing/notices.jsx +++ b/assets/js/src/listing/notices.jsx @@ -2,7 +2,6 @@ import React from 'react'; import MailPoet from 'mailpoet'; import PropTypes from 'prop-types'; import ReactStringReplace from 'react-string-replace'; -import addReferralId from 'referral_url_decorator.jsx'; const resumeMailerSending = () => { MailPoet.Ajax.post({ @@ -116,7 +115,7 @@ const PHPMailerCheckSettingsNotice = () => (

diff --git a/assets/js/src/mailpoet.js b/assets/js/src/mailpoet.js index 17d9fc36fc..6a841a1d1d 100644 --- a/assets/js/src/mailpoet.js +++ b/assets/js/src/mailpoet.js @@ -1,8 +1,10 @@ import FeaturesController from 'features_controller'; +import MailPoetUrlFactory from 'mailpoet_url_factory'; // A placeholder for MailPoet object var MailPoet = { FeaturesController: FeaturesController(window.mailpoet_feature_flags), + MailPoetUrlFactory: MailPoetUrlFactory(window.mailpoet_referral_id), }; // Expose MailPoet globally diff --git a/assets/js/src/mailpoet_url_factory.js b/assets/js/src/mailpoet_url_factory.js new file mode 100644 index 0000000000..63131ee28e --- /dev/null +++ b/assets/js/src/mailpoet_url_factory.js @@ -0,0 +1,27 @@ +const addReferralId = (url, referralId) => { + if (!referralId) { + return url; + } + const refUrl = new URL(url); + refUrl.searchParams.set('ref', referralId); + return refUrl.toString(); +}; + +const MailPoetUrlFactory = referralId => ({ + getFreePlanUrl: (utmCampaign = null, utmMedium = null) => { + const url = new URL(addReferralId('https://www.mailpoet.com/free-plan/?utm_source=plugin', referralId)); + if (utmCampaign) { + url.searchParams.set('utm_campaign', utmCampaign); + } + if (utmMedium) { + url.searchParams.set('utm_medium', utmMedium); + } + return url.toString(); + }, + + getPricingPageUrl: subscribersCount => ( + addReferralId(`https://www.mailpoet.com/pricing/?subscribers=${subscribersCount}`, referralId) + ), +}); + +export default MailPoetUrlFactory; diff --git a/assets/js/src/newsletter_editor/components/sidebar.js b/assets/js/src/newsletter_editor/components/sidebar.js index 55b97eea25..5d51db20e4 100644 --- a/assets/js/src/newsletter_editor/components/sidebar.js +++ b/assets/js/src/newsletter_editor/components/sidebar.js @@ -7,7 +7,6 @@ import Marionette from 'backbone.marionette'; import SuperModel from 'backbone.supermodel'; import _ from 'underscore'; import jQuery from 'jquery'; -import addReferralId from 'referral_url_decorator.jsx'; var Module = {}; var SidebarView; @@ -352,7 +351,7 @@ Module.SidebarPreviewView = Marionette.View.extend({

${MailPoet.I18n.t('newsletterPreviewErrorUseSendingService')}

diff --git a/assets/js/src/newsletters/campaign_stats/premium_banner.jsx b/assets/js/src/newsletters/campaign_stats/premium_banner.jsx index bef9aa22b0..0dc6295a4d 100644 --- a/assets/js/src/newsletters/campaign_stats/premium_banner.jsx +++ b/assets/js/src/newsletters/campaign_stats/premium_banner.jsx @@ -1,6 +1,5 @@ import React from 'react'; import MailPoet from 'mailpoet'; -import addReferralId from 'referral_url_decorator.jsx'; const PremiumBanner = () => { if (window.mailpoet_premium_active) { @@ -12,7 +11,7 @@ const PremiumBanner = () => { ctaButton = ( @@ -23,7 +22,7 @@ const PremiumBanner = () => { ctaButton = ( diff --git a/assets/js/src/referral_url_decorator.jsx b/assets/js/src/referral_url_decorator.jsx deleted file mode 100644 index bebb86d2ee..0000000000 --- a/assets/js/src/referral_url_decorator.jsx +++ /dev/null @@ -1,10 +0,0 @@ -const addReferralId = (url) => { - if (!window.mailpoet_referral_id) { - return url; - } - const refUrl = new URL(url); - refUrl.searchParams.set('ref', window.mailpoet_referral_id); - return refUrl.toString(); -}; - -export default addReferralId;