diff --git a/ext/src/background/ShimManager.ts b/ext/src/background/ShimManager.ts index 4de2a61..39d3ca8 100644 --- a/ext/src/background/ShimManager.ts +++ b/ext/src/background/ShimManager.ts @@ -3,7 +3,7 @@ import bridge from "../lib/bridge"; import loadSender from "../lib/loadSender"; import logger from "../lib/logger"; -import { Message, Port } from "../lib/messaging"; +import { Message, Port } from "../messaging"; import options from "../lib/options"; import { ReceiverSelectionActionType diff --git a/ext/src/background/StatusManager.ts b/ext/src/background/StatusManager.ts index ebb066d..4f7c5c1 100644 --- a/ext/src/background/StatusManager.ts +++ b/ext/src/background/StatusManager.ts @@ -2,7 +2,7 @@ import bridge from "../lib/bridge"; import logger from "../lib/logger"; -import { Message, Port } from "../lib/messaging"; +import { Message, Port } from "../messaging"; import { TypedEventTarget } from "../lib/TypedEventTarget"; import { Receiver, ReceiverStatus } from "../types"; diff --git a/ext/src/background/background.ts b/ext/src/background/background.ts index d474735..bbc0017 100755 --- a/ext/src/background/background.ts +++ b/ext/src/background/background.ts @@ -3,7 +3,7 @@ import defaultOptions from "../defaultOptions"; import loadSender from "../lib/loadSender"; import logger from "../lib/logger"; -import messaging from "../lib/messaging"; +import messaging from "../messaging"; import options from "../lib/options"; import bridge from "../lib/bridge"; diff --git a/ext/src/background/receiverSelector/NativeReceiverSelector.ts b/ext/src/background/receiverSelector/NativeReceiverSelector.ts index ce1179d..87fddc7 100644 --- a/ext/src/background/receiverSelector/NativeReceiverSelector.ts +++ b/ext/src/background/receiverSelector/NativeReceiverSelector.ts @@ -3,7 +3,7 @@ import bridge from "../../lib/bridge"; import knownApps from "../../lib/knownApps"; import logger from "../../lib/logger"; -import { Message, Port } from "../../lib/messaging"; +import { Message, Port } from "../../messaging"; import options from "../../lib/options"; import { TypedEventTarget } from "../../lib/TypedEventTarget"; diff --git a/ext/src/background/receiverSelector/PopupReceiverSelector.ts b/ext/src/background/receiverSelector/PopupReceiverSelector.ts index 0a0206a..f08e8df 100644 --- a/ext/src/background/receiverSelector/PopupReceiverSelector.ts +++ b/ext/src/background/receiverSelector/PopupReceiverSelector.ts @@ -4,7 +4,7 @@ import ReceiverSelector, { ReceiverSelectorMediaType } from "./ReceiverSelector"; import logger from "../../lib/logger"; -import messaging, { Port, Message } from "../../lib/messaging"; +import messaging, { Port, Message } from "../../messaging"; import options from "../../lib/options"; import { TypedEventTarget } from "../../lib/TypedEventTarget"; diff --git a/ext/src/lib/Messenger.ts b/ext/src/lib/Messenger.ts new file mode 100644 index 0000000..4303c0b --- /dev/null +++ b/ext/src/lib/Messenger.ts @@ -0,0 +1,36 @@ +"use strict"; + +import { TypedPort } from "./TypedPort"; + + +interface RuntimeConnectInfo { + name: string; +} +interface TabConnectInfo { + name: string; + frameId: number; +} + +export default class Messenger { + connect (connectInfo: RuntimeConnectInfo) { + return browser.runtime.connect(connectInfo) as + unknown as TypedPort; + } + + connectTab (tabId: number, connectInfo: TabConnectInfo) { + return browser.tabs.connect(tabId, connectInfo) as + unknown as TypedPort; + } + + onConnect = { + addListener (cb: (port: TypedPort) => void) { + browser.runtime.onConnect.addListener(cb as any); + } + , removeListener (cb: (port: TypedPort) => void) { + browser.runtime.onConnect.removeListener(cb as any); + } + , hasListener (cb: (port: TypedPort) => void) { + return browser.runtime.onConnect.hasListener(cb as any); + } + } +}; diff --git a/ext/src/lib/bridge.ts b/ext/src/lib/bridge.ts index c8fced0..e299bee 100644 --- a/ext/src/lib/bridge.ts +++ b/ext/src/lib/bridge.ts @@ -5,7 +5,7 @@ import semver from "semver"; import { TypedPort } from "./TypedPort"; import logger from "./logger"; -import { Messages, Message, Port } from "./messaging"; +import { Messages, Message, Port } from "../messaging"; import nativeMessaging from "./nativeMessaging"; import options from "./options"; diff --git a/ext/src/lib/messaging.ts b/ext/src/messaging.ts similarity index 81% rename from ext/src/lib/messaging.ts rename to ext/src/messaging.ts index d2112a7..ebdc392 100644 --- a/ext/src/lib/messaging.ts +++ b/ext/src/messaging.ts @@ -1,16 +1,17 @@ "use strict"; -import { TypedPort } from "./TypedPort"; +import Messenger from "./lib/Messenger"; +import { TypedPort } from "./lib/TypedPort"; -import { BridgeInfo } from "./bridge"; -import { Receiver, ReceiverStatus } from "../types"; -import { ReceiverSelectorMediaType } from "../background/receiverSelector"; +import { BridgeInfo } from "./lib/bridge"; +import { Receiver, ReceiverStatus } from "./types"; +import { ReceiverSelectorMediaType } from "./background/receiverSelector"; import { ReceiverSelection , ReceiverSelectionCast - , ReceiverSelectionStop } from "../background/receiverSelector/ReceiverSelector"; + , ReceiverSelectionStop } from "./background/receiverSelector/ReceiverSelector"; -import Volume from "../shim/cast/classes/Volume"; -import { MediaInfo } from "../shim/cast/media"; +import Volume from "./shim/cast/classes/Volume"; +import { MediaInfo } from "./shim/cast/media"; // TODO: Document messages properly @@ -259,35 +260,4 @@ export type Messages = [ export type Port = TypedPort; export type Message = Messages[number]; - -interface RuntimeConnectInfo { - name: string; -} -interface TabConnectInfo { - name: string; - frameId: number; -} - -export default { - connect (connectInfo: RuntimeConnectInfo) { - return browser.runtime.connect(connectInfo) as - unknown as TypedPort; - } - - , connectTab (tabId: number, connectInfo: TabConnectInfo) { - return browser.tabs.connect(tabId, connectInfo) as - unknown as TypedPort; - } - - , onConnect: { - addListener (cb: (port: TypedPort) => void) { - browser.runtime.onConnect.addListener(cb as any); - } - , removeListener (cb: (port: TypedPort) => void) { - browser.runtime.onConnect.removeListener(cb as any); - } - , hasListener (cb: (port: TypedPort) => void) { - return browser.runtime.onConnect.hasListener(cb as any); - } - } -}; +export default new Messenger(); diff --git a/ext/src/senders/media/index.ts b/ext/src/senders/media/index.ts index 9f58694..18ec9f1 100644 --- a/ext/src/senders/media/index.ts +++ b/ext/src/senders/media/index.ts @@ -4,7 +4,7 @@ import logger from "../../lib/logger"; import options from "../../lib/options"; import cast, { ensureInit } from "../../shim/export"; -import { Message } from "../../lib/messaging"; +import { Message } from "../../messaging"; import { Receiver } from "../../types"; diff --git a/ext/src/shim/contentBridge.ts b/ext/src/shim/contentBridge.ts index 8645d79..7aeb51b 100644 --- a/ext/src/shim/contentBridge.ts +++ b/ext/src/shim/contentBridge.ts @@ -3,7 +3,7 @@ import { loadScript } from "../lib/utils"; import { onMessageResponse, sendMessage } from "./eventMessageChannel"; -import messaging, { Message } from "../lib/messaging"; +import messaging, { Message } from "../messaging"; const { isFramework } diff --git a/ext/src/shim/eventMessageChannel.ts b/ext/src/shim/eventMessageChannel.ts index b95f093..76a903d 100644 --- a/ext/src/shim/eventMessageChannel.ts +++ b/ext/src/shim/eventMessageChannel.ts @@ -1,6 +1,6 @@ "use strict"; -import { Message } from "../lib/messaging"; +import { Message } from "../messaging"; type ListenerFunc = (message: Message) => void; diff --git a/ext/src/shim/export.ts b/ext/src/shim/export.ts index ef1d174..714ac5c 100644 --- a/ext/src/shim/export.ts +++ b/ext/src/shim/export.ts @@ -1,7 +1,7 @@ "use strict"; import * as cast from "./cast"; -import { Message } from "../lib/messaging"; +import { Message } from "../messaging"; import { BridgeInfo } from "../lib/bridge"; diff --git a/ext/src/ui/popup/index.tsx b/ext/src/ui/popup/index.tsx index c90b189..0c5c3d2 100755 --- a/ext/src/ui/popup/index.tsx +++ b/ext/src/ui/popup/index.tsx @@ -6,7 +6,7 @@ import ReactDOM from "react-dom"; import knownApps from "../../lib/knownApps"; -import { Message } from "../../lib/messaging"; +import { Message } from "../../messaging"; import { getNextEllipsis } from "../../lib/utils"; import { Receiver } from "../../types";