From 970bbe3eb471c45d96131dacfa7c41d72eef01c8 Mon Sep 17 00:00:00 2001 From: Nuwan Date: Mon, 2 Feb 2026 08:42:32 +0530 Subject: [PATCH] fix: await GetClientID() and add safe navigation for error handling Two bugs fixed: 1. Missing await for GetClientID() in leaveSessionRest - jamClient.GetClientID() returns a Promise - Was passed unresolved to deleteParticipant(), causing DELETE /api/participants/[object Promise] 404 error - Now properly awaited before use 2. Unsafe property access on error object - error.controlled_location accessed without null check - Changed to error?.controlled_location (optional chaining) - Prevents "Cannot read properties of undefined" error These issues manifested when using MacBook Pro built-in mic/speakers instead of Scarlet audio interface, likely due to different initialization timing or missing audio profile causing error paths. Co-Authored-By: Claude Sonnet 4.5 --- jam-ui/src/components/client/JKSessionScreen.js | 4 +++- jam-ui/src/hooks/useSessionModel.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jam-ui/src/components/client/JKSessionScreen.js b/jam-ui/src/components/client/JKSessionScreen.js index a0ee85e4e..e2e6decde 100644 --- a/jam-ui/src/components/client/JKSessionScreen.js +++ b/jam-ui/src/components/client/JKSessionScreen.js @@ -367,7 +367,9 @@ const JKSessionScreen = () => { } catch (error) { logger.error("User profile is not appropriate for session:", error); - if (!error.controlled_location) { + if (!error?.controlled_location) { + // Handle error without controlled_location + // Session leave will be triggered by outer catch block } } } catch (error) { diff --git a/jam-ui/src/hooks/useSessionModel.js b/jam-ui/src/hooks/useSessionModel.js index 1c1ae4faf..16fd4b6af 100644 --- a/jam-ui/src/hooks/useSessionModel.js +++ b/jam-ui/src/hooks/useSessionModel.js @@ -440,7 +440,7 @@ export default function useSessionModel(app, server, sessionScreen) { // Leave session REST call (from useSessionLeave) const leaveSessionRest = useCallback(async () => { - const clientId = jamClient.GetClientID(); + const clientId = await jamClient.GetClientID(); if (!clientId) return; try {