from __future__ import annotations import logging from yuxi.channel.extensions.mattermost.client import MattermostClient from yuxi.channel.extensions.mattermost.errors import MattermostError logger = logging.getLogger(__name__) class MattermostStatusAdapter: def __init__(self, client: MattermostClient, account_id: str = ""): self.client = client self.account_id = account_id async def probe(self, account: dict | None = None) -> bool: try: await self.client.fetch_me() return True except MattermostError as e: logger.warning("Mattermost probe failed: %s", e) return False async def get_me(self) -> dict | None: try: return await self.client.fetch_me() except MattermostError: return None async def build_summary(self, snapshot: object | None = None) -> dict: me = await self.get_me() if not me: return { "status": "disconnected", "account_id": self.account_id, "base_url": self.client.base_url, } return { "status": "connected", "account_id": self.account_id, "base_url": self.client.base_url, "bot_user_id": me.get("id", ""), "bot_username": me.get("username", ""), "bot_email": me.get("email", ""), } async def check_readiness(self, account_id: str) -> bool: return await self.probe()