Replace StatusManager

This commit is contained in:
hensm
2021-04-28 06:21:50 +01:00
parent c1172410f9
commit f44d142631
22 changed files with 295 additions and 286 deletions

View File

@@ -8,7 +8,7 @@ import options from "../../lib/options";
import { TypedEventTarget } from "../../lib/TypedEventTarget";
import { getWindowCenteredProps } from "../../lib/utils";
import { Receiver } from "../../types";
import { ReceiverDevice } from "../../types";
import ReceiverSelector, {
ReceiverSelection
@@ -34,7 +34,7 @@ export default class NativeReceiverSelector extends ReceiverSelector {
}
public async open(
receivers: Receiver[]
receivers: ReceiverDevice[]
, defaultMediaType: ReceiverSelectorMediaType
, availableMediaTypes: ReceiverSelectorMediaType
, appId?: string): Promise<void> {

View File

@@ -9,7 +9,7 @@ import options from "../../lib/options";
import { TypedEventTarget } from "../../lib/TypedEventTarget";
import { getWindowCenteredProps, WindowCenteredProps } from "../../lib/utils";
import { Receiver } from "../../types";
import { ReceiverDevice } from "../../types";
const POPUP_URL = browser.runtime.getURL("ui/popup/index.html");
@@ -20,7 +20,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
private messagePort?: Port;
private messagePortDisconnected?: boolean;
private receivers?: Receiver[];
private receivers?: ReceiverDevice[];
private defaultMediaType?: ReceiverSelectorMediaType;
private availableMediaTypes?: ReceiverSelectorMediaType;
@@ -53,7 +53,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
}
public async open(
receivers: Receiver[]
receivers: ReceiverDevice[]
, defaultMediaType: ReceiverSelectorMediaType
, availableMediaTypes: ReceiverSelectorMediaType
, appId?: string): Promise<void> {
@@ -115,7 +115,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
}
}
public update(receivers: Receiver[]) {
public update(receivers: ReceiverDevice[]) {
this.receivers = receivers;
this.messagePort?.postMessage({
subject: "popup:update"

View File

@@ -1,7 +1,7 @@
"use strict";
import { TypedEventTarget } from "../../lib/TypedEventTarget";
import { Receiver } from "../../types";
import { ReceiverDevice } from "../../types";
export enum ReceiverSelectorMediaType {
@@ -18,13 +18,13 @@ export enum ReceiverSelectionActionType {
export interface ReceiverSelectionCast {
actionType: ReceiverSelectionActionType.Cast;
receiver: Receiver;
receiver: ReceiverDevice;
mediaType: ReceiverSelectorMediaType;
filePath?: string;
}
export interface ReceiverSelectionStop {
actionType: ReceiverSelectionActionType.Stop;
receiver: Receiver;
receiver: ReceiverDevice;
}
export type ReceiverSelection = ReceiverSelectionCast | ReceiverSelectionStop;
@@ -43,12 +43,12 @@ export default abstract class ReceiverSelector
abstract readonly isOpen: boolean;
abstract open (
receivers: Receiver[]
receivers: ReceiverDevice[]
, defaultMediaType: ReceiverSelectorMediaType
, availableMediaTypes: ReceiverSelectorMediaType
, appId?: string): void;
abstract update (receivers: Receiver[]): void;
abstract update (receivers: ReceiverDevice[]): void;
abstract close (): void;
}

View File

@@ -4,7 +4,7 @@ import options from "../../lib/options";
import logger from "../../lib/logger";
import ShimManager from "../ShimManager";
import StatusManager from "../StatusManager";
import receiverDevices from "../receiverDevices";
import { getMediaTypesForPageUrl } from "../../lib/utils";
@@ -120,12 +120,15 @@ async function getSelection(
function onReceiverChange() {
sharedSelector.update(Array.from(StatusManager.getReceivers()));
sharedSelector.update(receiverDevices.getDevices());
}
StatusManager.addEventListener("serviceUp", onReceiverChange);
StatusManager.addEventListener("serviceDown", onReceiverChange);
StatusManager.addEventListener("statusUpdate", onReceiverChange);
receiverDevices.addEventListener(
"receiverDeviceUp", onReceiverChange);
receiverDevices.addEventListener(
"receiverDeviceDown", onReceiverChange);
receiverDevices.addEventListener(
"receiverDeviceUpdated", onReceiverChange);
let onSelected: any;
@@ -156,9 +159,12 @@ async function getSelection(
sharedSelector.removeEventListener("error", onError);
sharedSelector.removeEventListener("stop", onStop);
StatusManager.removeEventListener("serviceUp", onReceiverChange);
StatusManager.removeEventListener("serviceDown", onReceiverChange);
StatusManager.removeEventListener("statusUpdate", onReceiverChange);
receiverDevices.removeEventListener(
"receiverDeviceUp", onReceiverChange);
receiverDevices.removeEventListener(
"receiverDeviceDown", onReceiverChange);
receiverDevices.removeEventListener(
"receiverDeviceUpdated", onReceiverChange);
}
sharedSelector.addEventListener("selected"
@@ -191,10 +197,9 @@ async function getSelection(
sharedSelector.addEventListener("stop"
, storeListener("stop", async ev => {
logger.info("Stopped receiver app", ev.detail);
logger.info("Stopping receiver app...", ev.detail);
await StatusManager.init();
await StatusManager.stopReceiverApp(ev.detail.receiver);
receiverDevices.stopReceiverApp(ev.detail.receiver.id);
resolve({
actionType: ReceiverSelectionActionType.Stop
@@ -205,10 +210,10 @@ async function getSelection(
// Ensure status manager is initialized
await StatusManager.init();
await receiverDevices.init();
sharedSelector.open(
Array.from(StatusManager.getReceivers())
receiverDevices.getDevices()
, defaultMediaType
, availableMediaTypes
, currentShim?.appId);