diff --git a/admin-spa/src/components/ui/input.tsx b/admin-spa/src/components/ui/input.tsx index 9da723d..ead367f 100644 --- a/admin-spa/src/components/ui/input.tsx +++ b/admin-spa/src/components/ui/input.tsx @@ -12,6 +12,8 @@ const Input = React.forwardRef>( "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", // Override browser default styles for all input types "appearance-none [-webkit-appearance:none] [-moz-appearance:textfield]", + // Override WordPress admin forms.css with !important + "!bg-transparent !border-input !rounded-md !shadow-sm", className )} ref={ref} diff --git a/admin-spa/src/routes/Settings/Payments.tsx b/admin-spa/src/routes/Settings/Payments.tsx index 6634781..71c6054 100644 --- a/admin-spa/src/routes/Settings/Payments.tsx +++ b/admin-spa/src/routes/Settings/Payments.tsx @@ -69,8 +69,9 @@ export default function PaymentsPage() { setTogglingGateway(id); return api.post(`/payments/gateways/${id}/toggle`, { enabled }); }, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['payment-gateways'] }); + onSuccess: async () => { + // Wait for refetch to complete before showing toast + await queryClient.invalidateQueries({ queryKey: ['payment-gateways'] }); toast.success('Gateway updated successfully'); setTogglingGateway(null); }, diff --git a/includes/Api/PaymentsController.php b/includes/Api/PaymentsController.php index b8f61f7..200508c 100644 --- a/includes/Api/PaymentsController.php +++ b/includes/Api/PaymentsController.php @@ -223,7 +223,10 @@ class PaymentsController extends WP_REST_Controller { return $result; } - // Return updated gateway data + // Clear cache before fetching updated gateway + wp_cache_flush(); + + // Return updated gateway data (fresh from DB) $gateway = PaymentGatewaysProvider::get_gateway($gateway_id); return rest_ensure_response([ diff --git a/includes/Compat/PaymentGatewaysProvider.php b/includes/Compat/PaymentGatewaysProvider.php index 5283ebe..a6c649c 100644 --- a/includes/Compat/PaymentGatewaysProvider.php +++ b/includes/Compat/PaymentGatewaysProvider.php @@ -373,8 +373,14 @@ class PaymentGatewaysProvider { // Re-enable HTTP requests remove_filter('pre_http_request', '__return_true', 999); - // Clear cache + // Clear all WooCommerce caches wp_cache_delete('woocommerce_payment_gateways', 'options'); + wp_cache_flush(); + + // Force WooCommerce to reload payment gateways + if (function_exists('WC') && WC()->payment_gateways()) { + WC()->payment_gateways()->init(); + } return true; }