Refactor some modules to native modularity support.

This commit is contained in:
Pedro Silva 2023-12-15 14:16:53 +00:00
parent 838449251f
commit 144474169b
No known key found for this signature in database
GPG key ID: E2EE20C0669D24B3
11 changed files with 107 additions and 103 deletions

View file

@ -34,6 +34,19 @@ return function (
$properties = PluginProperties::new( __FILE__ ); $properties = PluginProperties::new( __FILE__ );
$bootstrap = Package::new( $properties ); $bootstrap = Package::new( $properties );
foreach ($modules as $key => $module) {
if (
$module instanceof \WooCommerce\PayPalCommerce\AdminNotices\AdminNotices ||
$module instanceof \WooCommerce\PayPalCommerce\Button\ButtonModule
) {
$bootstrap->addModule( $module );
unset($modules[$key]);
}
}
$bootstrap->addModule( new DhiiToModularityModule( $modules ) ); $bootstrap->addModule( new DhiiToModularityModule( $modules ) );
$bootstrap->boot(); $bootstrap->boot();

View file

@ -9,8 +9,6 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\AdminNotices; namespace WooCommerce\PayPalCommerce\AdminNotices;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; return static function (): AdminNotices {
return static function (): ModuleInterface {
return new AdminNotices(); return new AdminNotices();
}; };

View file

@ -9,30 +9,36 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\AdminNotices; namespace WooCommerce\PayPalCommerce\AdminNotices;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExtendingModule;
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
/** /**
* Class AdminNotices * Class AdminNotices
*/ */
class AdminNotices implements ModuleInterface { class AdminNotices implements ServiceModule, ExtendingModule, ExecutableModule {
use ModuleClassNameIdTrait;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function setup(): ServiceProviderInterface { public function services(): array {
return new ServiceProvider( return require __DIR__ . '/../services.php';
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function run( ContainerInterface $c ): void { public function extensions(): array {
return require __DIR__ . '/../extensions.php';
}
/**
* {@inheritDoc}
*/
public function run( ContainerInterface $c ): bool {
add_action( add_action(
'admin_notices', 'admin_notices',
function() use ( $c ) { function() use ( $c ) {
@ -40,13 +46,7 @@ class AdminNotices implements ModuleInterface {
$renderer->render(); $renderer->render();
} }
); );
}
/** return true;
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
} }
} }

View file

@ -9,8 +9,6 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\ApiClient; namespace WooCommerce\PayPalCommerce\ApiClient;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; return function (): ApiModule {
return function (): ModuleInterface {
return new ApiModule(); return new ApiModule();
}; };

View file

@ -12,31 +12,37 @@ namespace WooCommerce\PayPalCommerce\ApiClient;
use WC_Order; use WC_Order;
use WooCommerce\PayPalCommerce\ApiClient\Helper\FailureRegistry; use WooCommerce\PayPalCommerce\ApiClient\Helper\FailureRegistry;
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderTransient; use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderTransient;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExtendingModule;
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order; use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
/** /**
* Class ApiModule * Class ApiModule
*/ */
class ApiModule implements ModuleInterface { class ApiModule implements ServiceModule, ExtendingModule, ExecutableModule {
use ModuleClassNameIdTrait;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function setup(): ServiceProviderInterface { public function services(): array {
return new ServiceProvider( return require __DIR__ . '/../services.php';
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function run( ContainerInterface $c ): void { public function extensions(): array {
return require __DIR__ . '/../extensions.php';
}
/**
* {@inheritDoc}
*/
public function run( ContainerInterface $c ): bool {
add_action( add_action(
'woocommerce_after_calculate_totals', 'woocommerce_after_calculate_totals',
function ( \WC_Cart $cart ) { function ( \WC_Cart $cart ) {
@ -94,13 +100,7 @@ class ApiModule implements ModuleInterface {
10, 10,
2 2
); );
}
/** return true;
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
} }
} }

View file

@ -9,8 +9,6 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\Applepay; namespace WooCommerce\PayPalCommerce\Applepay;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; return static function (): ApplepayModule {
return static function (): ModuleInterface {
return new ApplepayModule(); return new ApplepayModule();
}; };

View file

@ -17,30 +17,37 @@ use WooCommerce\PayPalCommerce\Button\Assets\ButtonInterface;
use WooCommerce\PayPalCommerce\Button\Assets\SmartButtonInterface; use WooCommerce\PayPalCommerce\Button\Assets\SmartButtonInterface;
use WooCommerce\PayPalCommerce\Applepay\Helper\AvailabilityNotice; use WooCommerce\PayPalCommerce\Applepay\Helper\AvailabilityNotice;
use WooCommerce\PayPalCommerce\Onboarding\Environment; use WooCommerce\PayPalCommerce\Onboarding\Environment;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExtendingModule;
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
/** /**
* Class ApplepayModule * Class ApplepayModule
*/ */
class ApplepayModule implements ModuleInterface { class ApplepayModule implements ServiceModule, ExtendingModule, ExecutableModule {
use ModuleClassNameIdTrait;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function setup(): ServiceProviderInterface { public function services(): array {
return new ServiceProvider( return require __DIR__ . '/../services.php';
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function run( ContainerInterface $c ): void { public function extensions(): array {
return require __DIR__ . '/../extensions.php';
}
/**
* {@inheritDoc}
*/
public function run( ContainerInterface $c ): bool {
$module = $this; $module = $this;
// Clears product status when appropriate. // Clears product status when appropriate.
@ -116,14 +123,8 @@ class ApplepayModule implements ModuleInterface {
100, 100,
2 2
); );
}
/** return true;
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
} }
/** /**

View file

@ -9,8 +9,6 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\Blocks; namespace WooCommerce\PayPalCommerce\Blocks;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; return static function (): BlocksModule {
return static function (): ModuleInterface {
return new BlocksModule(); return new BlocksModule();
}; };

View file

@ -12,29 +12,36 @@ namespace WooCommerce\PayPalCommerce\Blocks;
use Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry; use Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry;
use WooCommerce\PayPalCommerce\Blocks\Endpoint\UpdateShippingEndpoint; use WooCommerce\PayPalCommerce\Blocks\Endpoint\UpdateShippingEndpoint;
use WooCommerce\PayPalCommerce\Button\Assets\SmartButtonInterface; use WooCommerce\PayPalCommerce\Button\Assets\SmartButtonInterface;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExtendingModule;
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
/** /**
* Class BlocksModule * Class BlocksModule
*/ */
class BlocksModule implements ModuleInterface { class BlocksModule implements ServiceModule, ExtendingModule, ExecutableModule {
use ModuleClassNameIdTrait;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function setup(): ServiceProviderInterface { public function services(): array {
return new ServiceProvider( return require __DIR__ . '/../services.php';
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function run( ContainerInterface $c ): void { public function extensions(): array {
return require __DIR__ . '/../extensions.php';
}
/**
* {@inheritDoc}
*/
public function run( ContainerInterface $c ): bool {
if ( if (
! class_exists( 'Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType' ) ! class_exists( 'Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType' )
|| ! function_exists( 'woocommerce_store_api_register_payment_requirements' ) || ! function_exists( 'woocommerce_store_api_register_payment_requirements' )
@ -54,7 +61,7 @@ class BlocksModule implements ModuleInterface {
} }
); );
return; return true;
} }
add_action( add_action(
@ -88,13 +95,7 @@ class BlocksModule implements ModuleInterface {
$endpoint->handle_request(); $endpoint->handle_request();
} }
); );
}
/** return true;
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
} }
} }

View file

@ -9,8 +9,6 @@ declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\Button; namespace WooCommerce\PayPalCommerce\Button;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; return static function (): ButtonModule {
return static function (): ModuleInterface {
return new ButtonModule(); return new ButtonModule();
}; };

View file

@ -14,8 +14,6 @@ use WooCommerce\PayPalCommerce\Button\Endpoint\CartScriptParamsEndpoint;
use WooCommerce\PayPalCommerce\Button\Endpoint\SaveCheckoutFormEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\SaveCheckoutFormEndpoint;
use WooCommerce\PayPalCommerce\Button\Endpoint\SimulateCartEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\SimulateCartEndpoint;
use WooCommerce\PayPalCommerce\Button\Endpoint\ValidateCheckoutEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\ValidateCheckoutEndpoint;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider;
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface;
use WooCommerce\PayPalCommerce\Button\Assets\SmartButtonInterface; use WooCommerce\PayPalCommerce\Button\Assets\SmartButtonInterface;
use WooCommerce\PayPalCommerce\Button\Endpoint\ApproveOrderEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\ApproveOrderEndpoint;
use WooCommerce\PayPalCommerce\Button\Endpoint\ChangeCartEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\ChangeCartEndpoint;
@ -23,29 +21,36 @@ use WooCommerce\PayPalCommerce\Button\Endpoint\CreateOrderEndpoint;
use WooCommerce\PayPalCommerce\Button\Endpoint\DataClientIdEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\DataClientIdEndpoint;
use WooCommerce\PayPalCommerce\Button\Endpoint\StartPayPalVaultingEndpoint; use WooCommerce\PayPalCommerce\Button\Endpoint\StartPayPalVaultingEndpoint;
use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler; use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface; use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExtendingModule;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ServiceModule;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
/** /**
* Class ButtonModule * Class ButtonModule
*/ */
class ButtonModule implements ModuleInterface { class ButtonModule implements ServiceModule, ExtendingModule, ExecutableModule {
use ModuleClassNameIdTrait;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function setup(): ServiceProviderInterface { public function services(): array {
return new ServiceProvider( return require __DIR__ . '/../services.php';
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function run( ContainerInterface $c ): void { public function extensions(): array {
return require __DIR__ . '/../extensions.php';
}
/**
* {@inheritDoc}
*/
public function run( ContainerInterface $c ): bool {
add_action( add_action(
'wp', 'wp',
@ -91,6 +96,8 @@ class ButtonModule implements ModuleInterface {
); );
$this->register_ajax_endpoints( $c ); $this->register_ajax_endpoints( $c );
return true;
} }
/** /**
@ -211,12 +218,4 @@ class ButtonModule implements ModuleInterface {
} }
); );
} }
/**
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
}
} }