Expose types via cast/media exports

This commit is contained in:
hensm
2019-03-19 19:16:02 +00:00
parent 894738889a
commit 7da84505b7
11 changed files with 161 additions and 165 deletions

View File

@@ -24,7 +24,7 @@ import { AutoJoinPolicy
, SessionStatus
, VolumeControlType } from "./enums";
import media from "./media";
import * as media from "./media";
import { requestSession as requestSessionTimeout } from "../timeout";
@@ -53,138 +53,146 @@ const receiverListeners = new Set<ReceiverActionListener>();
let sessionSuccessCallback: RequestSessionSuccessCallback;
let sessionErrorCallback: ErrorCallback;
export default {
export {
// Enums
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState
, ErrorCode, ReceiverAction, ReceiverAvailability, ReceiverType
, SenderPlatform, SessionStatus, VolumeControlType
// Classes
, ApiConfig, DialRequest, Error: Error_, Image: Image_
, Receiver, ReceiverDisplayStatus, SenderApplication, Session
, SessionRequest, Timeout, Volume
, ApiConfig, DialRequest, Receiver, ReceiverDisplayStatus
, SenderApplication, Session, SessionRequest, Timeout
, Volume
, VERSION: [1, 2]
, isAvailable: false
, timeout: new Timeout()
, Error_ as Error
, Image_ as Image
// chrome.cast.media namespace
, 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 => {
switch (message.subject) {
case "shim:/initialized": {
isAvailable = true;
break;
}
/**
* Cast destination found (serviceUp). Set the API availability
* property and call the page event function (__onGCastApiAvailable).

View File

@@ -40,7 +40,7 @@ import { IdleReason
, TrackType } from "./enums";
export default {
export {
// Enums
IdleReason, MediaCommand, MetadataType, PlayerState
, RepeatMode, ResumeState, StreamType, TextTrackEdgeType
@@ -55,18 +55,18 @@ export default {
, QueueReorderItemsRequest, QueueSetPropertiesRequest, QueueUpdateItemsRequest
, SeekRequest, StopRequest, TextTrackStyle, Track
, 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";

View File

@@ -1,16 +1,15 @@
"use strict";
import Image from "../../cast/classes/Image";
import Session from "../../cast/classes/Session";
import * as cast from "../../cast";
export default class ApplicationMetadata {
public applicationId: string;
public images: Image[];
public images: cast.Image[];
public name: string;
public namespaces: string[];
constructor (sessionObj: Session) {
constructor (sessionObj: cast.Session) {
this.applicationId = sessionObj.appId;
this.images = sessionObj.appImages;
this.name = sessionObj.displayName;

View File

@@ -1,8 +1,5 @@
"use strict";
import Image from "../../cast/classes/Image";
import Session from "../../cast/classes/Session";
import CastOptions from "./CastOptions";
import CastSession from "./CastSession";
import CastStateEventData from "./CastStateEventData";

View File

@@ -1,9 +1,10 @@
"use strict";
import { AutoJoinPolicy } from "../../cast/enums";
import * as cast from "../../cast";
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 receiverApplicationId: string = null;
public resumeSavedSession: boolean = true;

View File

@@ -1,11 +1,6 @@
"use strict";
import Image from "../../cast/classes/Image";
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 * as cast from "../../cast";
import ActiveInputStateEventData from "./ActiveInputStateEventData";
import ApplicationMetadata from "./ApplicationMetadata";
@@ -26,7 +21,7 @@ type MessageListener = (namespace: string, message: string) => void;
export default class CastSession {
constructor (sessionObj: Session, state: string) {
constructor (sessionObj: cast.Session, state: string) {
console.info("STUB :: CastSession#constructor");
}
@@ -64,12 +59,12 @@ export default class CastSession {
}
// @ts-ignore
public getCastDevice (): Receiver {
public getCastDevice (): cast.Receiver {
console.info("STUB :: CastSession#getCastDevice");
}
// @ts-ignore
public getMediaSession (): Media {
public getMediaSession (): cast.media.Media {
console.info("STUB :: CastSession#getMediaSession");
}
@@ -79,7 +74,7 @@ export default class CastSession {
}
// @ts-ignore
public getSessionObj (): Session {
public getSessionObj (): cast.Session {
console.info("STUB :: CastSession#getSessionObj");
}
@@ -99,7 +94,7 @@ export default class CastSession {
}
// @ts-ignore
public loadMedia (loadRequest: LoadRequest): Promise<string> {
public loadMedia (loadRequest: cast.media.LoadRequest): Promise<string> {
console.info("STUB :: CastSession#loadMedia");
}

View File

@@ -1,6 +1,6 @@
"use strict";
import Media from "../../cast/media/classes/Media";
import * as cast from "../../cast";
import EventData from "./EventData";
@@ -9,7 +9,7 @@ import { SessionEventType } from "../enums";
export default class ApplicationStatusEventData extends EventData {
constructor (
public mediaSession: Media) {
public mediaSession: cast.media.Media) {
super(SessionEventType.MEDIA_SESSION);
}

View File

@@ -1,6 +1,6 @@
"use strict";
import MediaInfo from "../../cast/media/classes/MediaInfo";
import * as cast from "../../cast";
import RemotePlayerController from "./RemotePlayerController";
@@ -25,7 +25,7 @@ export default class RemotePlayer {
public isMediaLoaded = false;
public isMuted = false;
public isPaused = false;
public mediaInfo: MediaInfo = null;
public mediaInfo: cast.media.MediaInfo = null;
public playerState: string = null;
public savedPlayerState: SavedPlayerState = null;
public statusText = "";

View File

@@ -1,7 +1,5 @@
"use strict";
import { ErrorCode } from "../../cast/enums";
import CastSession from "./CastSession";
import EventData from "./EventData";

View File

@@ -1,6 +1,6 @@
"use strict";
import cast from "../cast";
import * as cast from "../cast";
import ActiveInputStateEventData from "./classes/ActiveInputStateEventData";
import ApplicationMetadata from "./classes/ApplicationMetadata";

View File

@@ -1,6 +1,6 @@
"use strict";
import cast from "./cast";
import * as cast from "./cast";
import { onMessage } from "./messageBridge";
@@ -35,8 +35,6 @@ onMessage(message => {
case "shim:/initialized": {
const bridgeInfo = message.data;
cast.isAvailable = true;
// Call page's API loaded function if defined
const readyFunction = global.__onGCastApiAvailable;
if (readyFunction && typeof readyFunction === "function") {