from sqlmodel import Session

from rvpc.auth.tokens.user_tokens import generate_user_token
from rvpc.auth.users import decrypt_email
from rvpc.email.emails import notify
from rvpc.models.models import AppUser, TokenInfo, Video
from rvpc.routers.cards.video import html_to_mp4


async def convert_and_notify(
    user: AppUser,
    video: Video,
    session: Session,
):
    pw_token, generic_token = generate_user_token(user=user)

    ti = TokenInfo(
        nonce=generic_token.nonce,
        expires_at=generic_token.expires_at,
        token_type=generic_token.token_type,
    )
    session.add(ti)
    session.commit()
    session.refresh(ti)

    overlay_name = await html_to_mp4(
        video_length=video.length,
        video_id=str(video.id),
        token=pw_token,
    )

    video.overlay = overlay_name

    session.add(video)
    session.commit()
    session.refresh(video)

    recipient = decrypt_email(user.encrypted_email)

    await notify(
        recipient=recipient,
        template_body={"sender_name": "Test"},
    )
