mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-11 10:09:59 +00:00
Remove duplicate session creation code
This commit is contained in:
@@ -12,7 +12,7 @@ import { ApiConfig
|
|||||||
, DialRequest
|
, DialRequest
|
||||||
, Error as Error_
|
, Error as Error_
|
||||||
, Image as Image_
|
, Image as Image_
|
||||||
, Receiver as Receiver_
|
, Receiver as Receiver
|
||||||
, ReceiverDisplayStatus
|
, ReceiverDisplayStatus
|
||||||
, SenderApplication
|
, SenderApplication
|
||||||
, SessionRequest
|
, SessionRequest
|
||||||
@@ -30,6 +30,7 @@ import { AutoJoinPolicy
|
|||||||
, SenderPlatform
|
, SenderPlatform
|
||||||
, SessionStatus
|
, SessionStatus
|
||||||
, VolumeControlType } from "./enums";
|
, VolumeControlType } from "./enums";
|
||||||
|
import messaging from "../../messaging";
|
||||||
|
|
||||||
|
|
||||||
export * as media from "./media";
|
export * as media from "./media";
|
||||||
@@ -46,7 +47,7 @@ export {
|
|||||||
|
|
||||||
, Error_ as Error
|
, Error_ as Error
|
||||||
, Image_ as Image
|
, Image_ as Image
|
||||||
, Receiver_ as Receiver
|
, Receiver as Receiver
|
||||||
};
|
};
|
||||||
|
|
||||||
export let isAvailable = false;
|
export let isAvailable = false;
|
||||||
@@ -55,7 +56,7 @@ export const VERSION = [ 1, 2 ];
|
|||||||
|
|
||||||
|
|
||||||
type ReceiverActionListener = (
|
type ReceiverActionListener = (
|
||||||
receiver: Receiver_
|
receiver: Receiver
|
||||||
, receiverAction: string) => void;
|
, receiverAction: string) => void;
|
||||||
|
|
||||||
type RequestSessionSuccessCallback = (session: Session) => void;
|
type RequestSessionSuccessCallback = (session: Session) => void;
|
||||||
@@ -177,7 +178,7 @@ export function requestSession(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function _requestSession(
|
export function _requestSession(
|
||||||
_receiver: ReceiverDevice
|
receiver: ReceiverDevice
|
||||||
, successCallback?: RequestSessionSuccessCallback
|
, successCallback?: RequestSessionSuccessCallback
|
||||||
, errorCallback?: ErrorCallback): void {
|
, errorCallback?: ErrorCallback): void {
|
||||||
|
|
||||||
@@ -210,44 +211,12 @@ export function _requestSession(
|
|||||||
|
|
||||||
sessionRequestInProgress = true;
|
sessionRequestInProgress = true;
|
||||||
|
|
||||||
|
createSession(receiver).then(session => {
|
||||||
const selectedReceiver = new Receiver_(
|
sessionRequestInProgress = false;
|
||||||
_receiver.id
|
if (successCallback) {
|
||||||
, _receiver.friendlyName);
|
successCallback(session);
|
||||||
|
|
||||||
(selectedReceiver as any)._address = _receiver.host;
|
|
||||||
(selectedReceiver as any)._port = _receiver.port;
|
|
||||||
|
|
||||||
function createSession() {
|
|
||||||
sessionList.push(new Session(
|
|
||||||
sessionList.length.toString() // sessionId
|
|
||||||
, apiConfig.sessionRequest.appId // appId
|
|
||||||
, _receiver.friendlyName // displayName
|
|
||||||
, [] // appImages
|
|
||||||
, selectedReceiver // receiver
|
|
||||||
, (session: Session) => {
|
|
||||||
sendMessageResponse({
|
|
||||||
subject: "main:sessionCreated"
|
|
||||||
});
|
|
||||||
|
|
||||||
sessionRequestInProgress = false;
|
|
||||||
|
|
||||||
if (successCallback) {
|
|
||||||
successCallback(session);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
// If an existing session is active, stop it and start new one
|
|
||||||
if (sessionList.length) {
|
|
||||||
const lastSession = sessionList[sessionList.length - 1];
|
|
||||||
|
|
||||||
if (lastSession.status !== SessionStatus.STOPPED) {
|
|
||||||
lastSession.stop(createSession);
|
|
||||||
}
|
}
|
||||||
} else {
|
});
|
||||||
createSession();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function requestSessionById(_sessionId: string): void {
|
export function requestSessionById(_sessionId: string): void {
|
||||||
@@ -255,7 +224,7 @@ export function requestSessionById(_sessionId: string): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setCustomReceivers(
|
export function setCustomReceivers(
|
||||||
_receivers: Receiver_[]
|
_receivers: Receiver[]
|
||||||
, _successCallback?: SuccessCallback
|
, _successCallback?: SuccessCallback
|
||||||
, _errorCallback?: ErrorCallback): void {
|
, _errorCallback?: ErrorCallback): void {
|
||||||
|
|
||||||
@@ -275,6 +244,50 @@ export function unescape(escaped: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function createSession(receiver: ReceiverDevice): Promise<Session> {
|
||||||
|
const selectedReceiver = new Receiver(
|
||||||
|
receiver.id
|
||||||
|
, receiver.friendlyName);
|
||||||
|
|
||||||
|
(selectedReceiver as any)._address = receiver.host;
|
||||||
|
(selectedReceiver as any)._port = receiver.port;
|
||||||
|
|
||||||
|
async function createSessionObject(): Promise<Session> {
|
||||||
|
return new Promise((resolve, _reject) => {
|
||||||
|
const session = new Session(
|
||||||
|
sessionList.length.toString() // sessionId
|
||||||
|
, apiConfig.sessionRequest.appId // appId
|
||||||
|
, receiver.friendlyName // displayName
|
||||||
|
, [] // appImages
|
||||||
|
, selectedReceiver // receiver
|
||||||
|
, session => {
|
||||||
|
sendMessageResponse({
|
||||||
|
subject: "main:sessionCreated"
|
||||||
|
});
|
||||||
|
|
||||||
|
resolve(session);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// If an existing session is active, stop it and start new one
|
||||||
|
// TODO: Fix whatever broken behaviour this is
|
||||||
|
if (sessionList.length) {
|
||||||
|
const lastSession = sessionList[sessionList.length - 1];
|
||||||
|
|
||||||
|
if (lastSession.status !== SessionStatus.STOPPED) {
|
||||||
|
return new Promise((resolve, _reject) => {
|
||||||
|
lastSession.stop(() => {
|
||||||
|
resolve(createSessionObject());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return createSessionObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
onMessage(async message => {
|
onMessage(async message => {
|
||||||
switch (message.subject) {
|
switch (message.subject) {
|
||||||
case "shim:initialized": {
|
case "shim:initialized": {
|
||||||
@@ -330,49 +343,20 @@ onMessage(async message => {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectedReceiver = new Receiver_(
|
const { receiver } = message.data;
|
||||||
message.data.receiver.id
|
|
||||||
, message.data.receiver.friendlyName);
|
|
||||||
|
|
||||||
for (const listener of receiverActionListeners) {
|
for (const listener of receiverActionListeners) {
|
||||||
logger.info("Calling receiver action listener (CAST)"
|
logger.info("Calling receiver action listener", receiver);
|
||||||
, message.data.receiver);
|
|
||||||
listener(selectedReceiver, ReceiverAction.CAST);
|
const castReceiver = new Receiver(
|
||||||
|
receiver.id, receiver.friendlyName);
|
||||||
|
listener(castReceiver, ReceiverAction.CAST);
|
||||||
}
|
}
|
||||||
|
|
||||||
(selectedReceiver as any)._address = message.data.receiver.host;
|
const session = await createSession(receiver);
|
||||||
(selectedReceiver as any)._port = message.data.receiver.port;
|
sessionRequestInProgress = false;
|
||||||
|
if (sessionSuccessCallback) {
|
||||||
// eslint-disable-next-line no-inner-declarations
|
sessionSuccessCallback(session);
|
||||||
function createSession() {
|
|
||||||
sessionList.push(new Session(
|
|
||||||
sessionList.length.toString() // sessionId
|
|
||||||
, apiConfig.sessionRequest.appId // appId
|
|
||||||
, selectedReceiver.friendlyName // displayName
|
|
||||||
, [] // appImages
|
|
||||||
, selectedReceiver // receiver
|
|
||||||
, (session: Session) => {
|
|
||||||
sendMessageResponse({
|
|
||||||
subject: "main:sessionCreated"
|
|
||||||
});
|
|
||||||
|
|
||||||
sessionRequestInProgress = false;
|
|
||||||
|
|
||||||
if (sessionSuccessCallback) {
|
|
||||||
sessionSuccessCallback(session);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
// If an existing session is active, stop it and start new one
|
|
||||||
if (sessionList.length) {
|
|
||||||
const lastSession = sessionList[sessionList.length - 1];
|
|
||||||
|
|
||||||
if (lastSession.status !== SessionStatus.STOPPED) {
|
|
||||||
lastSession.stop(createSession);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
createSession();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -385,7 +369,7 @@ onMessage(async message => {
|
|||||||
sessionRequestInProgress = false;
|
sessionRequestInProgress = false;
|
||||||
|
|
||||||
for (const listener of receiverActionListeners) {
|
for (const listener of receiverActionListeners) {
|
||||||
const castReceiver = new Receiver_(
|
const castReceiver = new Receiver(
|
||||||
message.data.receiver.id
|
message.data.receiver.id
|
||||||
, message.data.receiver.friendlyName);
|
, message.data.receiver.friendlyName);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user