Add Coupon block feature flag

[MAILPOET-4678]
This commit is contained in:
Sam Najian
2023-01-18 22:21:27 +01:00
committed by Aschepikov
parent 9c8afa85d4
commit 41b23b24b9
5 changed files with 28 additions and 6 deletions

View File

@ -7,6 +7,9 @@ import { BaseBlock } from 'newsletter_editor/blocks/base';
import _ from 'underscore';
import jQuery from 'jquery';
import 'backbone.marionette';
import { MailPoet } from '../../mailpoet';
export const FEATURE_COUPON_BLOCK = 'Coupon block';
const Module: Record<string, (...args: unknown[]) => void> = {};
const base = BaseBlock;
@ -232,7 +235,10 @@ Module.CouponWidgetView = base.WidgetView.extend({
});
App.on('before:start', (BeforeStartApp) => {
if (!window.MailPoet.isWoocommerceActive) {
if (
!MailPoet.FeaturesController.isSupported(FEATURE_COUPON_BLOCK) ||
!window.MailPoet.isWoocommerceActive
) {
return;
}
BeforeStartApp.registerBlockType('coupon', {

View File

@ -9,11 +9,14 @@ class FeaturesController {
const FEATURE_LANDINGPAGE = 'landingpage';
const FEATURE_COUPON_BLOCK = 'Coupon block';
// Define feature defaults in the array below in the following form:
// self::FEATURE_NAME_OF_FEATURE => true,
private $defaults = [
self::FEATURE_HOMEPAGE => false,
self::FEATURE_LANDINGPAGE => false,
self::FEATURE_COUPON_BLOCK => false,
];
/** @var array|null */

View File

@ -3,6 +3,7 @@
namespace MailPoet\Newsletter\Renderer;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent;
use MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock;
use MailPoet\Tasks\Sending as SendingTask;
@ -31,16 +32,21 @@ class Preprocessor {
/*** @var CouponPreProcessor */
private $couponPreProcessor;
/*** @var FeaturesController */
private $featuresController;
public function __construct(
AbandonedCartContent $abandonedCartContent,
AutomatedLatestContentBlock $automatedLatestContent,
ContentPreprocessor $wooCommerceContentPreprocessor,
CouponPreProcessor $couponPreProcessor
CouponPreProcessor $couponPreProcessor,
FeaturesController $featuresController
) {
$this->abandonedCartContent = $abandonedCartContent;
$this->automatedLatestContent = $automatedLatestContent;
$this->wooCommerceContentPreprocessor = $wooCommerceContentPreprocessor;
$this->couponPreProcessor = $couponPreProcessor;
$this->featuresController = $featuresController;
}
/**
@ -54,7 +60,9 @@ class Preprocessor {
}
$blocks = [];
$contentBlocks = $content['blocks'];
$contentBlocks = $this->couponPreProcessor->processCoupons($newsletter, $contentBlocks, $preview);
if ($this->featuresController->isSupported(FeaturesController::FEATURE_COUPON_BLOCK)) {
$contentBlocks = $this->couponPreProcessor->processCoupons($newsletter, $contentBlocks, $preview);
}
foreach ($contentBlocks as $block) {
$processedBlock = $this->processBlock($newsletter, $block, $preview, $sendingTask);
if (!empty($processedBlock)) {

View File

@ -5,6 +5,7 @@ namespace MailPoet\WooCommerce\TransactionalEmails;
use Codeception\Stub;
use MailPoet\Config\ServicesChecker;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\Newsletter;
use MailPoet\Newsletter\Editor\LayoutHelper as L;
use MailPoet\Newsletter\NewslettersRepository;
@ -110,7 +111,8 @@ class RendererTest extends \MailPoetTest {
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent::class),
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock::class),
$wooPreprocessor,
$this->diContainer->get(\MailPoet\WooCommerce\CouponPreProcessor::class)
$this->diContainer->get(\MailPoet\WooCommerce\CouponPreProcessor::class),
$this->diContainer->get(FeaturesController::class)
),
$this->diContainer->get(\MailPoetVendor\CSS::class),
$this->diContainer->get(ServicesChecker::class),

View File

@ -4,6 +4,7 @@ namespace MailPoet\Test\Newsletter;
use Codeception\Stub;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent;
use MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock;
use MailPoet\Newsletter\Renderer\Preprocessor;
@ -22,7 +23,8 @@ class PreprocessorTest extends \MailPoetUnitTest {
],
]);
$wooPreprocessor = new TransactionalEmails\ContentPreprocessor($transactionalEmails);
$preprocessor = new Preprocessor($acc, $alc, $wooPreprocessor, $couponPreProcessor);
$featuresController = Stub::make(FeaturesController::class);
$preprocessor = new Preprocessor($acc, $alc, $wooPreprocessor, $couponPreProcessor, $featuresController);
expect($preprocessor->processBlock(new NewsletterEntity(), ['type' => 'woocommerceHeading']))->equals([[
'type' => 'container',
'orientation' => 'horizontal',
@ -50,7 +52,8 @@ class PreprocessorTest extends \MailPoetUnitTest {
$alc = Stub::make(AutomatedLatestContentBlock::class);
$couponPreProcessor = Stub::make(CouponPreProcessor::class);
$wooPreprocessor = new TransactionalEmails\ContentPreprocessor(Stub::make(TransactionalEmails::class));
$preprocessor = new Preprocessor($acc, $alc, $wooPreprocessor, $couponPreProcessor);
$featuresController = Stub::make(FeaturesController::class);
$preprocessor = new Preprocessor($acc, $alc, $wooPreprocessor, $couponPreProcessor, $featuresController);
expect($preprocessor->processBlock(new NewsletterEntity(), ['type' => 'woocommerceContent']))->equals([[
'type' => 'container',
'orientation' => 'horizontal',