mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 08:39:59 +00:00
Fix extension cast senders
This commit is contained in:
@@ -63,16 +63,11 @@ function getSession(opts: InitOptions): Promise<cast.Session> {
|
||||
*/
|
||||
function receiverListener(availability: string) {
|
||||
if (availability === cast.ReceiverAvailability.AVAILABLE) {
|
||||
if (opts.receiver) {
|
||||
/*cast._requestSession(
|
||||
opts.receiver
|
||||
, onRequestSessionSuccess
|
||||
, onRequestSessionError);*/
|
||||
} else {
|
||||
cast.requestSession(
|
||||
onRequestSessionSuccess
|
||||
, onRequestSessionError);
|
||||
}
|
||||
cast.requestSession(
|
||||
onRequestSessionSuccess
|
||||
, onRequestSessionError
|
||||
, undefined
|
||||
, opts.receiver);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -340,7 +335,7 @@ async function registerMediaElementListeners() {
|
||||
|
||||
interface InitOptions {
|
||||
mediaUrl: string;
|
||||
receiver: ReceiverDevice;
|
||||
receiver?: ReceiverDevice;
|
||||
targetElementId?: number;
|
||||
}
|
||||
|
||||
|
||||
@@ -162,10 +162,10 @@ function receiverListener(availability: string) {
|
||||
|
||||
if (availability === cast.ReceiverAvailability.AVAILABLE) {
|
||||
wasSessionRequested = true;
|
||||
/*cast._requestSession(
|
||||
selectedReceiver
|
||||
, onRequestSessionSuccess
|
||||
, onRequestSessionError);*/
|
||||
cast.requestSession(onRequestSessionSuccess
|
||||
, onRequestSessionError
|
||||
, undefined
|
||||
, selectedReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import logger from "../../lib/logger";
|
||||
|
||||
import { ReceiverDevice } from "../../types";
|
||||
import { ErrorCallback, SuccessCallback } from "../types";
|
||||
|
||||
import { onMessage, sendMessageResponse } from "../eventMessageChannel";
|
||||
|
||||
@@ -23,9 +24,6 @@ type ReceiverActionListener = (
|
||||
|
||||
type RequestSessionSuccessCallback = (session: Session) => void;
|
||||
|
||||
type SuccessCallback = () => void;
|
||||
type ErrorCallback = (err: Error_) => void;
|
||||
|
||||
|
||||
let apiConfig: Nullable<ApiConfig>;
|
||||
let sessionRequest: Nullable<SessionRequest>;
|
||||
@@ -57,6 +55,26 @@ export const timeout = new Timeout();
|
||||
export * as media from "./media";
|
||||
|
||||
|
||||
function sendSessionRequest(sessionRequest: SessionRequest
|
||||
, receiverDevice: ReceiverDevice) {
|
||||
|
||||
for (const listener of receiverActionListeners) {
|
||||
const receiver = new Receiver(
|
||||
receiverDevice.id
|
||||
, receiverDevice.friendlyName);
|
||||
|
||||
listener(receiver, ReceiverAction.CAST);
|
||||
}
|
||||
|
||||
sendMessageResponse({
|
||||
subject: "bridge:createCastSession"
|
||||
, data: {
|
||||
appId: sessionRequest.appId
|
||||
, receiverDevice: receiverDevice
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export function initialize(newApiConfig: ApiConfig
|
||||
, successCallback?: SuccessCallback
|
||||
, errorCallback?: ErrorCallback) {
|
||||
@@ -85,7 +103,8 @@ export function initialize(newApiConfig: ApiConfig
|
||||
|
||||
export function requestSession(successCallback: RequestSessionSuccessCallback
|
||||
, errorCallback: ErrorCallback
|
||||
, newSessionRequest?: SessionRequest) {
|
||||
, newSessionRequest?: SessionRequest
|
||||
, receiverDevice?: ReceiverDevice) {
|
||||
|
||||
logger.info("cast.requestSession");
|
||||
|
||||
@@ -118,10 +137,20 @@ export function requestSession(successCallback: RequestSessionSuccessCallback
|
||||
requestSessionSuccessCallback = successCallback;
|
||||
requestSessionErrorCallback = errorCallback;
|
||||
|
||||
// Open receiver selector UI
|
||||
sendMessageResponse({
|
||||
subject: "main:selectReceiver"
|
||||
});
|
||||
/**
|
||||
* If a receiver was provided, skip the receiver selector
|
||||
* process.
|
||||
*/
|
||||
if (receiverDevice) {
|
||||
if (receiverDevice?.id && receiverDevices.has(receiverDevice.id)) {
|
||||
sendSessionRequest(sessionRequest, receiverDevice);
|
||||
}
|
||||
} else {
|
||||
// Open receiver selector UI
|
||||
sendMessageResponse({
|
||||
subject: "main:selectReceiver"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function requestSessionById(_sessionId: string): void {
|
||||
@@ -183,18 +212,18 @@ onMessage(message => {
|
||||
|
||||
// TODO: Implement persistent per-origin receiver IDs
|
||||
const receiver = new Receiver(
|
||||
status.receiverFriendlyName // label
|
||||
, status.receiverFriendlyName // friendlyName
|
||||
, [ Capability.VIDEO_OUT
|
||||
status.receiverFriendlyName // label
|
||||
, status.receiverFriendlyName // friendlyName
|
||||
, [ Capability.VIDEO_OUT
|
||||
, Capability.AUDIO_OUT ] // capabilities
|
||||
, status.volume); // volume
|
||||
, status.volume); // volume
|
||||
|
||||
const session = new Session(
|
||||
status.sessionId // sessionId
|
||||
, status.appId // appId
|
||||
, status.displayName // displayName
|
||||
, status.appImages // appImages
|
||||
, receiver); // receiver
|
||||
, status.appId // appId
|
||||
, status.displayName // displayName
|
||||
, status.appImages // appImages
|
||||
, receiver); // receiver
|
||||
|
||||
session.senderApps = status.senderApps;
|
||||
session.transportId = status.transportId;
|
||||
@@ -316,24 +345,7 @@ onMessage(message => {
|
||||
break;
|
||||
}
|
||||
|
||||
const { receiver: receiverDevice } = message.data;
|
||||
|
||||
for (const listener of receiverActionListeners) {
|
||||
const receiver = new Receiver(
|
||||
receiverDevice.id
|
||||
, receiverDevice.friendlyName);
|
||||
|
||||
listener(receiver, ReceiverAction.CAST);
|
||||
}
|
||||
|
||||
sendMessageResponse({
|
||||
subject: "bridge:createCastSession"
|
||||
, data: {
|
||||
appId: sessionRequest.appId
|
||||
, receiverDevice: receiverDevice
|
||||
}
|
||||
});
|
||||
|
||||
sendSessionRequest(sessionRequest, message.data.receiver);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user