Use feature flag for the MSS Pitch feature

[MAILPOET-2142]
This commit is contained in:
Pavel Dohnal
2019-09-17 14:24:39 +02:00
committed by Jack Kitterhing
parent a222d91d71
commit 4154d0b928
7 changed files with 52 additions and 5 deletions

View File

@@ -4,8 +4,10 @@ import PropTypes from 'prop-types';
import MSSUserSuccess from './success_for_mss_users.jsx';
import PitchMss from './success_pitch_mss.jsx';
function Success(props) {
if (!window.has_premium_key) {
import FeaturesContext from '../../../features/context.jsx';
function SuccessContent(props) {
if (!window.has_premium_key && props.isSupported('display-mss-pitch')) {
return (
<PitchMss
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 = {
successClicked: PropTypes.func.isRequired,
illustrationImageUrl: PropTypes.string.isRequired,
@@ -38,5 +53,18 @@ Success.propTypes = {
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;

View File

@@ -1,10 +1,11 @@
import MailPoet from 'mailpoet';
export const getStepsCount = () => {
let stepsCount = 3;
if (window.is_woocommerce_active) {
stepsCount += 1;
}
if (!window.has_premium_key) {
if (!window.has_premium_key && MailPoet.FeaturesController.isSupported('display-mss-pitch')) {
stepsCount += 1;
}
return stepsCount;

View File

@@ -5,6 +5,7 @@ namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer;
use MailPoet\Config\Env;
use MailPoet\Config\Menu;
use MailPoet\Features\FeaturesController;
use MailPoet\Listing\PageLimit;
use MailPoet\Models\Newsletter;
use MailPoet\Models\Segment;
@@ -40,6 +41,9 @@ class Newsletters {
/** @var Installation */
private $installation;
/** @var FeaturesController */
private $features_controller;
function __construct(
PageRenderer $page_renderer,
PageLimit $listing_page_limit,
@@ -47,7 +51,8 @@ class Newsletters {
SettingsController $settings,
UserFlagsController $user_flags,
WooCommerceHelper $woocommerce_helper,
Installation $installation
Installation $installation,
FeaturesController $features_controller
) {
$this->page_renderer = $page_renderer;
$this->listing_page_limit = $listing_page_limit;
@@ -56,6 +61,7 @@ class Newsletters {
$this->user_flags = $user_flags;
$this->woocommerce_helper = $woocommerce_helper;
$this->installation = $installation;
$this->features_controller = $features_controller;
}
function render() {
@@ -98,6 +104,7 @@ class Newsletters {
$data['is_woocommerce_active'] = $this->woocommerce_helper->isWooCommerceActive();
$data['is_mailpoet_update_available'] = array_key_exists(Env::$plugin_path, $this->wp->getPluginUpdates());
$data['subscribers_count'] = Subscriber::getTotalSubscribers();
$data['mailpoet_feature_flags'] = $this->features_controller->getAllFlags();
if (!$data['premium_plugin_active']) {
$data['free_premium_subscribers_limit'] = License::FREE_PREMIUM_SUBSCRIBERS_LIMIT;

View File

@@ -5,6 +5,7 @@ namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer;
use MailPoet\Config\Menu;
use MailPoet\Config\MP2Migrator;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\Subscriber;
use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController;
@@ -24,16 +25,21 @@ class WelcomeWizard {
/** @var WPFunctions */
private $wp;
/** @var FeaturesController */
private $features_controller;
function __construct(
PageRenderer $page_renderer,
SettingsController $settings,
WooCommerceHelper $woocommerce_helper,
WPFunctions $wp
WPFunctions $wp,
FeaturesController $features_controller
) {
$this->page_renderer = $page_renderer;
$this->settings = $settings;
$this->woocommerce_helper = $woocommerce_helper;
$this->wp = $wp;
$this->features_controller = $features_controller;
}
function render() {
@@ -47,6 +53,7 @@ class WelcomeWizard {
'subscribers_count' => Subscriber::getTotalSubscribers(),
'has_premium_key' => Bridge::isMSSKeySpecified(),
];
$data['mailpoet_feature_flags'] = $this->features_controller->getAllFlags();
$this->page_renderer->displayPage('welcome_wizard.html', $data);
}
}

View File

@@ -12,6 +12,7 @@ class FeaturesController {
const SEND_WORDPRESS_MAILS_WITH_MP3 = 'send-wordpress-mails-with-mp3';
const NEW_PREMIUM_PAGE = 'new-premium-page';
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:
// self::FEATURE_NAME_OF_FEATURE => true,
@@ -20,6 +21,7 @@ class FeaturesController {
self::SEND_WORDPRESS_MAILS_WITH_MP3 => false,
self::NEW_PREMIUM_PAGE => false,
self::WC_TRANSACTIONAL_EMAILS_CUSTOMIZER => false,
self::DISPLAY_MSS_PITCH => false,
];
/** @var array */

View File

@@ -28,6 +28,7 @@
var has_premium_key = <%= json_encode(has_premium_key) %>;
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_feature_flags = <%= json_encode(mailpoet_feature_flags) %>;
var mailpoet_woocommerce_active = <%= json_encode(is_woocommerce_active) %>;
var mailpoet_automatic_emails = <%= json_encode(automatic_emails) %>;

View File

@@ -18,6 +18,7 @@
var subscribers_count = <%= 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 mailpoet_feature_flags = <%= json_encode(mailpoet_feature_flags) %>;
</script>
<div id="mailpoet_wizard_container"></div>