from django.urls import reverse

from .pages import user_profile, usercp, users_list
from .serializers import AnonymousUserSerializer, AuthenticatedUserSerializer


def user_links(request):
    if request.include_frontend_context:
        request.frontend_context.update(
            {
                "REQUEST_ACTIVATION_URL": reverse("misago:request-activation"),
                "FORGOTTEN_PASSWORD_URL": reverse("misago:forgotten-password"),
                "BANNED_URL": reverse("misago:banned"),
                "USERCP_URL": reverse("misago:options"),
                "USERS_LIST_URL": reverse("misago:users"),
                "AUTH_API": reverse("misago:api:auth"),
                "AUTH_CRITERIA_API": reverse("misago:api:auth-criteria"),
                "USERS_API": reverse("misago:api:user-list"),
                "CAPTCHA_API": reverse("misago:api:captcha-question"),
                "USERNAME_CHANGES_API": reverse("misago:api:usernamechange-list"),
                "MENTION_API": reverse("misago:api:mention-suggestions"),
            }
        )

    return {
        "USERCP_URL": usercp.get_default_link(),
        "USERS_LIST_URL": users_list.get_default_link(),
        "USER_PROFILE_URL": user_profile.get_default_link(),
    }


def preload_user_json(request):
    if not request.include_frontend_context:
        return {}

    request.frontend_context.update(
        {"isAuthenticated": bool(request.user.is_authenticated)}
    )

    if request.user.is_authenticated:
        serializer = AuthenticatedUserSerializer
    else:
        serializer = AnonymousUserSerializer

    serialized_user = serializer(request.user, context={"acl": request.user_acl}).data
    request.frontend_context.update({"user": serialized_user})

    return {}