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";