MCPcopy
hub / github.com/streetwriters/notesnook / connectToTab

Function connectToTab

extensions/web-clipper/src/api.ts:52–88  ·  view source on GitHub ↗
(tab: Tabs.Tab, onDisconnect?: () => void)

Source from the content-addressed store, hash-verified

50}
51
52async function connectToTab(tab: Tabs.Tab, onDisconnect?: () => void) {
53 if (!tab.id) return false;
54
55 if (browser.scripting) {
56 await browser.scripting.executeScript({
57 files: ["nnContentScript.bundle.js"],
58 target: { tabId: tab.id }
59 });
60 } else {
61 await browser.tabs.executeScript(tab.id, {
62 file: "nnContentScript.bundle.js"
63 });
64 }
65
66 const port = browser.tabs.connect(tab.id);
67 port.onDisconnect.addListener(() => {
68 api = undefined;
69 onDisconnect?.();
70 });
71
72 return new Promise<Remote<Server> | false>(function connect(resolve) {
73 async function onMessage(
74 message: WebExtensionChannelMessage,
75 port: Runtime.Port
76 ) {
77 if (message.success) {
78 port.onMessage.removeListener(onMessage);
79 api = wrap<Server>(createEndpoint(port));
80 resolve(api);
81 } else {
82 resolve(false);
83 }
84 }
85
86 port.onMessage.addListener(onMessage);
87 });
88}
89
90export async function findNotesnookTabs(openNew = false) {
91 const tabs = await browser.tabs.query({

Callers 1

connectApiFunction · 0.85

Calls 1

connectMethod · 0.65

Tested by

no test coverage detected