mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-09 09:09:58 +00:00
Expose types via cast/media exports
This commit is contained in:
@@ -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).
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 = "";
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
import { ErrorCode } from "../../cast/enums";
|
||||
|
||||
import CastSession from "./CastSession";
|
||||
import EventData from "./EventData";
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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") {
|
||||
|
||||
Reference in New Issue
Block a user