From 259a37d4d72493bc1ef069cef1a83bb1f22425d3 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 15 Feb 2022 16:15:27 -0300 Subject: [PATCH] add interface for getRelays() and bump version. --- extension/background.js | 4 ++++ extension/common.js | 3 +++ extension/manifest.json | 2 +- extension/nostr-provider.js | 24 ++++++++++++++---------- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/extension/background.js b/extension/background.js index ef26af2..bd18738 100644 --- a/extension/background.js +++ b/extension/background.js @@ -58,6 +58,10 @@ async function handleContentScriptMessage({type, params, host}) { case 'getPublicKey': { return Buffer.from(getPublicKey(sk)).toString('hex') } + case 'getRelays': { + let results = await browser.storage.local.get('relays') + return results.relays || {} + } case 'signEvent': { let {event} = params diff --git a/extension/common.js b/extension/common.js index 06882e2..ff3ba1e 100644 --- a/extension/common.js +++ b/extension/common.js @@ -2,6 +2,7 @@ import browser from 'webextension-polyfill' export const PERMISSIONS_REQUIRED = { getPublicKey: 1, + getRelays: 5, signEvent: 10, 'nip04.encrypt': 20, 'nip04.decrypt': 20 @@ -9,6 +10,7 @@ export const PERMISSIONS_REQUIRED = { const ORDERED_PERMISSIONS = [ [1, ['getPublicKey']], + [5, ['getRelays']], [10, ['signEvent']], [20, ['nip04.encrypt']], [20, ['nip04.decrypt']] @@ -16,6 +18,7 @@ const ORDERED_PERMISSIONS = [ const PERMISSION_NAMES = { getPublicKey: 'read your public key', + getRelays: 'read your list of preferred relays', signEvent: 'sign events using your private key', 'nip04.encrypt': 'encrypt messages to peers', 'nip04.decrypt': 'decrypt messages from peers' diff --git a/extension/manifest.json b/extension/manifest.json index a7dd177..2f4daf4 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -1,7 +1,7 @@ { "name": "nos2x", "description": "Nostr Signer Extension", - "version": "1.3.0", + "version": "1.4.0", "homepage_url": "https://github.com/fiatjaf/nos2x", "manifest_version": 3, "icons": { diff --git a/extension/nostr-provider.js b/extension/nostr-provider.js index 332d2d3..f3df130 100644 --- a/extension/nostr-provider.js +++ b/extension/nostr-provider.js @@ -12,6 +12,20 @@ window.nostr = { return this._call('signEvent', {event}) }, + async getRelays() { + return this._call('getRelays', {}) + }, + + nip04: { + async encrypt(peer, plaintext) { + return window.nostr._call('nip04.encrypt', {peer, plaintext}) + }, + + async decrypt(peer, ciphertext) { + return window.nostr._call('nip04.decrypt', {peer, ciphertext}) + } + }, + _call(type, params) { return new Promise((resolve, reject) => { let id = Math.random().toString().slice(4) @@ -26,16 +40,6 @@ window.nostr = { '*' ) }) - }, - - nip04: { - encrypt(peer, plaintext) { - return window.nostr._call('nip04.encrypt', {peer, plaintext}) - }, - - decrypt(peer, ciphertext) { - return window.nostr._call('nip04.decrypt', {peer, ciphertext}) - } } }