popup页与注册菜单
Some checks failed
test / Run tests (push) Failing after 3s
build / Build (push) Failing after 6s
Some checks failed
test / Run tests (push) Failing after 3s
build / Build (push) Failing after 6s
This commit is contained in:
@ -84,3 +84,25 @@ export class ExtensionMessageConnect implements MessageConnect {
|
||||
this.con.onDisconnect.addListener(callback);
|
||||
}
|
||||
}
|
||||
|
||||
export class ExtensionContentMessageSend extends ExtensionMessageSend {
|
||||
constructor(private tabId: number) {
|
||||
super();
|
||||
}
|
||||
|
||||
sendMessage(data: any): Promise<any> {
|
||||
return new Promise((resolve) => {
|
||||
chrome.tabs.sendMessage(this.tabId, data, (resp) => {
|
||||
resolve(resp);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
connect(data: any): Promise<MessageConnect> {
|
||||
return new Promise((resolve) => {
|
||||
const con = chrome.tabs.connect(this.tabId);
|
||||
con.postMessage(data);
|
||||
resolve(new ExtensionMessageConnect(con));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ export interface MessageConnect {
|
||||
onDisconnect(callback: () => void): void;
|
||||
}
|
||||
|
||||
export type MessageSender = any;
|
||||
export type MessageSender = chrome.runtime.MessageSender;
|
||||
|
||||
export class GetSender {
|
||||
constructor(private sender: MessageConnect | MessageSender) {}
|
||||
@ -117,13 +117,13 @@ export class Group {
|
||||
export function forwardMessage(prefix: string, path: string, from: Server, to: MessageSend, middleware?: ApiFunction) {
|
||||
from.on(path, async (params, fromCon) => {
|
||||
if (middleware) {
|
||||
const resp = await middleware(params, new GetSender(fromCon));
|
||||
const resp = await middleware(params, fromCon);
|
||||
if (resp !== false) {
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
if (fromCon) {
|
||||
const fromConnect = fromCon.getConnect();
|
||||
const fromConnect = fromCon.getConnect();
|
||||
if (fromConnect) {
|
||||
to.connect({ action: prefix + "/" + path, data: params }).then((toCon) => {
|
||||
fromConnect.onMessage((data) => {
|
||||
toCon.sendMessage(data);
|
||||
|
Reference in New Issue
Block a user