"""Хранилище актуальных Slack-кредов (token + cookie d).

creds.json пишет рефрешер (refresh_creds.py), читает мост.
Если файла нет — откатываемся на значения из .env.
"""
from __future__ import annotations

import json
import os
from pathlib import Path

from .config import Settings

CREDS_PATH = Path(__file__).resolve().parent.parent / "creds.json"


def load_creds(settings: Settings) -> tuple[str, str]:
    """Вернуть (token, cookie_d): из creds.json, иначе из .env."""
    if CREDS_PATH.exists():
        try:
            data = json.loads(CREDS_PATH.read_text(encoding="utf-8"))
            token = data.get("token", "").strip()
            cookie = data.get("cookie_d", "").strip()
            if token and cookie:
                return token, cookie
        except Exception:  # noqa: BLE001 — битый файл => фолбэк на .env
            pass
    return settings.slack_token, settings.slack_cookie_d


def save_creds(token: str, cookie_d: str) -> None:
    import time

    tmp = CREDS_PATH.with_suffix(".json.tmp")
    tmp.write_text(
        json.dumps(
            {"token": token, "cookie_d": cookie_d, "updated_at": int(time.time())},
            ensure_ascii=False,
            indent=2,
        ),
        encoding="utf-8",
    )
    os.replace(tmp, CREDS_PATH)
