initialize_frontend_components(); } private function initialize_frontend_components() { $toggles = ModuleToggles::instance(); $features = CartFeatureRegistry::instance(); $cartgate_enabled = $toggles->is_enabled( 'cartgate' ) && $features->is_enabled( 'cart_gate' ); $checkoutgate_enabled = $toggles->is_enabled( 'checkoutgate' ) && $features->is_enabled( 'checkout_gate' ); $localpickup_enabled = $toggles->is_enabled( 'localpickup' ) && $features->is_enabled( 'local_pickup' ); $sidecart_enabled = $toggles->is_enabled( 'sidecart' ); $checkout_portal_enabled = $toggles->is_enabled( 'checkout' ) && CheckoutRenderMode::is_portal(); $orderbumps_enabled = $toggles->is_enabled( 'orderbumps' ) && $features->is_enabled( 'order_bumps' ); if ( $toggles->should_boot_ajax_server_check() ) { Ajax\AjaxServerCheck::instance(); } if ( $orderbumps_enabled ) { do_action( 'ipscmi_order_cart_boot_orderbumps' ); } if ( $toggles->is_enabled( 'thankyou' ) ) { ( new ThankyouBootstrap() )->boot(); } if ( $toggles->is_enabled( 'cart_page' ) ) { ( new CartPageBootstrap() )->boot(); } if ( $checkout_portal_enabled || $sidecart_enabled || $cartgate_enabled || $checkoutgate_enabled ) { $this->boot_modern_front_runtime( AddToCartRuntimePolicy::should_boot_bridge() ); } if ( $checkout_portal_enabled ) { ( new CheckoutBootstrap() )->boot_portal(); } // The persisted legacy_react choice leaves the assigned page to WooCommerce. // Independent cart/pickup modules still register their own WooCommerce hooks. if ( $sidecart_enabled ) { ( new SidecartBootstrap() )->boot(); } if ( $cartgate_enabled ) { ( new CartGateBootstrap() )->boot(); } if ( $checkoutgate_enabled ) { do_action( 'ipscmi_order_cart_boot_checkoutgate' ); } if ( $localpickup_enabled ) { ( new LocalPickupBootstrap() )->boot(); } } private function boot_modern_front_runtime( bool $enable_add_to_cart = false ) { ReactFrontSettings::instance(); if ( $enable_add_to_cart ) { AddToCartReactFeature::instance(); } } }