mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 18:39:58 +00:00
Use Messenger class and move messaging module to top-level
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
import bridge from "../lib/bridge";
|
import bridge from "../lib/bridge";
|
||||||
import loadSender from "../lib/loadSender";
|
import loadSender from "../lib/loadSender";
|
||||||
import logger from "../lib/logger";
|
import logger from "../lib/logger";
|
||||||
import { Message, Port } from "../lib/messaging";
|
import { Message, Port } from "../messaging";
|
||||||
import options from "../lib/options";
|
import options from "../lib/options";
|
||||||
|
|
||||||
import { ReceiverSelectionActionType
|
import { ReceiverSelectionActionType
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import bridge from "../lib/bridge";
|
import bridge from "../lib/bridge";
|
||||||
import logger from "../lib/logger";
|
import logger from "../lib/logger";
|
||||||
import { Message, Port } from "../lib/messaging";
|
import { Message, Port } from "../messaging";
|
||||||
|
|
||||||
import { TypedEventTarget } from "../lib/TypedEventTarget";
|
import { TypedEventTarget } from "../lib/TypedEventTarget";
|
||||||
import { Receiver, ReceiverStatus } from "../types";
|
import { Receiver, ReceiverStatus } from "../types";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import defaultOptions from "../defaultOptions";
|
import defaultOptions from "../defaultOptions";
|
||||||
import loadSender from "../lib/loadSender";
|
import loadSender from "../lib/loadSender";
|
||||||
import logger from "../lib/logger";
|
import logger from "../lib/logger";
|
||||||
import messaging from "../lib/messaging";
|
import messaging from "../messaging";
|
||||||
import options from "../lib/options";
|
import options from "../lib/options";
|
||||||
import bridge from "../lib/bridge";
|
import bridge from "../lib/bridge";
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import bridge from "../../lib/bridge";
|
import bridge from "../../lib/bridge";
|
||||||
import knownApps from "../../lib/knownApps";
|
import knownApps from "../../lib/knownApps";
|
||||||
import logger from "../../lib/logger";
|
import logger from "../../lib/logger";
|
||||||
import { Message, Port } from "../../lib/messaging";
|
import { Message, Port } from "../../messaging";
|
||||||
import options from "../../lib/options";
|
import options from "../../lib/options";
|
||||||
|
|
||||||
import { TypedEventTarget } from "../../lib/TypedEventTarget";
|
import { TypedEventTarget } from "../../lib/TypedEventTarget";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import ReceiverSelector, {
|
|||||||
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 "../../messaging";
|
||||||
import options from "../../lib/options";
|
import options from "../../lib/options";
|
||||||
|
|
||||||
import { TypedEventTarget } from "../../lib/TypedEventTarget";
|
import { TypedEventTarget } from "../../lib/TypedEventTarget";
|
||||||
|
|||||||
36
ext/src/lib/Messenger.ts
Normal file
36
ext/src/lib/Messenger.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -5,7 +5,7 @@ import semver from "semver";
|
|||||||
import { TypedPort } from "./TypedPort";
|
import { TypedPort } from "./TypedPort";
|
||||||
|
|
||||||
import logger from "./logger";
|
import logger from "./logger";
|
||||||
import { Messages, Message, Port } from "./messaging";
|
import { Messages, Message, Port } from "../messaging";
|
||||||
import nativeMessaging from "./nativeMessaging";
|
import nativeMessaging from "./nativeMessaging";
|
||||||
import options from "./options";
|
import options from "./options";
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import { TypedPort } from "./TypedPort";
|
import Messenger from "./lib/Messenger";
|
||||||
|
import { TypedPort } from "./lib/TypedPort";
|
||||||
|
|
||||||
import { BridgeInfo } from "./bridge";
|
import { BridgeInfo } from "./lib/bridge";
|
||||||
import { Receiver, ReceiverStatus } from "../types";
|
import { Receiver, ReceiverStatus } from "./types";
|
||||||
import { ReceiverSelectorMediaType } from "../background/receiverSelector";
|
import { ReceiverSelectorMediaType } from "./background/receiverSelector";
|
||||||
import { ReceiverSelection
|
import { ReceiverSelection
|
||||||
, ReceiverSelectionCast
|
, ReceiverSelectionCast
|
||||||
, ReceiverSelectionStop } from "../background/receiverSelector/ReceiverSelector";
|
, ReceiverSelectionStop } from "./background/receiverSelector/ReceiverSelector";
|
||||||
|
|
||||||
import Volume from "../shim/cast/classes/Volume";
|
import Volume from "./shim/cast/classes/Volume";
|
||||||
import { MediaInfo } from "../shim/cast/media";
|
import { MediaInfo } from "./shim/cast/media";
|
||||||
|
|
||||||
|
|
||||||
// TODO: Document messages properly
|
// TODO: Document messages properly
|
||||||
@@ -259,35 +260,4 @@ export type Messages = [
|
|||||||
export type Port = TypedPort<Messages>;
|
export type Port = TypedPort<Messages>;
|
||||||
export type Message = Messages[number];
|
export type Message = Messages[number];
|
||||||
|
|
||||||
|
export default new Messenger<Messages>();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -4,7 +4,7 @@ import logger from "../../lib/logger";
|
|||||||
import options from "../../lib/options";
|
import options from "../../lib/options";
|
||||||
import cast, { ensureInit } from "../../shim/export";
|
import cast, { ensureInit } from "../../shim/export";
|
||||||
|
|
||||||
import { Message } from "../../lib/messaging";
|
import { Message } from "../../messaging";
|
||||||
import { Receiver } from "../../types";
|
import { Receiver } from "../../types";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import { loadScript } from "../lib/utils";
|
import { loadScript } from "../lib/utils";
|
||||||
import { onMessageResponse, sendMessage } from "./eventMessageChannel";
|
import { onMessageResponse, sendMessage } from "./eventMessageChannel";
|
||||||
|
|
||||||
import messaging, { Message } from "../lib/messaging";
|
import messaging, { Message } from "../messaging";
|
||||||
|
|
||||||
|
|
||||||
const { isFramework }
|
const { isFramework }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import { Message } from "../lib/messaging";
|
import { Message } from "../messaging";
|
||||||
|
|
||||||
|
|
||||||
type ListenerFunc = (message: Message) => void;
|
type ListenerFunc = (message: Message) => void;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import * as cast from "./cast";
|
import * as cast from "./cast";
|
||||||
import { Message } from "../lib/messaging";
|
import { Message } from "../messaging";
|
||||||
|
|
||||||
import { BridgeInfo } from "../lib/bridge";
|
import { BridgeInfo } from "../lib/bridge";
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import ReactDOM from "react-dom";
|
|||||||
|
|
||||||
import knownApps from "../../lib/knownApps";
|
import knownApps from "../../lib/knownApps";
|
||||||
|
|
||||||
import { Message } from "../../lib/messaging";
|
import { Message } from "../../messaging";
|
||||||
import { getNextEllipsis } from "../../lib/utils";
|
import { getNextEllipsis } from "../../lib/utils";
|
||||||
import { Receiver } from "../../types";
|
import { Receiver } from "../../types";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user