from typing import Any, Dict

from django.conf import settings

from zerver.lib.upload import upload_backend
from zerver.models import Realm


def get_realm_logo_source(realm: Realm, night: bool) -> str:
    if realm.plan_type == Realm.PLAN_TYPE_LIMITED:
        return Realm.LOGO_DEFAULT
    if night:
        return realm.night_logo_source
    return realm.logo_source


def get_realm_logo_url(realm: Realm, night: bool) -> str:
    logo_source = get_realm_logo_source(realm, night)

    if logo_source == Realm.LOGO_UPLOADED:
        if night:
            logo_version = realm.night_logo_version
        else:
            logo_version = realm.logo_version
        return upload_backend.get_realm_logo_url(realm.id, logo_version, night)
    return settings.DEFAULT_LOGO_URI + "?version=0"


def get_realm_logo_data(realm: Realm, night: bool) -> Dict[str, Any]:
    if night:
        return dict(
            night_logo_url=get_realm_logo_url(realm, night),
            night_logo_source=realm.night_logo_source,
        )
    return dict(logo_url=get_realm_logo_url(realm, night), logo_source=realm.logo_source)
