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, { 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;

View File

@@ -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;

View File

@@ -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;
} }