from typing import List

from textual.app import ComposeResult
from textual.screen import Screen

from models.agent import Agent
from widgets.multiagentselector import MultiAgentSelector
from widgets.OTP_generate import OTPGenerator


class OTPWorkflowScreen(Screen):
    """Screen that handles the OTP generation workflow."""

    def __init__(self, all_agents: List[Agent]):
        super().__init__()
        self.all_agents = all_agents
        self.selected_devices = None

    def compose(self) -> ComposeResult:
        """Start with the multi-agent selector."""
        yield MultiAgentSelector(self.all_agents)

    def on_multi_agent_selector_agents_selected(
        self, message: MultiAgentSelector.AgentsSelected
    ) -> None:
        """Handle selected agents - switch to OTP generator."""
        self.selected_devices = message.selected_agents

        # Remove the MultiAgentSelector
        selector = self.query_one(MultiAgentSelector)
        selector.remove()

        # Mount the OTPGenerator with the selected Agent objects
        # No need to pass API - it will access self.app.api directly
        self.mount(OTPGenerator(self.selected_devices))

    def on_otp_generator_otp_info(self, message: OTPGenerator.OTPInfo) -> None:
        """Handle OTP generation request - call the actual OTP generation function."""
        # This will be handled by the main app, but we can also do it here
        # For now, just pass it up to the app level
        pass
