Use feature flag for the MSS Pitch feature
[MAILPOET-2142]
This commit is contained in:
committed by
Jack Kitterhing
parent
a222d91d71
commit
4154d0b928
@@ -4,8 +4,10 @@ import PropTypes from 'prop-types';
|
|||||||
import MSSUserSuccess from './success_for_mss_users.jsx';
|
import MSSUserSuccess from './success_for_mss_users.jsx';
|
||||||
import PitchMss from './success_pitch_mss.jsx';
|
import PitchMss from './success_pitch_mss.jsx';
|
||||||
|
|
||||||
function Success(props) {
|
import FeaturesContext from '../../../features/context.jsx';
|
||||||
if (!window.has_premium_key) {
|
|
||||||
|
function SuccessContent(props) {
|
||||||
|
if (!window.has_premium_key && props.isSupported('display-mss-pitch')) {
|
||||||
return (
|
return (
|
||||||
<PitchMss
|
<PitchMss
|
||||||
MSSPitchIllustrationUrl={props.MSSPitchIllustrationUrl}
|
MSSPitchIllustrationUrl={props.MSSPitchIllustrationUrl}
|
||||||
@@ -25,6 +27,19 @@ function Success(props) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Success(props) {
|
||||||
|
return (
|
||||||
|
<FeaturesContext.Consumer>
|
||||||
|
{(FeaturesController) => (
|
||||||
|
<SuccessContent
|
||||||
|
{...props}
|
||||||
|
isSupported={FeaturesController.isSupported}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</FeaturesContext.Consumer>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Success.propTypes = {
|
Success.propTypes = {
|
||||||
successClicked: PropTypes.func.isRequired,
|
successClicked: PropTypes.func.isRequired,
|
||||||
illustrationImageUrl: PropTypes.string.isRequired,
|
illustrationImageUrl: PropTypes.string.isRequired,
|
||||||
@@ -38,5 +53,18 @@ Success.propTypes = {
|
|||||||
mailpoetAccountUrl: PropTypes.string.isRequired,
|
mailpoetAccountUrl: PropTypes.string.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SuccessContent.propTypes = {
|
||||||
|
successClicked: PropTypes.func.isRequired,
|
||||||
|
illustrationImageUrl: PropTypes.string.isRequired,
|
||||||
|
MSSPitchIllustrationUrl: PropTypes.string.isRequired,
|
||||||
|
newsletter: PropTypes.shape({
|
||||||
|
status: PropTypes.string.isRequired,
|
||||||
|
type: PropTypes.string.isRequired,
|
||||||
|
}).isRequired,
|
||||||
|
isWoocommerceActive: PropTypes.bool.isRequired,
|
||||||
|
subscribersCount: PropTypes.number.isRequired,
|
||||||
|
mailpoetAccountUrl: PropTypes.string.isRequired,
|
||||||
|
isSupported: PropTypes.func.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
export default Success;
|
export default Success;
|
||||||
|
@@ -1,10 +1,11 @@
|
|||||||
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
export const getStepsCount = () => {
|
export const getStepsCount = () => {
|
||||||
let stepsCount = 3;
|
let stepsCount = 3;
|
||||||
if (window.is_woocommerce_active) {
|
if (window.is_woocommerce_active) {
|
||||||
stepsCount += 1;
|
stepsCount += 1;
|
||||||
}
|
}
|
||||||
if (!window.has_premium_key) {
|
if (!window.has_premium_key && MailPoet.FeaturesController.isSupported('display-mss-pitch')) {
|
||||||
stepsCount += 1;
|
stepsCount += 1;
|
||||||
}
|
}
|
||||||
return stepsCount;
|
return stepsCount;
|
||||||
|
@@ -5,6 +5,7 @@ namespace MailPoet\AdminPages\Pages;
|
|||||||
use MailPoet\AdminPages\PageRenderer;
|
use MailPoet\AdminPages\PageRenderer;
|
||||||
use MailPoet\Config\Env;
|
use MailPoet\Config\Env;
|
||||||
use MailPoet\Config\Menu;
|
use MailPoet\Config\Menu;
|
||||||
|
use MailPoet\Features\FeaturesController;
|
||||||
use MailPoet\Listing\PageLimit;
|
use MailPoet\Listing\PageLimit;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
@@ -40,6 +41,9 @@ class Newsletters {
|
|||||||
/** @var Installation */
|
/** @var Installation */
|
||||||
private $installation;
|
private $installation;
|
||||||
|
|
||||||
|
/** @var FeaturesController */
|
||||||
|
private $features_controller;
|
||||||
|
|
||||||
function __construct(
|
function __construct(
|
||||||
PageRenderer $page_renderer,
|
PageRenderer $page_renderer,
|
||||||
PageLimit $listing_page_limit,
|
PageLimit $listing_page_limit,
|
||||||
@@ -47,7 +51,8 @@ class Newsletters {
|
|||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
UserFlagsController $user_flags,
|
UserFlagsController $user_flags,
|
||||||
WooCommerceHelper $woocommerce_helper,
|
WooCommerceHelper $woocommerce_helper,
|
||||||
Installation $installation
|
Installation $installation,
|
||||||
|
FeaturesController $features_controller
|
||||||
) {
|
) {
|
||||||
$this->page_renderer = $page_renderer;
|
$this->page_renderer = $page_renderer;
|
||||||
$this->listing_page_limit = $listing_page_limit;
|
$this->listing_page_limit = $listing_page_limit;
|
||||||
@@ -56,6 +61,7 @@ class Newsletters {
|
|||||||
$this->user_flags = $user_flags;
|
$this->user_flags = $user_flags;
|
||||||
$this->woocommerce_helper = $woocommerce_helper;
|
$this->woocommerce_helper = $woocommerce_helper;
|
||||||
$this->installation = $installation;
|
$this->installation = $installation;
|
||||||
|
$this->features_controller = $features_controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
@@ -98,6 +104,7 @@ class Newsletters {
|
|||||||
$data['is_woocommerce_active'] = $this->woocommerce_helper->isWooCommerceActive();
|
$data['is_woocommerce_active'] = $this->woocommerce_helper->isWooCommerceActive();
|
||||||
$data['is_mailpoet_update_available'] = array_key_exists(Env::$plugin_path, $this->wp->getPluginUpdates());
|
$data['is_mailpoet_update_available'] = array_key_exists(Env::$plugin_path, $this->wp->getPluginUpdates());
|
||||||
$data['subscribers_count'] = Subscriber::getTotalSubscribers();
|
$data['subscribers_count'] = Subscriber::getTotalSubscribers();
|
||||||
|
$data['mailpoet_feature_flags'] = $this->features_controller->getAllFlags();
|
||||||
|
|
||||||
if (!$data['premium_plugin_active']) {
|
if (!$data['premium_plugin_active']) {
|
||||||
$data['free_premium_subscribers_limit'] = License::FREE_PREMIUM_SUBSCRIBERS_LIMIT;
|
$data['free_premium_subscribers_limit'] = License::FREE_PREMIUM_SUBSCRIBERS_LIMIT;
|
||||||
|
@@ -5,6 +5,7 @@ namespace MailPoet\AdminPages\Pages;
|
|||||||
use MailPoet\AdminPages\PageRenderer;
|
use MailPoet\AdminPages\PageRenderer;
|
||||||
use MailPoet\Config\Menu;
|
use MailPoet\Config\Menu;
|
||||||
use MailPoet\Config\MP2Migrator;
|
use MailPoet\Config\MP2Migrator;
|
||||||
|
use MailPoet\Features\FeaturesController;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Services\Bridge;
|
use MailPoet\Services\Bridge;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
@@ -24,16 +25,21 @@ class WelcomeWizard {
|
|||||||
/** @var WPFunctions */
|
/** @var WPFunctions */
|
||||||
private $wp;
|
private $wp;
|
||||||
|
|
||||||
|
/** @var FeaturesController */
|
||||||
|
private $features_controller;
|
||||||
|
|
||||||
function __construct(
|
function __construct(
|
||||||
PageRenderer $page_renderer,
|
PageRenderer $page_renderer,
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
WooCommerceHelper $woocommerce_helper,
|
WooCommerceHelper $woocommerce_helper,
|
||||||
WPFunctions $wp
|
WPFunctions $wp,
|
||||||
|
FeaturesController $features_controller
|
||||||
) {
|
) {
|
||||||
$this->page_renderer = $page_renderer;
|
$this->page_renderer = $page_renderer;
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
$this->woocommerce_helper = $woocommerce_helper;
|
$this->woocommerce_helper = $woocommerce_helper;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
|
$this->features_controller = $features_controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
@@ -47,6 +53,7 @@ class WelcomeWizard {
|
|||||||
'subscribers_count' => Subscriber::getTotalSubscribers(),
|
'subscribers_count' => Subscriber::getTotalSubscribers(),
|
||||||
'has_premium_key' => Bridge::isMSSKeySpecified(),
|
'has_premium_key' => Bridge::isMSSKeySpecified(),
|
||||||
];
|
];
|
||||||
|
$data['mailpoet_feature_flags'] = $this->features_controller->getAllFlags();
|
||||||
$this->page_renderer->displayPage('welcome_wizard.html', $data);
|
$this->page_renderer->displayPage('welcome_wizard.html', $data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,7 @@ class FeaturesController {
|
|||||||
const SEND_WORDPRESS_MAILS_WITH_MP3 = 'send-wordpress-mails-with-mp3';
|
const SEND_WORDPRESS_MAILS_WITH_MP3 = 'send-wordpress-mails-with-mp3';
|
||||||
const NEW_PREMIUM_PAGE = 'new-premium-page';
|
const NEW_PREMIUM_PAGE = 'new-premium-page';
|
||||||
const WC_TRANSACTIONAL_EMAILS_CUSTOMIZER = 'wc-transactional-emails-customizer';
|
const WC_TRANSACTIONAL_EMAILS_CUSTOMIZER = 'wc-transactional-emails-customizer';
|
||||||
|
const DISPLAY_MSS_PITCH = 'display-mss-pitch';
|
||||||
|
|
||||||
// Define feature defaults in the array below in the following form:
|
// Define feature defaults in the array below in the following form:
|
||||||
// self::FEATURE_NAME_OF_FEATURE => true,
|
// self::FEATURE_NAME_OF_FEATURE => true,
|
||||||
@@ -20,6 +21,7 @@ class FeaturesController {
|
|||||||
self::SEND_WORDPRESS_MAILS_WITH_MP3 => false,
|
self::SEND_WORDPRESS_MAILS_WITH_MP3 => false,
|
||||||
self::NEW_PREMIUM_PAGE => false,
|
self::NEW_PREMIUM_PAGE => false,
|
||||||
self::WC_TRANSACTIONAL_EMAILS_CUSTOMIZER => false,
|
self::WC_TRANSACTIONAL_EMAILS_CUSTOMIZER => false,
|
||||||
|
self::DISPLAY_MSS_PITCH => false,
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var array */
|
/** @var array */
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
var has_premium_key = <%= json_encode(has_premium_key) %>;
|
var has_premium_key = <%= json_encode(has_premium_key) %>;
|
||||||
var MSS_pitch_illustration_url = '<%= cdn_url('welcome-wizard/illu-pitch-mss.20190912.png') %>';
|
var MSS_pitch_illustration_url = '<%= cdn_url('welcome-wizard/illu-pitch-mss.20190912.png') %>';
|
||||||
var mailpoet_account_url = '<%= add_referral_id("https://account.mailpoet.com/?s=" ~ subscribers_count) %>';
|
var mailpoet_account_url = '<%= add_referral_id("https://account.mailpoet.com/?s=" ~ subscribers_count) %>';
|
||||||
|
var mailpoet_feature_flags = <%= json_encode(mailpoet_feature_flags) %>;
|
||||||
|
|
||||||
var mailpoet_woocommerce_active = <%= json_encode(is_woocommerce_active) %>;
|
var mailpoet_woocommerce_active = <%= json_encode(is_woocommerce_active) %>;
|
||||||
var mailpoet_automatic_emails = <%= json_encode(automatic_emails) %>;
|
var mailpoet_automatic_emails = <%= json_encode(automatic_emails) %>;
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
var subscribers_count = <%= subscribers_count %>;
|
var subscribers_count = <%= subscribers_count %>;
|
||||||
var mailpoet_account_url = '<%= add_referral_id("https://account.mailpoet.com/?s=" ~ subscribers_count) %>';
|
var mailpoet_account_url = '<%= add_referral_id("https://account.mailpoet.com/?s=" ~ subscribers_count) %>';
|
||||||
var has_premium_key = <%= json_encode(has_premium_key) %>;
|
var has_premium_key = <%= json_encode(has_premium_key) %>;
|
||||||
|
var mailpoet_feature_flags = <%= json_encode(mailpoet_feature_flags) %>;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id="mailpoet_wizard_container"></div>
|
<div id="mailpoet_wizard_container"></div>
|
||||||
|
Reference in New Issue
Block a user