import json
from datetime import datetime

from . import config


def load_previous() -> dict:
    if not config.STATE_FILE.exists():
        return {"items": {}}
    with open(config.STATE_FILE, "r", encoding="utf-8") as f:
        return json.load(f)


def save_current(items: list[dict]) -> None:
    payload = {
        "updated_at": datetime.now().isoformat(timespec="seconds"),
        "items": {item["id"]: item for item in items},
    }
    with open(config.STATE_FILE, "w", encoding="utf-8") as f:
        json.dump(payload, f, ensure_ascii=False, indent=2)


def diff_new_or_changed(previous: dict, current_items: list[dict]) -> list[dict]:
    # item["id"] är ett hashvärde av dess text (se scraper._stable_id), så
    # en ändrad text ger automatiskt ett nytt id och räknas som "ny" post.
    prev_items = previous.get("items", {})
    return [item for item in current_items if item["id"] not in prev_items]
