from uuid import uuid4 from starlette.requests import HTTPConnection from app.config import settings from app.connectors.twilio import TwilioConnector from app.models import User users = {} def get_or_create_user(conn: HTTPConnection) -> User: user_id = conn.cookies.get("user_id") existing = users.get(user_id) if not existing: # If cookie existed but no server state -> rehydration scenario if user_id: users[user_id] = User( id=user_id, connector=TwilioConnector(), settings=settings.clone_default_user_settings(), new_user=False, client_settings_needed=True, ) return users[user_id] # Fresh user (no cookie) user_id = str(uuid4()) users[user_id] = User( id=user_id, connector=TwilioConnector(), settings=settings.clone_default_user_settings(), ) return users[user_id] return existing