Use abstract class instead of interface for ReceiverSelector base

This commit is contained in:
hensm
2020-06-28 05:22:07 +01:00
parent 18d4febc3d
commit 785df7a089
3 changed files with 8 additions and 16 deletions

View File

@@ -12,17 +12,13 @@ import { Receiver } from "../../types";
import ReceiverSelector, {
ReceiverSelection
, ReceiverSelectorEvents
, ReceiverSelectorMediaType } from "./ReceiverSelector";
const _ = browser.i18n.getMessage;
// TODO: Figure out lifetime properly
export default class NativeReceiverSelector
extends TypedEventTarget<ReceiverSelectorEvents>
implements ReceiverSelector {
export default class NativeReceiverSelector extends ReceiverSelector {
private bridgePort: (Port | null) = null;
private wasReceiverSelected: boolean = false;
private _isOpen: boolean = false;

View File

@@ -1,8 +1,7 @@
"use strict";
import ReceiverSelector, {
ReceiverSelectorEvents
, ReceiverSelectorMediaType } from "./ReceiverSelector";
ReceiverSelectorMediaType } from "./ReceiverSelector";
import logger from "../../lib/logger";
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");
export default class PopupReceiverSelector
extends TypedEventTarget<ReceiverSelectorEvents>
implements ReceiverSelector {
export default class PopupReceiverSelector extends ReceiverSelector {
private windowId?: number;
private messagePort?: Port;

View File

@@ -30,22 +30,22 @@ export interface ReceiverSelectionStop {
export type ReceiverSelection = ReceiverSelectionCast | ReceiverSelectionStop;
export interface ReceiverSelectorEvents {
interface ReceiverSelectorEvents {
"selected": ReceiverSelectionCast;
"error": string;
"cancelled": void;
"stop": ReceiverSelectionStop;
}
export default interface ReceiverSelector
export default abstract class ReceiverSelector
extends TypedEventTarget<ReceiverSelectorEvents> {
readonly isOpen: boolean;
abstract readonly isOpen: boolean;
open (receivers: Receiver[]
abstract open (receivers: Receiver[]
, defaultMediaType: ReceiverSelectorMediaType
, availableMediaTypes: ReceiverSelectorMediaType
, requestedAppId: string): void;
close (): void;
abstract close (): void;
}