Use DI for General Settings and store only after verification

This commit is contained in:
Daniel Hüsken 2024-11-15 09:01:49 +01:00
parent 268ab3a27a
commit c13680b7f5
No known key found for this signature in database
GPG key ID: 9F732DA37FA709E8
2 changed files with 28 additions and 19 deletions

View file

@ -9,6 +9,7 @@ declare( strict_types = 1 );
namespace WooCommerce\PayPalCommerce\Settings; namespace WooCommerce\PayPalCommerce\Settings;
use WooCommerce\PayPalCommerce\Settings\Data\GeneralSettings;
use WooCommerce\PayPalCommerce\Settings\Endpoint\ConnectManualRestEndpoint; use WooCommerce\PayPalCommerce\Settings\Endpoint\ConnectManualRestEndpoint;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
use WooCommerce\PayPalCommerce\Settings\Endpoint\OnboardingRestEndpoint; use WooCommerce\PayPalCommerce\Settings\Endpoint\OnboardingRestEndpoint;
@ -50,7 +51,8 @@ return array(
return new ConnectManualRestEndpoint( return new ConnectManualRestEndpoint(
$container->get( 'api.paypal-host-production' ), $container->get( 'api.paypal-host-production' ),
$container->get( 'api.paypal-host-sandbox' ), $container->get( 'api.paypal-host-sandbox' ),
$container->get( 'woocommerce.logger.woocommerce' ) $container->get( 'woocommerce.logger.woocommerce' ),
$container->get( 'settings.general' )
); );
}, },
'settings.casual-selling.supported-countries' => static function ( ContainerInterface $container ) : array { 'settings.casual-selling.supported-countries' => static function ( ContainerInterface $container ) : array {
@ -109,4 +111,7 @@ return array(
return in_array( $country, $eligible_countries, true ); return in_array( $country, $eligible_countries, true );
}, },
'settings.general' => static function ( ContainerInterface $container ) : GeneralSettings {
return new GeneralSettings();
},
); );

View file

@ -56,6 +56,13 @@ class ConnectManualRestEndpoint extends RestEndpoint {
*/ */
protected $rest_base = 'connect_manual'; protected $rest_base = 'connect_manual';
/**
* Settings instance.
*
* @var GeneralSettings
*/
private $settings = null;
/** /**
* Field mapping for request. * Field mapping for request.
* *
@ -82,16 +89,19 @@ class ConnectManualRestEndpoint extends RestEndpoint {
* @param string $live_host The API host for the live mode. * @param string $live_host The API host for the live mode.
* @param string $sandbox_host The API host for the sandbox mode. * @param string $sandbox_host The API host for the sandbox mode.
* @param LoggerInterface $logger The logger. * @param LoggerInterface $logger The logger.
* @param GeneralSettings $settings Settings instance.
*/ */
public function __construct( public function __construct(
string $live_host, string $live_host,
string $sandbox_host, string $sandbox_host,
LoggerInterface $logger LoggerInterface $logger,
GeneralSettings $settings
) { ) {
$this->live_host = $live_host; $this->live_host = $live_host;
$this->sandbox_host = $sandbox_host; $this->sandbox_host = $sandbox_host;
$this->logger = $logger; $this->logger = $logger;
$this->settings = $settings;
} }
/** /**
@ -135,18 +145,6 @@ class ConnectManualRestEndpoint extends RestEndpoint {
); );
} }
$settings = new GeneralSettings();
if ( $use_sandbox ) {
$settings->set_is_sandbox( true );
$settings->set_sandbox_client_id( $client_id );
$settings->set_sandbox_client_secret( $client_secret );
} else {
$settings->set_is_sandbox( false );
$settings->set_live_client_id( $client_id );
$settings->set_live_client_secret( $client_secret );
}
$settings->save();
try { try {
$payee = $this->request_payee( $client_id, $client_secret, $use_sandbox ); $payee = $this->request_payee( $client_id, $client_secret, $use_sandbox );
} catch ( Exception $exception ) { } catch ( Exception $exception ) {
@ -160,13 +158,19 @@ class ConnectManualRestEndpoint extends RestEndpoint {
} }
if ( $use_sandbox ) { if ( $use_sandbox ) {
$settings->set_sandbox_merchant_id( $payee->merchant_id ); $this->settings->set_is_sandbox( true );
$settings->set_sandbox_merchant_email( $payee->email_address ); $this->settings->set_sandbox_client_id( $client_id );
$this->settings->set_sandbox_client_secret( $client_secret );
$this->settings->set_sandbox_merchant_id( $payee->merchant_id );
$this->settings->set_sandbox_merchant_email( $payee->email_address );
} else { } else {
$settings->set_live_merchant_id( $payee->merchant_id ); $this->settings->set_is_sandbox( false );
$settings->set_live_merchant_email( $payee->email_address ); $this->settings->set_live_client_id( $client_id );
$this->settings->set_live_client_secret( $client_secret );
$this->settings->set_live_merchant_id( $payee->merchant_id );
$this->settings->set_live_merchant_email( $payee->email_address );
} }
$settings->save(); $this->settings->save();
$result = array( $result = array(
'merchantId' => $payee->merchant_id, 'merchantId' => $payee->merchant_id,