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