Implement auto join policy handling

This commit is contained in:
Matt Hensman
2022-09-09 23:32:49 +01:00
committed by GitHub
parent f76e8194fb
commit 3eba371c5f
7 changed files with 493 additions and 313 deletions

View File

@@ -16,7 +16,7 @@ export default {
"CA5E8412": { name: "Netflix", matches: "https://www.netflix.com/*" },
"233637DE": { name: "YouTube", matches: "https://www.youtube.com/*" },
"CC32E753": { name: "Spotify", matches: "https://open.spotify.com/*" },
"5E81F6DB": {
"2BA92214": {
name: "BBC iPlayer",
matches: "https://www.bbc.co.uk/iplayer*"
},

View File

@@ -12,8 +12,8 @@ import type {
SenderMessage
} from "./types";
import { SessionStatus } from "./enums";
import type {
import { ErrorCode, SessionStatus } from "./enums";
import {
Error as CastError,
Image,
Receiver,
@@ -268,6 +268,11 @@ export default class Session {
successCallback?: (media: Media) => void,
errorCallback?: (err: CastError) => void
) {
if (!loadRequest) {
errorCallback?.(new CastError(ErrorCode.INVALID_PARAMETER));
return;
}
this.#loadMediaSuccessCallback = successCallback;
this.#loadMediaErrorCallback = errorCallback;

View File

@@ -222,7 +222,7 @@ export default class {
case "cast:sessionStopped": {
const { sessionId } = message.data;
const session = this.#sessions.get(sessionId);
if (session) {
if (session?.status === SessionStatus.CONNECTED) {
session.status = SessionStatus.STOPPED;
const updateListeners = SessionUpdateListeners.get(session);
@@ -349,7 +349,7 @@ export default class {
});
}
requestSessionById(_sessionId: string): void {
requestSessionById(_sessionId: string) {
logger.info("STUB :: cast.requestSessionById");
}
@@ -357,15 +357,15 @@ export default class {
_receivers: Receiver[],
_successCallback?: () => void,
_errorCallback?: (err: CastError) => void
): void {
) {
logger.info("STUB :: cast.setCustomReceivers");
}
setPageContext(_win: Window): void {
setPageContext(_win: Window) {
logger.info("STUB :: cast.setPageContext");
}
setReceiverDisplayStatus(_sessionId: string): void {
setReceiverDisplayStatus(_sessionId: string) {
logger.info("STUB :: cast.setReceiverDisplayStatus");
}

View File

@@ -4,7 +4,7 @@ import options from "../../lib/options";
import type { Message } from "../../messaging";
// Cast types
import type { ReceiverAvailability } from "../sdk/enums";
import { AutoJoinPolicy, ReceiverAvailability } from "../sdk/enums";
import type Session from "../sdk/Session";
import type Media from "../sdk/media/Media";
@@ -88,7 +88,8 @@ export default class MediaSender {
capabilities
),
this.sessionListener.bind(this),
this.receiverListener.bind(this)
this.receiverListener.bind(this),
AutoJoinPolicy.PAGE_SCOPED
),
undefined,
err => {

View File

@@ -3,7 +3,7 @@ import { Logger } from "../../lib/logger";
import type { ReceiverDevice } from "../../types";
import type { ReceiverAvailability } from "../sdk/enums";
import { AutoJoinPolicy, ReceiverAvailability } from "../sdk/enums";
import type Session from "../sdk/Session";
import cast, { ensureInit } from "../export";
@@ -79,7 +79,8 @@ export default class MirroringSender {
const apiConfig = new cast.ApiConfig(
sessionRequest,
this.sessionListener,
this.receiverListener
this.receiverListener,
AutoJoinPolicy.PAGE_SCOPED
);
cast.initialize(apiConfig);