"""Common helpers shared by the page modules."""

from __future__ import annotations

import streamlit as st

from core.tei_client import AthenaAPIError, TEIClient


def report_meta(client: TEIClient, tool: dict) -> dict:
    """Fetch the linked report (handles both nested-object and id-only forms)."""
    report_obj = tool.get("report")
    if isinstance(report_obj, dict):
        return report_obj
    if isinstance(report_obj, str):
        try:
            return client.get_report(report_obj)
        except AthenaAPIError as e:
            st.error(f"Failed to load report template: {e}")
    return {}


def safe(fn, *args, **kwargs):
    try:
        return fn(*args, **kwargs)
    except AthenaAPIError as e:
        st.error(f"Athena API error {e.status_code}: {e.detail}")
    return None
