MCPcopy Index your code
hub / github.com/scriptscat/scriptcat / negotiateEventFlag

Function negotiateEventFlag

packages/message/common.ts:25–57  ·  view source on GitHub ↗
(
  messageFlag: string,
  extensionEnv: TExtensionEnv,
  readyCount: number,
  onInit: (eventFlag: string) => void
)

Source from the content-addressed store, hash-verified

23
24// flag协商
25export function negotiateEventFlag(
26 messageFlag: string,
27 extensionEnv: TExtensionEnv,
28 readyCount: number,
29 onInit: (eventFlag: string) => void
30): void {
31 const eventFlag = randomMessageFlag();
32 onInit(eventFlag);
33 // 监听 inject/content 发来的请求 eventFlag 的消息
34 let ready = 0;
35 const fnEventFlagRequestHandler: EventListener = (ev: Event) => {
36 if (!(ev instanceof CustomEvent)) return;
37
38 switch (ev.detail?.action) {
39 case "receivedEventFlag":
40 // 对方已收到 eventFlag
41 ready += 1;
42 if (ready >= readyCount) {
43 // 已收到两个环境的请求,移除监听
44 pageRemoveEventListener(messageFlag, fnEventFlagRequestHandler);
45 }
46 break;
47 case "requestEventFlag":
48 // 广播通信 flag 给 inject/content
49 pageDispatchCustomEvent(messageFlag, { action: "broadcastEventFlag", eventFlag: eventFlag, extensionEnv });
50 break;
51 }
52 };
53
54 // 设置事件,然后广播通信 flag 给 inject/content
55 pageAddEventListener(messageFlag, fnEventFlagRequestHandler);
56 pageDispatchCustomEvent(messageFlag, { action: "broadcastEventFlag", eventFlag: eventFlag, extensionEnv });
57}
58
59// 获取协商后的 eventFlag
60export function getEventFlag(

Callers 1

scripting.tsFile · 0.90

Calls 2

randomMessageFlagFunction · 0.90
pageDispatchCustomEventFunction · 0.85

Tested by

no test coverage detected