import logging

from flask import Blueprint, flash, render_template, request

from app.auth import ensure_fresh_token, get_active_account, login_required
from app.services.errors import ServiceError
from app.services.insights import top_videos as collect_top_videos
from app.tiktok_api import TikTokAPIError, get_user_info

insights_bp = Blueprint("insights", __name__)
log = logging.getLogger(__name__)


@insights_bp.route("/insights")
@login_required
def insights():
    account = get_active_account()
    user = {}
    top_videos = []
    total_views = None

    try:
        token = ensure_fresh_token(account)
        user = get_user_info(token) or {}
        result = collect_top_videos(token, limit=10)
        top_videos = result["videos"]
        total_views = result["total_views"]
    except (TikTokAPIError, ServiceError) as e:
        flash(e.message, "warning")
    except Exception:
        log.error("insights failed", exc_info=True)
        flash("Could not load insights.", "warning")

    return render_template("insights.html", account=account, user=user, top_videos=top_videos, total_views=total_views)
