mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 16:49:58 +00:00
Remove duplicate session creation code
This commit is contained in:
@@ -12,7 +12,7 @@ import { ApiConfig
|
||||
, DialRequest
|
||||
, Error as Error_
|
||||
, Image as Image_
|
||||
, Receiver as Receiver_
|
||||
, Receiver as Receiver
|
||||
, ReceiverDisplayStatus
|
||||
, SenderApplication
|
||||
, SessionRequest
|
||||
@@ -30,6 +30,7 @@ import { AutoJoinPolicy
|
||||
, SenderPlatform
|
||||
, SessionStatus
|
||||
, VolumeControlType } from "./enums";
|
||||
import messaging from "../../messaging";
|
||||
|
||||
|
||||
export * as media from "./media";
|
||||
@@ -46,7 +47,7 @@ export {
|
||||
|
||||
, Error_ as Error
|
||||
, Image_ as Image
|
||||
, Receiver_ as Receiver
|
||||
, Receiver as Receiver
|
||||
};
|
||||
|
||||
export let isAvailable = false;
|
||||
@@ -55,7 +56,7 @@ export const VERSION = [ 1, 2 ];
|
||||
|
||||
|
||||
type ReceiverActionListener = (
|
||||
receiver: Receiver_
|
||||
receiver: Receiver
|
||||
, receiverAction: string) => void;
|
||||
|
||||
type RequestSessionSuccessCallback = (session: Session) => void;
|
||||
@@ -177,7 +178,7 @@ export function requestSession(
|
||||
}
|
||||
|
||||
export function _requestSession(
|
||||
_receiver: ReceiverDevice
|
||||
receiver: ReceiverDevice
|
||||
, successCallback?: RequestSessionSuccessCallback
|
||||
, errorCallback?: ErrorCallback): void {
|
||||
|
||||
@@ -210,44 +211,12 @@ export function _requestSession(
|
||||
|
||||
sessionRequestInProgress = true;
|
||||
|
||||
|
||||
const selectedReceiver = new Receiver_(
|
||||
_receiver.id
|
||||
, _receiver.friendlyName);
|
||||
|
||||
(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);
|
||||
createSession(receiver).then(session => {
|
||||
sessionRequestInProgress = false;
|
||||
if (successCallback) {
|
||||
successCallback(session);
|
||||
}
|
||||
} else {
|
||||
createSession();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export function requestSessionById(_sessionId: string): void {
|
||||
@@ -255,7 +224,7 @@ export function requestSessionById(_sessionId: string): void {
|
||||
}
|
||||
|
||||
export function setCustomReceivers(
|
||||
_receivers: Receiver_[]
|
||||
_receivers: Receiver[]
|
||||
, _successCallback?: SuccessCallback
|
||||
, _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 => {
|
||||
switch (message.subject) {
|
||||
case "shim:initialized": {
|
||||
@@ -330,49 +343,20 @@ onMessage(async message => {
|
||||
break;
|
||||
}
|
||||
|
||||
const selectedReceiver = new Receiver_(
|
||||
message.data.receiver.id
|
||||
, message.data.receiver.friendlyName);
|
||||
const { receiver } = message.data;
|
||||
|
||||
for (const listener of receiverActionListeners) {
|
||||
logger.info("Calling receiver action listener (CAST)"
|
||||
, message.data.receiver);
|
||||
listener(selectedReceiver, ReceiverAction.CAST);
|
||||
logger.info("Calling receiver action listener", receiver);
|
||||
|
||||
const castReceiver = new Receiver(
|
||||
receiver.id, receiver.friendlyName);
|
||||
listener(castReceiver, ReceiverAction.CAST);
|
||||
}
|
||||
|
||||
(selectedReceiver as any)._address = message.data.receiver.host;
|
||||
(selectedReceiver as any)._port = message.data.receiver.port;
|
||||
|
||||
// eslint-disable-next-line no-inner-declarations
|
||||
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();
|
||||
const session = await createSession(receiver);
|
||||
sessionRequestInProgress = false;
|
||||
if (sessionSuccessCallback) {
|
||||
sessionSuccessCallback(session);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -385,7 +369,7 @@ onMessage(async message => {
|
||||
sessionRequestInProgress = false;
|
||||
|
||||
for (const listener of receiverActionListeners) {
|
||||
const castReceiver = new Receiver_(
|
||||
const castReceiver = new Receiver(
|
||||
message.data.receiver.id
|
||||
, message.data.receiver.friendlyName);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user