"""
ASGI config for app project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/
"""

import os

from django.core.asgi import get_asgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")

django_asgi_app = get_asgi_application()


async def application(scope, receive, send):
    if scope.get("type") == "websocket":
        path = scope.get("path", "")
        if path == "/ws/compose/thread/":
            from core.realtime.compose_ws import compose_ws_application

            await compose_ws_application(scope, receive, send)
            return
        await send({"type": "websocket.close", "code": 4404})
        return
    await django_asgi_app(scope, receive, send)
