mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 10:39:57 +00:00
Use abstract class instead of interface for ReceiverSelector base
This commit is contained in:
@@ -12,17 +12,13 @@ import { Receiver } from "../../types";
|
|||||||
|
|
||||||
import ReceiverSelector, {
|
import ReceiverSelector, {
|
||||||
ReceiverSelection
|
ReceiverSelection
|
||||||
, ReceiverSelectorEvents
|
|
||||||
, ReceiverSelectorMediaType } from "./ReceiverSelector";
|
, ReceiverSelectorMediaType } from "./ReceiverSelector";
|
||||||
|
|
||||||
|
|
||||||
const _ = browser.i18n.getMessage;
|
const _ = browser.i18n.getMessage;
|
||||||
|
|
||||||
// TODO: Figure out lifetime properly
|
// TODO: Figure out lifetime properly
|
||||||
export default class NativeReceiverSelector
|
export default class NativeReceiverSelector extends ReceiverSelector {
|
||||||
extends TypedEventTarget<ReceiverSelectorEvents>
|
|
||||||
implements ReceiverSelector {
|
|
||||||
|
|
||||||
private bridgePort: (Port | null) = null;
|
private bridgePort: (Port | null) = null;
|
||||||
private wasReceiverSelected: boolean = false;
|
private wasReceiverSelected: boolean = false;
|
||||||
private _isOpen: boolean = false;
|
private _isOpen: boolean = false;
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import ReceiverSelector, {
|
import ReceiverSelector, {
|
||||||
ReceiverSelectorEvents
|
ReceiverSelectorMediaType } from "./ReceiverSelector";
|
||||||
, ReceiverSelectorMediaType } from "./ReceiverSelector";
|
|
||||||
|
|
||||||
import logger from "../../lib/logger";
|
import logger from "../../lib/logger";
|
||||||
import messaging, { Port, Message } from "../../lib/messaging";
|
import messaging, { Port, Message } from "../../lib/messaging";
|
||||||
@@ -15,10 +14,7 @@ import { Receiver } from "../../types";
|
|||||||
|
|
||||||
const POPUP_URL = browser.runtime.getURL("ui/popup/index.html");
|
const POPUP_URL = browser.runtime.getURL("ui/popup/index.html");
|
||||||
|
|
||||||
export default class PopupReceiverSelector
|
export default class PopupReceiverSelector extends ReceiverSelector {
|
||||||
extends TypedEventTarget<ReceiverSelectorEvents>
|
|
||||||
implements ReceiverSelector {
|
|
||||||
|
|
||||||
private windowId?: number;
|
private windowId?: number;
|
||||||
|
|
||||||
private messagePort?: Port;
|
private messagePort?: Port;
|
||||||
|
|||||||
@@ -30,22 +30,22 @@ export interface ReceiverSelectionStop {
|
|||||||
export type ReceiverSelection = ReceiverSelectionCast | ReceiverSelectionStop;
|
export type ReceiverSelection = ReceiverSelectionCast | ReceiverSelectionStop;
|
||||||
|
|
||||||
|
|
||||||
export interface ReceiverSelectorEvents {
|
interface ReceiverSelectorEvents {
|
||||||
"selected": ReceiverSelectionCast;
|
"selected": ReceiverSelectionCast;
|
||||||
"error": string;
|
"error": string;
|
||||||
"cancelled": void;
|
"cancelled": void;
|
||||||
"stop": ReceiverSelectionStop;
|
"stop": ReceiverSelectionStop;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default interface ReceiverSelector
|
export default abstract class ReceiverSelector
|
||||||
extends TypedEventTarget<ReceiverSelectorEvents> {
|
extends TypedEventTarget<ReceiverSelectorEvents> {
|
||||||
|
|
||||||
readonly isOpen: boolean;
|
abstract readonly isOpen: boolean;
|
||||||
|
|
||||||
open (receivers: Receiver[]
|
abstract open (receivers: Receiver[]
|
||||||
, defaultMediaType: ReceiverSelectorMediaType
|
, defaultMediaType: ReceiverSelectorMediaType
|
||||||
, availableMediaTypes: ReceiverSelectorMediaType
|
, availableMediaTypes: ReceiverSelectorMediaType
|
||||||
, requestedAppId: string): void;
|
, requestedAppId: string): void;
|
||||||
|
|
||||||
close (): void;
|
abstract close (): void;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user