mirror of
https://github.com/younesaassila/ttv-lol-pro.git
synced 2025-05-28 12:30:14 +02:00
69 lines
2.2 KiB
TypeScript
69 lines
2.2 KiB
TypeScript
import { MessageType } from "../types";
|
|
import { getFetch } from "./getFetch";
|
|
import {
|
|
getSendMessageToContentScript,
|
|
getSendMessageToContentScriptAndWaitForResponse,
|
|
getSendMessageToPageScript,
|
|
getSendMessageToPageScriptAndWaitForResponse,
|
|
getSendMessageToWorkerScript,
|
|
getSendMessageToWorkerScriptAndWaitForResponse,
|
|
} from "./sendMessage";
|
|
import type { PageState } from "./types";
|
|
|
|
console.info("[TTV LOL PRO] Worker script running.");
|
|
|
|
declare var getParams: () => string;
|
|
let params;
|
|
try {
|
|
params = JSON.parse(getParams()!);
|
|
} catch (error) {
|
|
console.error("[TTV LOL PRO] Failed to parse params:", error);
|
|
}
|
|
getParams = undefined as any;
|
|
|
|
const sendMessageToContentScript = getSendMessageToContentScript();
|
|
const sendMessageToContentScriptAndWaitForResponse =
|
|
getSendMessageToContentScriptAndWaitForResponse();
|
|
const sendMessageToPageScript = getSendMessageToPageScript();
|
|
const sendMessageToPageScriptAndWaitForResponse =
|
|
getSendMessageToPageScriptAndWaitForResponse();
|
|
const sendMessageToWorkerScript = getSendMessageToWorkerScript();
|
|
const sendMessageToWorkerScriptAndWaitForResponse =
|
|
getSendMessageToWorkerScriptAndWaitForResponse();
|
|
|
|
const pageState: PageState = {
|
|
isChromium: params.isChromium,
|
|
scope: "worker",
|
|
state: undefined,
|
|
twitchWorker: undefined, // Can't get the worker instance from inside the worker.
|
|
sendMessageToContentScript,
|
|
sendMessageToContentScriptAndWaitForResponse,
|
|
sendMessageToPageScript,
|
|
sendMessageToPageScriptAndWaitForResponse,
|
|
sendMessageToWorkerScript,
|
|
sendMessageToWorkerScriptAndWaitForResponse,
|
|
};
|
|
|
|
self.fetch = getFetch(pageState);
|
|
|
|
self.addEventListener("message", event => {
|
|
if (event.data?.type !== MessageType.WorkerScriptMessage) return;
|
|
|
|
const message = event.data?.message;
|
|
if (!message) return;
|
|
|
|
switch (message.type) {
|
|
case MessageType.GetStoreStateResponse: // From Page
|
|
if (pageState.state == null) {
|
|
console.log("[TTV LOL PRO] Received store state from page script.");
|
|
} else {
|
|
console.debug("[TTV LOL PRO] Received store state from page script.");
|
|
}
|
|
const state = message.state;
|
|
pageState.state = state;
|
|
break;
|
|
}
|
|
});
|
|
|
|
sendMessageToPageScript({ type: MessageType.GetStoreState });
|