aboutsummaryrefslogtreecommitdiff
path: root/extension/src/entries/nostr-provider.js
diff options
context:
space:
mode:
Diffstat (limited to 'extension/src/entries/nostr-provider.js')
-rw-r--r--extension/src/entries/nostr-provider.js132
1 files changed, 58 insertions, 74 deletions
diff --git a/extension/src/entries/nostr-provider.js b/extension/src/entries/nostr-provider.js
index 7d8f3c5..9280b4d 100644
--- a/extension/src/entries/nostr-provider.js
+++ b/extension/src/entries/nostr-provider.js
@@ -13,78 +13,62 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
-const waiting = new Map();
-
-const ext = '@vnuge/nvault-extension'
-
-const debugLog = (...args) => {
- console.log(`[${ext}]`, ...args)
-}
-
-const sendMessage = (type, payload) => new Promise((resolve, reject) => {
- const id = Math.random().toString(36);
- waiting.set(id, { resolve, reject });
- window.postMessage({ type, payload, id, ext }, '*');
-});
-
-/**
- * Listen for messages from the content script
- */
-window.addEventListener('message', ({ data }) => {
-
- //Confirm the message format is correct
- if (!data || !data.response || data.ext !== ext || !waiting.get(data.id)){
+(() => {
+ const ext = '@vnuge/nvault-extension'
+ const debugLog = (...args) => console.log(`[${ext}]`, ...args)
+ const sendMessage = (type, payload) => new Promise((resolve, reject) => {
+ const id = Math.random().toString(36);
+ waiting.set(id, { resolve, reject });
+ window.postMessage({ type, payload, id, ext }, '*');
+ });
+
+ const waiting = new Map();
+
+ /**
+ * Listen for messages from the content script
+ */
+ window.addEventListener('message', ({ data }) => {
+
+ //Confirm the message format is correct
+ if (!data || !data.response || data.ext !== ext || !waiting.get(data.id)) {
return;
- }
-
- debugLog(data)
-
- //Explode now valid
- const { response, id } = data;
-
- const { resolve, reject } = waiting.get(id);
-
- if (response.error) {
-
- //Construct an error object from the resopnse message
- const errorMessage = response.error.message ?? response.error;
-
- let error = new Error(`${ext}: ${errorMessage}`);
- error.stack = response.error.stack;
-
- //Reject the promise as error
- reject(error);
-
- } else {
- //Resolve the promise as success
- resolve(response);
- }
-
- //Remove the waiter from the list
- waiting.delete(id)
-});
-
-
-//Expose the Nostr API to the window object
-window.nostr = {
-
- //Redirect calls to the background script
- getPublicKey(){
- return sendMessage('getPublicKey', {})
- } ,
-
- async signEvent(event){
- const signed = await sendMessage('signEvent', { event })
- debugLog("Signed event", signed);
- return signed
- },
-
- getRelays(){
- return sendMessage('getRelays', {})
- },
-
- nip04: {
- encrypt: (peer, plaintext) => sendMessage('nip04.encrypt', { peer, plaintext }),
- decrypt: (peer, ciphertext) => sendMessage('nip04.decrypt', { peer, ciphertext }),
- },
-}; \ No newline at end of file
+ }
+
+ debugLog(data)
+
+ //Explode now valid
+ const { response, id } = data;
+ const { resolve, reject } = waiting.get(id);
+
+ if (response.error) {
+ //Reject the promise as error
+ reject(response.error);
+
+ } else {
+ //Resolve the promise as success
+ resolve(response);
+ }
+
+ //Remove the waiter from the list
+ waiting.delete(id)
+ });
+
+ //Expose the Nostr API to the window object
+ window.nostr = {
+
+ //Redirect calls to the background script
+ getPublicKey: () => sendMessage('getPublicKey', {}),
+ getRelays: () => sendMessage('getRelays', {}),
+
+ async signEvent(event) {
+ const signed = await sendMessage('signEvent', { event })
+ debugLog("Signed event", signed);
+ return signed
+ },
+
+ nip04: {
+ encrypt: (peer, plaintext) => sendMessage('nip04.encrypt', { peer, plaintext }),
+ decrypt: (peer, ciphertext) => sendMessage('nip04.decrypt', { peer, ciphertext }),
+ },
+ };
+})() \ No newline at end of file