Some checks failed
test / Run tests (push) Failing after 17s
build / Build (push) Failing after 24s
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import { Server } from "@Packages/message/server";
|
|
import { ScriptService } from "./script";
|
|
import { Broker, MessageQueue } from "@Packages/message/message_queue";
|
|
import { Logger, LoggerDAO } from "@App/app/repo/logger";
|
|
import { WindowMessage } from "@Packages/message/window_message";
|
|
import { ExtensionMessage } from "@Packages/message/extension_message";
|
|
import { ServiceWorkerClient } from "../service_worker/client";
|
|
import { sendMessage } from "@Packages/message/client";
|
|
|
|
// offscreen环境的管理器
|
|
export class OffscreenManager {
|
|
private extensionMessage = new ExtensionMessage();
|
|
|
|
private api: Server = new Server("offscreen", this.extensionMessage);
|
|
|
|
private windowMessage = new WindowMessage(window, sandbox);
|
|
|
|
private windowApi: Server = new Server("offscreen-window", this.windowMessage);
|
|
|
|
private mq: MessageQueue = new MessageQueue(this.api);
|
|
|
|
private broker: Broker = new Broker(this.extensionMessage);
|
|
|
|
logger(data: Logger) {
|
|
const dao = new LoggerDAO();
|
|
dao.save(data);
|
|
}
|
|
|
|
preparationSandbox() {
|
|
// 通知初始化好环境了
|
|
const serviceWorker = new ServiceWorkerClient();
|
|
serviceWorker.preparationOffscreen();
|
|
}
|
|
|
|
sendMessageToServiceWorker(data: { action: string; data: any }) {
|
|
return sendMessage(data.action, data.data);
|
|
}
|
|
|
|
initManager() {
|
|
// 监听消息
|
|
const group = this.api.group("offscreen");
|
|
this.windowApi.on("logger", this.logger.bind(this));
|
|
this.windowApi.on("preparationSandbox", this.preparationSandbox.bind(this));
|
|
this.windowApi.on("sendMessageToServiceWorker", this.sendMessageToServiceWorker.bind(this));
|
|
const script = new ScriptService(group.group("script"), this.mq, this.windowMessage, this.broker);
|
|
script.init();
|
|
}
|
|
}
|