fix: stabilize the live recommendation path
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
bfea9efb5e
commit
dbc5c2d93f
12 changed files with 113 additions and 31 deletions
|
|
@ -22,6 +22,7 @@ class ResolvedSession:
|
|||
|
||||
session_id: str
|
||||
session: SpotifySession
|
||||
can_logout: bool
|
||||
|
||||
|
||||
@router.get("/api/auth/login")
|
||||
|
|
@ -81,7 +82,12 @@ def current_session(request: Request) -> JSONResponse:
|
|||
resolved = resolve_session(request)
|
||||
if resolved is None:
|
||||
return JSONResponse({"detail": "Not authenticated"}, status_code=401)
|
||||
return JSONResponse({"display_name": resolved.session.display_name})
|
||||
return JSONResponse(
|
||||
{
|
||||
"display_name": resolved.session.display_name,
|
||||
"can_logout": resolved.can_logout,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@router.get("/api/suggestions")
|
||||
|
|
@ -119,16 +125,16 @@ def resolve_session(request: Request) -> ResolvedSession | None:
|
|||
application_settings = cast(Settings, request.app.state.settings)
|
||||
if application_settings.app_mode is AppMode.DEMO:
|
||||
demo_session = cast(SpotifySession, request.app.state.demo_session)
|
||||
return ResolvedSession("demo", demo_session)
|
||||
return ResolvedSession("demo", demo_session, can_logout=False)
|
||||
session_store = cast(SessionStore, request.app.state.session_store)
|
||||
cookie_session_id = request.cookies.get(SESSION_COOKIE_NAME)
|
||||
if cookie_session_id is not None:
|
||||
cookie_session = session_store.get(cookie_session_id)
|
||||
if cookie_session is not None:
|
||||
return ResolvedSession(cookie_session_id, cookie_session)
|
||||
return ResolvedSession(cookie_session_id, cookie_session, can_logout=True)
|
||||
|
||||
seed_session_id = cast(str | None, getattr(request.app.state, "seed_session_id", None))
|
||||
seed_session = session_store.get(seed_session_id) if seed_session_id is not None else None
|
||||
if seed_session is None or seed_session_id is None:
|
||||
return None
|
||||
return ResolvedSession(seed_session_id, seed_session)
|
||||
return ResolvedSession(seed_session_id, seed_session, can_logout=False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue