from django.conf import settings
from django.conf import settings
from django.http import JsonResponse


def _normalized_setting_list(value):
    if isinstance(value, (list, tuple)):
        return [str(item or "").strip() for item in value if str(item or "").strip()]
    return [
        item.strip()
        for item in str(value or "").split(",")
        if item.strip()
    ]


def android_asset_links(_request):
    package_name = str(getattr(settings, "ANDROID_APP_LINK_PACKAGE_NAME", "") or "").strip()
    fingerprints = _normalized_setting_list(
        getattr(settings, "ANDROID_APP_LINK_SHA256_CERT_FINGERPRINTS", [])
    )

    if not package_name or not fingerprints:
        return JsonResponse([], safe=False)

    return JsonResponse(
        [
            {
                "relation": ["delegate_permission/common.handle_all_urls"],
                "target": {
                    "namespace": "android_app",
                    "package_name": package_name,
                    "sha256_cert_fingerprints": fingerprints,
                },
            }
        ],
        safe=False,
    )


def apple_app_site_association(_request):
    app_ids = _normalized_setting_list(getattr(settings, "IOS_APP_LINK_APP_IDS", []))
    details = []

    if app_ids:
        details.append(
            {
                "appIDs": app_ids,
                "components": [
                    {"/": "/catalog/products/*"},
                    {"/": "/catalog/farmer-listings/*"},
                    {"/": "/products/*"},
                    {"/": "/listing/*"},
                ],
            }
        )

    return JsonResponse(
        {
            "applinks": {
                "apps": [],
                "details": details,
            }
        }
    )
