Initial commit
diff --git a/includes/admin/class-wc-stripe-payment-gateways-controller.php b/includes/admin/class-wc-stripe-payment-gateways-controller.php
new file mode 100644
index 0000000..e80a827
--- /dev/null
+++ b/includes/admin/class-wc-stripe-payment-gateways-controller.php
@@ -0,0 +1,84 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+
+/**
+ * Class that handles various admin tasks.
+ *
+ * @since 5.6.0
+ */
+class WC_Stripe_Payment_Gateways_Controller {
+ /**
+ * Constructor
+ *
+ * @since 5.6.0
+ */
+ public function __construct() {
+ // If UPE is enabled and there are enabled payment methods, we need to load the disable Stripe confirmation modal.
+ $stripe_settings = get_option( 'woocommerce_stripe_settings', [] );
+ $enabled_upe_payment_methods = isset( $stripe_settings['upe_checkout_experience_accepted_payments'] ) ? $stripe_settings['upe_checkout_experience_accepted_payments'] : [];
+ $upe_payment_requests_enabled = 'yes' === $stripe_settings['payment_request'];
+
+ if ( count( $enabled_upe_payment_methods ) > 0 || $upe_payment_requests_enabled ) {
+ add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_payments_scripts' ] );
+ add_action( 'woocommerce_admin_field_payment_gateways', [ $this, 'wc_stripe_gateway_container' ] );
+ }
+ }
+
+ public function register_payments_scripts() {
+ $payment_gateways_script_asset_path = WC_STRIPE_PLUGIN_PATH . '/build/payment_gateways.asset.php';
+ $payment_gateways_script_asset = file_exists( $payment_gateways_script_asset_path )
+ ? require_once $payment_gateways_script_asset_path
+ : [
+ 'dependencies' => [],
+ 'version' => WC_STRIPE_VERSION,
+ ];
+
+ wp_register_script(
+ 'woocommerce_stripe_payment_gateways_page',
+ plugins_url( 'build/payment_gateways.js', WC_STRIPE_MAIN_FILE ),
+ $payment_gateways_script_asset['dependencies'],
+ $payment_gateways_script_asset['version'],
+ true
+ );
+ wp_set_script_translations(
+ 'woocommerce_stripe_payment_gateways_page',
+ 'woocommerce-gateway-stripe'
+ );
+ wp_register_style(
+ 'woocommerce_stripe_payment_gateways_page',
+ plugins_url( 'build/payment_gateways.css', WC_STRIPE_MAIN_FILE ),
+ [ 'wc-components' ],
+ $payment_gateways_script_asset['version']
+ );
+ }
+
+ public function enqueue_payments_scripts() {
+ global $current_tab, $current_section;
+
+ $this->register_payments_scripts();
+
+ $is_payment_methods_page = (
+ is_admin() &&
+ $current_tab && ! $current_section
+ && 'checkout' === $current_tab
+ );
+
+ if ( $is_payment_methods_page ) {
+ wp_enqueue_script( 'woocommerce_stripe_payment_gateways_page' );
+ wp_enqueue_style( 'woocommerce_stripe_payment_gateways_page' );
+ }
+ }
+
+ /**
+ * Adds a container to the "payment gateways" page.
+ * This is where the "Are you sure you want to disable Stripe?" confirmation dialog is rendered.
+ */
+ public function wc_stripe_gateway_container() {
+ ?><div id="wc-stripe-payment-gateways-container" />
+ <?php
+ }
+
+}