diff --git a/config.json b/config.json index afe7ed5..1f58e7b 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,17 @@ { "name": "Nostr Client", + "short_description": "Nostr relay multiplexer", "version": "1.1.0", - "short_description": "Nostr client for extensions", "tile": "/nostrclient/static/images/nostr-bitcoin.png", "contributors": ["calle", "motorina0", "dni"], - "min_lnbits_version": "1.0.0" + "min_lnbits_version": "1.4.0", + "images": [ + { + "uri": "https://raw.githubusercontent.com/lnbits/nostrclient/add-extension-metadata/static/images/1.jpeg" + }, + { + "uri": "https://raw.githubusercontent.com/lnbits/nostrclient/add-extension-metadata/static/images/2.jpeg" + } + ], + "description_md": "https://raw.githubusercontent.com/lnbits/nostrclient/add-extension-metadata/description.md" } diff --git a/description.md b/description.md index 6c274f3..5293087 100644 --- a/description.md +++ b/description.md @@ -1 +1,8 @@ -An always-on extension that can open multiple connections to nostr relays and act as a multiplexer for other clients: You open a single websocket to nostrclient which then sends the data to multiple relays. The responses from these relays are then sent back to the client. +An always-on relay multiplexer that simplifies connecting to multiple Nostr relays. + +Instead of your Nostr client managing connections to dozens of relays, you connect to a single WebSocket endpoint provided by `nostrclient`, which then fans out your requests to all configured relays and aggregates the responses back to you. + +- **Simplified Client Configuration** - Connect to one endpoint instead of managing multiple relay connections +- **Always-On Connectivity** - Your LNbits instance maintains persistent connections to relays +- **Resource Efficient** - Share relay connections across multiple clients +- **Automatic Subscription Management** - Subscription ID rewriting prevents conflicts between clients diff --git a/static/images/1.jpeg b/static/images/1.jpeg new file mode 100644 index 0000000..1f00661 Binary files /dev/null and b/static/images/1.jpeg differ diff --git a/static/images/2.jpeg b/static/images/2.jpeg new file mode 100644 index 0000000..e7301fd Binary files /dev/null and b/static/images/2.jpeg differ diff --git a/templates/nostrclient/index.html b/templates/nostrclient/index.html index 0c9b468..ca44f1b 100644 --- a/templates/nostrclient/index.html +++ b/templates/nostrclient/index.html @@ -476,11 +476,7 @@ getRelays: function () { var self = this LNbits.api - .request( - 'GET', - '/nostrclient/api/v1/relays?usr=' + this.g.user.id, - this.g.user.wallets[0].adminkey - ) + .request('GET', '/nostrclient/api/v1/relays') .then(function (response) { if (response.data) { response.data.map(maplrelays) @@ -508,12 +504,9 @@ console.log('ADD RELAY ' + this.relayToAdd) let that = this LNbits.api - .request( - 'POST', - '/nostrclient/api/v1/relay?usr=' + this.g.user.id, - this.g.user.wallets[0].adminkey, - {url: this.relayToAdd} - ) + .request('POST', '/nostrclient/api/v1/relay', null, { + url: this.relayToAdd + }) .then(function (response) { console.log('response:', response) if (response.data) { @@ -540,12 +533,7 @@ }, deleteRelay(url) { LNbits.api - .request( - 'DELETE', - '/nostrclient/api/v1/relay?usr=' + this.g.user.id, - this.g.user.wallets[0].adminkey, - {url: url} - ) + .request('DELETE', '/nostrclient/api/v1/relay', null, {url: url}) .then(response => { const relayIndex = this.nostrrelayLinks.indexOf(r => r.url === url) if (relayIndex !== -1) { @@ -561,8 +549,7 @@ try { const {data} = await LNbits.api.request( 'GET', - '/nostrclient/api/v1/config', - this.g.user.wallets[0].adminkey + '/nostrclient/api/v1/config' ) this.config.data = data } catch (error) { @@ -574,7 +561,7 @@ const {data} = await LNbits.api.request( 'PUT', '/nostrclient/api/v1/config', - this.g.user.wallets[0].adminkey, + null, this.config.data ) this.config.data = data @@ -623,7 +610,7 @@ const {data} = await LNbits.api.request( 'PUT', '/nostrclient/api/v1/relay/test', - this.g.user.wallets[0].adminkey, + null, { sender_private_key: this.testData.senderPrivateKey, reciever_public_key: this.testData.recieverPublicKey, diff --git a/views.py b/views.py index cb2dd89..3d90198 100644 --- a/views.py +++ b/views.py @@ -1,6 +1,7 @@ from fastapi import APIRouter, Depends, Request from fastapi.responses import HTMLResponse -from lnbits.core.models import User +from lnbits.core.crud.users import get_user_from_account +from lnbits.core.models.users import Account from lnbits.decorators import check_admin from lnbits.helpers import template_renderer @@ -12,7 +13,10 @@ def nostr_renderer(): @nostrclient_generic_router.get("/", response_class=HTMLResponse) -async def index(request: Request, user: User = Depends(check_admin)): +async def index(request: Request, account: Account = Depends(check_admin)): + user = await get_user_from_account(account) + if not user: + return HTMLResponse("No user found", status_code=404) return nostr_renderer().TemplateResponse( "nostrclient/index.html", {"request": request, "user": user.json()} )