diff --git a/jam-ui/src/components/client/JKSessionScreen.js b/jam-ui/src/components/client/JKSessionScreen.js index a1d53294a..15a91e8c0 100644 --- a/jam-ui/src/components/client/JKSessionScreen.js +++ b/jam-ui/src/components/client/JKSessionScreen.js @@ -266,6 +266,33 @@ const JKSessionScreen = () => { } }, [sessionIdFromUrl, sessionId, dispatch]); + // Setup global alert callback handler for backend mixer changes + useEffect(() => { + if (!window.JK) window.JK = {}; + + // Alert callback handler - routes backend alerts to appropriate handlers + window.JK.HandleAlertCallback = (type, text) => { + console.log('[HandleAlertCallback] Alert received:', { type, text }); + + // BACKEND_MIXER_CHANGE = 2 + if (type === 2) { + console.log('[HandleAlertCallback] BACKEND_MIXER_CHANGE detected:', text); + if (sessionModel && sessionModel.onBackendMixerChanged) { + sessionModel.onBackendMixerChanged(type, text); + } else { + console.warn('[HandleAlertCallback] sessionModel.onBackendMixerChanged not available'); + } + } + // Handle other alert types as needed + }; + + return () => { + if (window.JK) { + delete window.JK.HandleAlertCallback; + } + }; + }, [sessionModel]); + useEffect(() => { if (!isConnected || !jamClient) return; console.debug("JKSessionScreen: -DEBUG- isConnected changed to true"); @@ -357,6 +384,7 @@ const JKSessionScreen = () => { const joinSession = async () => { await jamClient.SessionRegisterCallback("JK.HandleBridgeCallback2"); + await jamClient.SessionSetAlertCallback("JK.HandleAlertCallback"); await jamClient.RegisterRecordingCallbacks("JK.HandleRecordingStartResult", "JK.HandleRecordingStopResult", "JK.HandleRecordingStarted", "JK.HandleRecordingStopped", "JK.HandleRecordingAborted"); await jamClient.SessionSetConnectionStatusRefreshRate(1000); diff --git a/jam-ui/src/hooks/useSessionModel.js b/jam-ui/src/hooks/useSessionModel.js index 453b1e4cf..8a4c55b95 100644 --- a/jam-ui/src/hooks/useSessionModel.js +++ b/jam-ui/src/hooks/useSessionModel.js @@ -493,6 +493,7 @@ export default function useSessionModel(app, server, sessionScreen) { // Unregister callbacks try { await jamClient.SessionRegisterCallback(""); + await jamClient.SessionSetAlertCallback(""); await jamClient.SessionSetConnectionStatusRefreshRate(0); logger.debug("Callbacks unregistered successfully"); } catch (error) {