From 124a5eb92d3d0c6d47033c2ac88eed5fccff01a1 Mon Sep 17 00:00:00 2001 From: hensm Date: Sat, 16 Apr 2022 08:22:39 +0100 Subject: [PATCH] Fix initiating a session via the receiver selector --- ext/src/cast/api/index.ts | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/ext/src/cast/api/index.ts b/ext/src/cast/api/index.ts index 0edaff9..9cae89b 100644 --- a/ext/src/cast/api/index.ts +++ b/ext/src/cast/api/index.ts @@ -291,10 +291,18 @@ onMessage(message => { session.namespaces = status.namespaces; session.receiver.volume = status.volume; + /** + * If session created via requestSession, the success + * callback will be set, otherwise the session was created + * by the extension and the session listener should be + * called instead. + */ if (requestSessionSuccessCallback) { requestSessionSuccessCallback(session); requestSessionSuccessCallback = null; requestSessionErrorCallback = null; + } else { + apiConfig?.sessionListener(session); } break; @@ -421,9 +429,7 @@ onMessage(message => { break; } - /** - * Popup closed before session established. - */ + // Popup closed before session established case "cast:selectReceiver/cancelled": { if (sessionRequest) { sessionRequest = null; @@ -433,5 +439,21 @@ onMessage(message => { break; } + + // Session request initiated via receiver selector + case "cast:launchApp": { + if (sessionRequest) { + logger.error("Session request already in progress."); + break; + } + if (!apiConfig?.sessionRequest) { + logger.error("Session request not found!"); + break; + } + + sendSessionRequest(apiConfig.sessionRequest, message.data.receiver); + + break; + } } });