From 495cea8560a4b1387b1f13f1df56df4035016582 Mon Sep 17 00:00:00 2001 From: Ryan Breen Date: Mon, 16 Jan 2023 22:17:08 -0500 Subject: [PATCH] getPublicKey is functional! --- Shared (Extension)/Resources/background.js | 6 ++++++ Shared (Extension)/Resources/content.js | 12 +++++++++++ Shared (Extension)/Resources/nostr.js | 23 +++++++++++++++++++--- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Shared (Extension)/Resources/background.js b/Shared (Extension)/Resources/background.js index fbb660b..f9322a2 100644 --- a/Shared (Extension)/Resources/background.js +++ b/Shared (Extension)/Resources/background.js @@ -2,6 +2,12 @@ import { generatePrivateKey, getPublicKey } from "nostr-tools"; const storage = browser.storage.local; +browser.runtime.onMessageExternal.addListener(async (message, sender, sendResponse) => { + console.log('External message: ', message); + console.log('External sender: ', sender); + sendResponse('Goodbye!'); +}); + browser.runtime.onMessage.addListener(async (message, _sender, sendResponse) => { console.log(message); diff --git a/Shared (Extension)/Resources/content.js b/Shared (Extension)/Resources/content.js index 4274f29..86456d9 100644 --- a/Shared (Extension)/Resources/content.js +++ b/Shared (Extension)/Resources/content.js @@ -1,3 +1,15 @@ let script = document.createElement('script'); script.setAttribute('src', browser.runtime.getURL('nostr.build.js')); document.body.appendChild(script); + +window.addEventListener('message', async (message) => { + let {kind, reqId} = message.data; + if (kind !== 'getPublicKey') + return; + + console.log(`Event ${reqId}: Content script received message kind ${kind}`); + let publicKey = await browser.runtime.sendMessage({kind: 'getPubKey'}); + console.log(`Event ${reqId}: Public key retrieved; ${publicKey}`); + + window.postMessage({kind: 'publicKey', reqId, payload: publicKey}, '*'); +}); \ No newline at end of file diff --git a/Shared (Extension)/Resources/nostr.js b/Shared (Extension)/Resources/nostr.js index 3e99f9f..8a552bb 100644 --- a/Shared (Extension)/Resources/nostr.js +++ b/Shared (Extension)/Resources/nostr.js @@ -1,7 +1,13 @@ window.nostr = { - async getPublicKey() { - console.log("getting public key!"); - return "285d4ca25cbe209832aa15a4b94353b877a2fe6c3b94dee1a4c8bc36770304db"; + requests: {}, + + getPublicKey() { + let reqId = Math.random().toString(); + return new Promise((resolve, _reject) => { + this.requests[reqId] = resolve; + console.log(`Event ${reqId}: Requesting public key.`); + window.postMessage({kind: 'getPublicKey', reqId}, '*'); + }); }, async signEvent(event) { @@ -10,3 +16,14 @@ window.nostr = { return "signed event"; } } + +window.addEventListener('message', (message) => { + let {kind, reqId, payload} = message.data; + + if (kind !== 'publicKey') + return; + + console.log(`Event ${reqId}: Received public key ${payload}.`); + window.nostr.requests[reqId](payload); + delete window.nostr.requests[reqId]; +}); \ No newline at end of file