"""Shared email context helpers for transactional mail (RIMS + core)."""

from __future__ import annotations

from django.conf import settings
from django.urls import reverse


def portal_base_url() -> str:
    return getattr(settings, "PUBLIC_APP_BASE_URL", "http://127.0.0.1:8000").rstrip("/")


def absolute_portal_url(path: str) -> str:
    """Build absolute URL for a path starting with /."""
    base = portal_base_url()
    if not path.startswith("/"):
        path = "/" + path
    return f"{base}{path}"


def rims_email_context(
    *,
    subject: str,
    headline: str = "",
    action_path: str = "",
    action_label: str = "Open in IILMP",
    preheader: str = "",
) -> dict:
    """Context for notifications/emails/generic.html (and EmailChannel)."""
    return {
        "subject": subject,
        "headline": headline or "",
        "preheader": (preheader or headline or subject)[:200],
        "action_url": absolute_portal_url(action_path) if action_path else "",
        "action_label": action_label,
        "portal_base": portal_base_url(),
        "preferences_path": reverse("core:notification_inbox"),
    }
