Use Messenger class and move messaging module to top-level

This commit is contained in:
hensm
2020-08-11 05:38:07 +01:00
parent 01e30bca58
commit c608596edd
13 changed files with 56 additions and 50 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

36
ext/src/lib/Messenger.ts Normal file
View File

@@ -0,0 +1,36 @@
"use strict";
import { TypedPort } from "./TypedPort";
interface RuntimeConnectInfo {
name: string;
}
interface TabConnectInfo {
name: string;
frameId: number;
}
export default class Messenger<T extends any[]> {
connect (connectInfo: RuntimeConnectInfo) {
return browser.runtime.connect(connectInfo) as
unknown as TypedPort<T>;
}
connectTab (tabId: number, connectInfo: TabConnectInfo) {
return browser.tabs.connect(tabId, connectInfo) as
unknown as TypedPort<T>;
}
onConnect = {
addListener (cb: (port: TypedPort<T>) => void) {
browser.runtime.onConnect.addListener(cb as any);
}
, removeListener (cb: (port: TypedPort<T>) => void) {
browser.runtime.onConnect.removeListener(cb as any);
}
, hasListener (cb: (port: TypedPort<T>) => void) {
return browser.runtime.onConnect.hasListener(cb as any);
}
}
};

View File

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

View File

@@ -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<Messages>;
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<Messages>;
}
, connectTab (tabId: number, connectInfo: TabConnectInfo) {
return browser.tabs.connect(tabId, connectInfo) as
unknown as TypedPort<Messages>;
}
, onConnect: {
addListener (cb: (port: TypedPort<Messages>) => void) {
browser.runtime.onConnect.addListener(cb as any);
}
, removeListener (cb: (port: TypedPort<Messages>) => void) {
browser.runtime.onConnect.removeListener(cb as any);
}
, hasListener (cb: (port: TypedPort<Messages>) => void) {
return browser.runtime.onConnect.hasListener(cb as any);
}
}
};
export default new Messenger<Messages>();

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
"use strict";
import { Message } from "../lib/messaging";
import { Message } from "../messaging";
type ListenerFunc = (message: Message) => void;

View File

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

View File

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