from __future__ import annotations

from typing import Optional

from ...logging_config import get_logger
from ...payment.payment_modal import PaymentModalController
from ...payment.stripe_client import StripeClient

LOGGER = get_logger("gui.payment")


class PaymentSection:
    """Encapsule l'accès au contrôleur de paiement Stripe."""

    def __init__(self, gui: "ModernWebSentinelGUI") -> None:
        self.gui = gui
        # Par défaut, utiliser le mode test pour éviter de dépendre de clés live.
        self.controller = PaymentModalController(StripeClient(test_mode=True))

    def is_configured(self) -> bool:
        return self.controller.client.is_configured()

    def open_checkout(self, tier: str, cadence: str, *, open_browser: bool = True) -> Optional[str]:
        """Ouvrir la page de paiement Stripe si la configuration est disponible."""
        if not self.is_configured():
            LOGGER.warning("Stripe client not configured for checkout")
            return None
        return self.controller.open_checkout(tier, cadence, open_browser=open_browser)
