mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 10:39:57 +00:00
Expose types via cast/media exports
This commit is contained in:
@@ -24,7 +24,7 @@ import { AutoJoinPolicy
|
|||||||
, SessionStatus
|
, SessionStatus
|
||||||
, VolumeControlType } from "./enums";
|
, VolumeControlType } from "./enums";
|
||||||
|
|
||||||
import media from "./media";
|
import * as media from "./media";
|
||||||
|
|
||||||
import { requestSession as requestSessionTimeout } from "../timeout";
|
import { requestSession as requestSessionTimeout } from "../timeout";
|
||||||
|
|
||||||
@@ -53,138 +53,146 @@ const receiverListeners = new Set<ReceiverActionListener>();
|
|||||||
let sessionSuccessCallback: RequestSessionSuccessCallback;
|
let sessionSuccessCallback: RequestSessionSuccessCallback;
|
||||||
let sessionErrorCallback: ErrorCallback;
|
let sessionErrorCallback: ErrorCallback;
|
||||||
|
|
||||||
export default {
|
|
||||||
|
export {
|
||||||
// Enums
|
// Enums
|
||||||
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState
|
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState
|
||||||
, ErrorCode, ReceiverAction, ReceiverAvailability, ReceiverType
|
, ErrorCode, ReceiverAction, ReceiverAvailability, ReceiverType
|
||||||
, SenderPlatform, SessionStatus, VolumeControlType
|
, SenderPlatform, SessionStatus, VolumeControlType
|
||||||
|
|
||||||
// Classes
|
// Classes
|
||||||
, ApiConfig, DialRequest, Error: Error_, Image: Image_
|
, ApiConfig, DialRequest, Receiver, ReceiverDisplayStatus
|
||||||
, Receiver, ReceiverDisplayStatus, SenderApplication, Session
|
, SenderApplication, Session, SessionRequest, Timeout
|
||||||
, SessionRequest, Timeout, Volume
|
, Volume
|
||||||
|
|
||||||
, VERSION: [1, 2]
|
, Error_ as Error
|
||||||
, isAvailable: false
|
, Image_ as Image
|
||||||
, timeout: new Timeout()
|
|
||||||
|
|
||||||
// chrome.cast.media namespace
|
|
||||||
, media
|
, media
|
||||||
|
|
||||||
|
|
||||||
, addReceiverActionListener: (
|
|
||||||
listener: ReceiverActionListener): void => {
|
|
||||||
|
|
||||||
console.info("fx_cast (Debug): cast.addReceiverActionListener");
|
|
||||||
receiverListeners.add(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
, initialize: (
|
|
||||||
newApiConfig: ApiConfig
|
|
||||||
, successCallback: SuccessCallback
|
|
||||||
, errorCallback: ErrorCallback): void => {
|
|
||||||
|
|
||||||
console.info("fx_cast (Debug): cast.initialize");
|
|
||||||
|
|
||||||
// Already initialized
|
|
||||||
if (apiConfig) {
|
|
||||||
errorCallback(new Error_(ErrorCode.INVALID_PARAMETER));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
apiConfig = newApiConfig;
|
|
||||||
|
|
||||||
sendMessageResponse({
|
|
||||||
subject: "bridge:/startDiscovery"
|
|
||||||
});
|
|
||||||
|
|
||||||
apiConfig.receiverListener(receiverList.length
|
|
||||||
? ReceiverAvailability.AVAILABLE
|
|
||||||
: ReceiverAvailability.UNAVAILABLE);
|
|
||||||
|
|
||||||
successCallback();
|
|
||||||
}
|
|
||||||
|
|
||||||
, logMessage: (message: string): void => {
|
|
||||||
/* tslint:disable-next-line:no-console */
|
|
||||||
console.log("CAST MSG:", message);
|
|
||||||
}
|
|
||||||
|
|
||||||
, precache: (data: string): void => {
|
|
||||||
console.info("STUB :: cast.precache");
|
|
||||||
}
|
|
||||||
|
|
||||||
, removeReceiverActionListener: (
|
|
||||||
listener: ReceiverActionListener): void => {
|
|
||||||
|
|
||||||
receiverListeners.delete(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
, requestSession: (
|
|
||||||
successCallback: RequestSessionSuccessCallback
|
|
||||||
, errorCallback: ErrorCallback
|
|
||||||
, sessionRequest: SessionRequest
|
|
||||||
= apiConfig.sessionRequest): void => {
|
|
||||||
|
|
||||||
console.info("fx_cast (Debug): cast.requestSession");
|
|
||||||
|
|
||||||
// Called before initialization
|
|
||||||
if (!apiConfig) {
|
|
||||||
errorCallback(new Error_(ErrorCode.API_NOT_INITIALIZED));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Already requesting session
|
|
||||||
if (sessionRequestInProgress) {
|
|
||||||
errorCallback(new Error_(ErrorCode.INVALID_PARAMETER
|
|
||||||
, "Session request already in progress."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// No available receivers
|
|
||||||
if (!receiverList.length) {
|
|
||||||
errorCallback(new Error_(ErrorCode.RECEIVER_UNAVAILABLE));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sessionRequestInProgress = true;
|
|
||||||
|
|
||||||
sessionSuccessCallback = successCallback;
|
|
||||||
sessionErrorCallback = errorCallback;
|
|
||||||
|
|
||||||
// Open destination chooser
|
|
||||||
sendMessageResponse({
|
|
||||||
subject: "main:/openPopup"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
, requestSessionById: (sessionId: string): void => {
|
|
||||||
console.info("STUB :: cast.requestSessionById");
|
|
||||||
}
|
|
||||||
|
|
||||||
, setCustomReceivers: (
|
|
||||||
receivers: Receiver[]
|
|
||||||
, successCallback: SuccessCallback
|
|
||||||
, errorCallback: ErrorCallback): void => {
|
|
||||||
|
|
||||||
console.info("STUB :: cast.setCustomReceivers");
|
|
||||||
}
|
|
||||||
|
|
||||||
, setPageContext: (win: Window): void => {
|
|
||||||
console.info("STUB :: cast.setPageContext");
|
|
||||||
}
|
|
||||||
|
|
||||||
, setReceiverDisplayStatus: (sessionId: string): void => {
|
|
||||||
console.info("STUB :: cast.setReceiverDisplayStatus");
|
|
||||||
}
|
|
||||||
|
|
||||||
, unescape: (escaped: string): string => {
|
|
||||||
return unescape(escaped);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export let isAvailable = false;
|
||||||
|
export const timeout = new Timeout();
|
||||||
|
export const VERSION = [1, 2];
|
||||||
|
|
||||||
|
export function addReceiverActionListener (
|
||||||
|
listener: ReceiverActionListener): void {
|
||||||
|
|
||||||
|
console.info("fx_cast (Debug): cast.addReceiverActionListener");
|
||||||
|
receiverListeners.add(listener);
|
||||||
|
};
|
||||||
|
|
||||||
|
export function initialize (
|
||||||
|
newApiConfig: ApiConfig
|
||||||
|
, successCallback: SuccessCallback
|
||||||
|
, errorCallback: ErrorCallback): void {
|
||||||
|
|
||||||
|
console.info("fx_cast (Debug): cast.initialize");
|
||||||
|
|
||||||
|
// Already initialized
|
||||||
|
if (apiConfig) {
|
||||||
|
errorCallback(new Error_(ErrorCode.INVALID_PARAMETER));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
apiConfig = newApiConfig;
|
||||||
|
|
||||||
|
sendMessageResponse({
|
||||||
|
subject: "bridge:/startDiscovery"
|
||||||
|
});
|
||||||
|
|
||||||
|
apiConfig.receiverListener(receiverList.length
|
||||||
|
? ReceiverAvailability.AVAILABLE
|
||||||
|
: ReceiverAvailability.UNAVAILABLE);
|
||||||
|
|
||||||
|
successCallback();
|
||||||
|
};
|
||||||
|
|
||||||
|
export function logMessage (message: string): void {
|
||||||
|
/* tslint:disable-next-line:no-console */
|
||||||
|
console.log("CAST MSG:", message);
|
||||||
|
};
|
||||||
|
|
||||||
|
export function precache (data: string): void {
|
||||||
|
console.info("STUB :: cast.precache");
|
||||||
|
};
|
||||||
|
|
||||||
|
export function removeReceiverActionListener (
|
||||||
|
listener: ReceiverActionListener): void {
|
||||||
|
|
||||||
|
receiverListeners.delete(listener);
|
||||||
|
};
|
||||||
|
|
||||||
|
export function requestSession (
|
||||||
|
successCallback: RequestSessionSuccessCallback
|
||||||
|
, errorCallback: ErrorCallback
|
||||||
|
, sessionRequest: SessionRequest
|
||||||
|
= apiConfig.sessionRequest): void {
|
||||||
|
|
||||||
|
console.info("fx_cast (Debug): cast.requestSession");
|
||||||
|
|
||||||
|
// Called before initialization
|
||||||
|
if (!apiConfig) {
|
||||||
|
errorCallback(new Error_(ErrorCode.API_NOT_INITIALIZED));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Already requesting session
|
||||||
|
if (sessionRequestInProgress) {
|
||||||
|
errorCallback(new Error_(ErrorCode.INVALID_PARAMETER
|
||||||
|
, "Session request already in progress."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// No available receivers
|
||||||
|
if (!receiverList.length) {
|
||||||
|
errorCallback(new Error_(ErrorCode.RECEIVER_UNAVAILABLE));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sessionRequestInProgress = true;
|
||||||
|
|
||||||
|
sessionSuccessCallback = successCallback;
|
||||||
|
sessionErrorCallback = errorCallback;
|
||||||
|
|
||||||
|
// Open destination chooser
|
||||||
|
sendMessageResponse({
|
||||||
|
subject: "main:/openPopup"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export function requestSessionById (sessionId: string): void {
|
||||||
|
console.info("STUB :: cast.requestSessionById");
|
||||||
|
};
|
||||||
|
|
||||||
|
export function setCustomReceivers (
|
||||||
|
receivers: Receiver[]
|
||||||
|
, successCallback: SuccessCallback
|
||||||
|
, errorCallback: ErrorCallback): void {
|
||||||
|
|
||||||
|
console.info("STUB :: cast.setCustomReceivers");
|
||||||
|
};
|
||||||
|
|
||||||
|
export function setPageContext (win: Window): void {
|
||||||
|
console.info("STUB :: cast.setPageContext");
|
||||||
|
};
|
||||||
|
|
||||||
|
export function setReceiverDisplayStatus (sessionId: string): void {
|
||||||
|
console.info("STUB :: cast.setReceiverDisplayStatus");
|
||||||
|
};
|
||||||
|
|
||||||
|
export function unescape (escaped: string): string {
|
||||||
|
return unescape(escaped);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
onMessage(message => {
|
onMessage(message => {
|
||||||
switch (message.subject) {
|
switch (message.subject) {
|
||||||
|
case "shim:/initialized": {
|
||||||
|
isAvailable = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cast destination found (serviceUp). Set the API availability
|
* Cast destination found (serviceUp). Set the API availability
|
||||||
* property and call the page event function (__onGCastApiAvailable).
|
* property and call the page event function (__onGCastApiAvailable).
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ import { IdleReason
|
|||||||
, TrackType } from "./enums";
|
, TrackType } from "./enums";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export {
|
||||||
// Enums
|
// Enums
|
||||||
IdleReason, MediaCommand, MetadataType, PlayerState
|
IdleReason, MediaCommand, MetadataType, PlayerState
|
||||||
, RepeatMode, ResumeState, StreamType, TextTrackEdgeType
|
, RepeatMode, ResumeState, StreamType, TextTrackEdgeType
|
||||||
@@ -55,18 +55,18 @@ export default {
|
|||||||
, QueueReorderItemsRequest, QueueSetPropertiesRequest, QueueUpdateItemsRequest
|
, QueueReorderItemsRequest, QueueSetPropertiesRequest, QueueUpdateItemsRequest
|
||||||
, SeekRequest, StopRequest, TextTrackStyle, Track
|
, SeekRequest, StopRequest, TextTrackStyle, Track
|
||||||
, TvShowMediaMetadata, VolumeRequest
|
, TvShowMediaMetadata, VolumeRequest
|
||||||
|
|
||||||
, timeout: {
|
|
||||||
editTracksInfo: 0
|
|
||||||
, getStatus: 0
|
|
||||||
, load: 0
|
|
||||||
, pause: 0
|
|
||||||
, play: 0
|
|
||||||
, queue: 0
|
|
||||||
, seek: 0
|
|
||||||
, setVolume: 0
|
|
||||||
, stop: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
, DEFAULT_MEDIA_RECEIVER_APP_ID: "CC1AD845"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const timeout = {
|
||||||
|
editTracksInfo: 0
|
||||||
|
, getStatus: 0
|
||||||
|
, load: 0
|
||||||
|
, pause: 0
|
||||||
|
, play: 0
|
||||||
|
, queue: 0
|
||||||
|
, seek: 0
|
||||||
|
, setVolume: 0
|
||||||
|
, stop: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
export const DEFAULT_MEDIA_RECEIVER_APP_ID = "CC1AD845";
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import Image from "../../cast/classes/Image";
|
import * as cast from "../../cast";
|
||||||
import Session from "../../cast/classes/Session";
|
|
||||||
|
|
||||||
|
|
||||||
export default class ApplicationMetadata {
|
export default class ApplicationMetadata {
|
||||||
public applicationId: string;
|
public applicationId: string;
|
||||||
public images: Image[];
|
public images: cast.Image[];
|
||||||
public name: string;
|
public name: string;
|
||||||
public namespaces: string[];
|
public namespaces: string[];
|
||||||
|
|
||||||
constructor (sessionObj: Session) {
|
constructor (sessionObj: cast.Session) {
|
||||||
this.applicationId = sessionObj.appId;
|
this.applicationId = sessionObj.appId;
|
||||||
this.images = sessionObj.appImages;
|
this.images = sessionObj.appImages;
|
||||||
this.name = sessionObj.displayName;
|
this.name = sessionObj.displayName;
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import Image from "../../cast/classes/Image";
|
|
||||||
import Session from "../../cast/classes/Session";
|
|
||||||
|
|
||||||
import CastOptions from "./CastOptions";
|
import CastOptions from "./CastOptions";
|
||||||
import CastSession from "./CastSession";
|
import CastSession from "./CastSession";
|
||||||
import CastStateEventData from "./CastStateEventData";
|
import CastStateEventData from "./CastStateEventData";
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import { AutoJoinPolicy } from "../../cast/enums";
|
import * as cast from "../../cast";
|
||||||
|
|
||||||
|
|
||||||
export default class CastOptions {
|
export default class CastOptions {
|
||||||
public autoJoinPolicy: string = AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED;
|
public autoJoinPolicy: string = cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED;
|
||||||
public language: string = null;
|
public language: string = null;
|
||||||
public receiverApplicationId: string = null;
|
public receiverApplicationId: string = null;
|
||||||
public resumeSavedSession: boolean = true;
|
public resumeSavedSession: boolean = true;
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import Image from "../../cast/classes/Image";
|
import * as cast from "../../cast";
|
||||||
import Receiver from "../../cast/classes/Receiver";
|
|
||||||
import Session from "../../cast/classes/Session";
|
|
||||||
|
|
||||||
import LoadRequest from "../../cast/media/classes/LoadRequest";
|
|
||||||
import Media from "../../cast/media/classes/Media";
|
|
||||||
|
|
||||||
import ActiveInputStateEventData from "./ActiveInputStateEventData";
|
import ActiveInputStateEventData from "./ActiveInputStateEventData";
|
||||||
import ApplicationMetadata from "./ApplicationMetadata";
|
import ApplicationMetadata from "./ApplicationMetadata";
|
||||||
@@ -26,7 +21,7 @@ type MessageListener = (namespace: string, message: string) => void;
|
|||||||
|
|
||||||
|
|
||||||
export default class CastSession {
|
export default class CastSession {
|
||||||
constructor (sessionObj: Session, state: string) {
|
constructor (sessionObj: cast.Session, state: string) {
|
||||||
console.info("STUB :: CastSession#constructor");
|
console.info("STUB :: CastSession#constructor");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,12 +59,12 @@ export default class CastSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
public getCastDevice (): Receiver {
|
public getCastDevice (): cast.Receiver {
|
||||||
console.info("STUB :: CastSession#getCastDevice");
|
console.info("STUB :: CastSession#getCastDevice");
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
public getMediaSession (): Media {
|
public getMediaSession (): cast.media.Media {
|
||||||
console.info("STUB :: CastSession#getMediaSession");
|
console.info("STUB :: CastSession#getMediaSession");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +74,7 @@ export default class CastSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
public getSessionObj (): Session {
|
public getSessionObj (): cast.Session {
|
||||||
console.info("STUB :: CastSession#getSessionObj");
|
console.info("STUB :: CastSession#getSessionObj");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +94,7 @@ export default class CastSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
public loadMedia (loadRequest: LoadRequest): Promise<string> {
|
public loadMedia (loadRequest: cast.media.LoadRequest): Promise<string> {
|
||||||
console.info("STUB :: CastSession#loadMedia");
|
console.info("STUB :: CastSession#loadMedia");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import Media from "../../cast/media/classes/Media";
|
import * as cast from "../../cast";
|
||||||
|
|
||||||
import EventData from "./EventData";
|
import EventData from "./EventData";
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ import { SessionEventType } from "../enums";
|
|||||||
|
|
||||||
export default class ApplicationStatusEventData extends EventData {
|
export default class ApplicationStatusEventData extends EventData {
|
||||||
constructor (
|
constructor (
|
||||||
public mediaSession: Media) {
|
public mediaSession: cast.media.Media) {
|
||||||
|
|
||||||
super(SessionEventType.MEDIA_SESSION);
|
super(SessionEventType.MEDIA_SESSION);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import MediaInfo from "../../cast/media/classes/MediaInfo";
|
import * as cast from "../../cast";
|
||||||
|
|
||||||
import RemotePlayerController from "./RemotePlayerController";
|
import RemotePlayerController from "./RemotePlayerController";
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ export default class RemotePlayer {
|
|||||||
public isMediaLoaded = false;
|
public isMediaLoaded = false;
|
||||||
public isMuted = false;
|
public isMuted = false;
|
||||||
public isPaused = false;
|
public isPaused = false;
|
||||||
public mediaInfo: MediaInfo = null;
|
public mediaInfo: cast.media.MediaInfo = null;
|
||||||
public playerState: string = null;
|
public playerState: string = null;
|
||||||
public savedPlayerState: SavedPlayerState = null;
|
public savedPlayerState: SavedPlayerState = null;
|
||||||
public statusText = "";
|
public statusText = "";
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import { ErrorCode } from "../../cast/enums";
|
|
||||||
|
|
||||||
import CastSession from "./CastSession";
|
import CastSession from "./CastSession";
|
||||||
import EventData from "./EventData";
|
import EventData from "./EventData";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import cast from "../cast";
|
import * as cast from "../cast";
|
||||||
|
|
||||||
import ActiveInputStateEventData from "./classes/ActiveInputStateEventData";
|
import ActiveInputStateEventData from "./classes/ActiveInputStateEventData";
|
||||||
import ApplicationMetadata from "./classes/ApplicationMetadata";
|
import ApplicationMetadata from "./classes/ApplicationMetadata";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import cast from "./cast";
|
import * as cast from "./cast";
|
||||||
|
|
||||||
import { onMessage } from "./messageBridge";
|
import { onMessage } from "./messageBridge";
|
||||||
|
|
||||||
@@ -35,8 +35,6 @@ onMessage(message => {
|
|||||||
case "shim:/initialized": {
|
case "shim:/initialized": {
|
||||||
const bridgeInfo = message.data;
|
const bridgeInfo = message.data;
|
||||||
|
|
||||||
cast.isAvailable = true;
|
|
||||||
|
|
||||||
// Call page's API loaded function if defined
|
// Call page's API loaded function if defined
|
||||||
const readyFunction = global.__onGCastApiAvailable;
|
const readyFunction = global.__onGCastApiAvailable;
|
||||||
if (readyFunction && typeof readyFunction === "function") {
|
if (readyFunction && typeof readyFunction === "function") {
|
||||||
|
|||||||
Reference in New Issue
Block a user