import sys

from playwright.sync_api import sync_playwright

from rpa import config, state
from rpa.auth import ensure_logged_in
from rpa.browser import get_page, launch_context
from rpa.notify import notify_new_items
from rpa.scraper import download_attachments, list_egenremisser


def run() -> None:
    with sync_playwright() as p:
        context = launch_context(p)
        page = get_page(context)

        ensure_logged_in(page)

        items = list_egenremisser(page)
        print(f"Hittade {len(items)} post(er) på sidan.")

        previous = state.load_previous()
        new_or_changed = state.diff_new_or_changed(previous, items)

        for item in new_or_changed:
            saved = download_attachments(page, item, config.DOWNLOAD_DIR)
            if saved:
                print(f"  Nedladdat för post {item['id']}: {saved}")

        state.save_current(items)
        notify_new_items(new_or_changed)

        context.close()


if __name__ == "__main__":
    try:
        run()
    except TimeoutError as exc:
        print(f"Fel: {exc}", file=sys.stderr)
        sys.exit(1)
