MCPcopy Index your code
hub / github.com/MALSync/MALSync / getData

Method getData

src/utils/scriptProxy.ts:11–51  ·  view source on GitHub ↗
(retry: number = 1)

Source from the content-addressed store, hash-verified

9 }
10
11 async getData(retry: number = 1): Promise<T> {
12 return new Promise((resolve, reject) => {
13 const eventId = generateUniqueID();
14
15 const callbackFunction = (event: Event) => {
16 if (!(event instanceof MessageEvent)) {
17 return;
18 }
19
20 const eventData: MessageEvent = event;
21
22 if (
23 !eventData.data.eventId ||
24 !eventData.data.resultId ||
25 eventData.data.eventId !== eventId
26 )
27 return;
28
29 window.removeEventListener('message', callbackFunction);
30
31 const resultElement = document.getElementById(eventData.data.resultId);
32 if (!resultElement) throw new Error('Result element not found');
33 const data = resultElement.getAttribute(`data-${eventId}`);
34 resultElement.remove();
35 if (!data) throw new Error('Result data not found');
36 const result = JSON.parse(data);
37 con.m('ScriptProxy').info('Result Received', result[this.elementId]);
38 if (!result[this.elementId] && retry > 0) {
39 con.m('ScriptProxy').info('Retrying');
40 setTimeout(() => {
41 resolve(this.getData(retry - 1));
42 }, 1000);
43 } else {
44 resolve(result[this.elementId]);
45 }
46 };
47
48 window.addEventListener('message', callbackFunction, false);
49 window.postMessage({ eventId }, '*');
50 });
51 }
52
53 async injectScript() {
54 let loaded: () => void;

Callers 1

callbackFunctionMethod · 0.95

Calls 1

generateUniqueIDFunction · 0.90

Tested by

no test coverage detected