popup页与注册菜单
Some checks failed
test / Run tests (push) Failing after 3s
build / Build (push) Failing after 6s

This commit is contained in:
2025-04-07 18:01:44 +08:00
parent a7620dd7e5
commit c43afb0a94
17 changed files with 667 additions and 359 deletions

View File

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

View File

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