From 4d5c7133bc773b5ecac99663035195334c6c722f Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Mon, 9 Jan 2023 12:30:21 +0000 Subject: [PATCH 1/9] create smaller base64 image in UI --- lnbits/extensions/market/templates/market/index.html | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lnbits/extensions/market/templates/market/index.html b/lnbits/extensions/market/templates/market/index.html index ffcb612b..c9542bc1 100644 --- a/lnbits/extensions/market/templates/market/index.html +++ b/lnbits/extensions/market/templates/market/index.html @@ -831,14 +831,8 @@ let canvas = document.createElement('canvas') canvas.setAttribute('width', fit.width) canvas.setAttribute('height', fit.height) - await pica.resize(image, canvas, { - quality: 0, - alpha: true, - unsharpAmount: 95, - unsharpRadius: 0.9, - unsharpThreshold: 70 - }) - this.productDialog.data.image = canvas.toDataURL() + output = await pica.resize(image, canvas) + this.productDialog.data.image = output.toDataURL('image/jpeg', 0.4) this.productDialog = {...this.productDialog} } }, From 44fa30fdc3e4b9e14ae8230561688098f8567b49 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Mon, 9 Jan 2023 12:31:12 +0000 Subject: [PATCH 2/9] check uploaded image size in API --- lnbits/extensions/market/views_api.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lnbits/extensions/market/views_api.py b/lnbits/extensions/market/views_api.py index 045bc0fc..31703e8d 100644 --- a/lnbits/extensions/market/views_api.py +++ b/lnbits/extensions/market/views_api.py @@ -113,6 +113,23 @@ async def api_market_product_create( if stall.currency != "sat": data.price *= settings.fiat_base_multiplier + if data.image: + image_is_url = data.image.startswith("https://") or data.image.startswith( + "http://" + ) + + if not image_is_url: + + def size(b64string): + return int((len(b64string) * 3) / 4 - b64string.count("=", -2)) + + image_size = size(data.image) / 1024 + if image_size > 100: + raise HTTPException( + status_code=HTTPStatus.BAD_REQUEST, + detail=f"Image size is too big, {int(image_size)}Kb. Max: 100kb, Compress the image at https://tinypng.com, or use an URL.", + ) + if product_id: product = await get_market_product(product_id) if not product: From ab73698a456d11e7d715169131dc7ef9ca820d4e Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Mon, 9 Jan 2023 19:11:16 +0000 Subject: [PATCH 3/9] add product image with url --- .../market/templates/market/_dialogs.html | 14 +++++++++++++- .../extensions/market/templates/market/index.html | 8 ++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lnbits/extensions/market/templates/market/_dialogs.html b/lnbits/extensions/market/templates/market/_dialogs.html index d2a8dd0a..a0ab84b3 100644 --- a/lnbits/extensions/market/templates/market/_dialogs.html +++ b/lnbits/extensions/market/templates/market/_dialogs.html @@ -55,8 +55,16 @@ > - + + Date: Tue, 10 Jan 2023 14:20:46 +0000 Subject: [PATCH 4/9] fix error when no categories are defined --- lnbits/extensions/market/templates/market/index.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lnbits/extensions/market/templates/market/index.html b/lnbits/extensions/market/templates/market/index.html index c6227023..77e3acce 100644 --- a/lnbits/extensions/market/templates/market/index.html +++ b/lnbits/extensions/market/templates/market/index.html @@ -802,9 +802,11 @@ var link = _.findWhere(self.products, {id: linkId}) self.productDialog.data = _.clone(link._data) - self.productDialog.data.categories = self.productDialog.data.categories.split( - ',' - ) + if (self.productDialog.data.categories) { + self.productDialog.data.categories = self.productDialog.data.categories.split( + ',' + ) + } if (self.productDialog.data.image.startsWith('data:')) { self.productDialog.url = false } From c2bfc199e17d0fe7c0ceede4cfcba7b675eebb75 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 10 Jan 2023 14:26:10 +0000 Subject: [PATCH 5/9] Adds websocket and qrcode examples to example extension --- .../example/static/qrcode-example.png | Bin 0 -> 10045 bytes .../example/static/qrcode-example1.png | Bin 0 -> 34299 bytes .../example/static/websocket-example.png | Bin 0 -> 50070 bytes .../example/templates/example/index.html | 77 ++++++++++++++++-- 4 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 lnbits/extensions/example/static/qrcode-example.png create mode 100644 lnbits/extensions/example/static/qrcode-example1.png create mode 100644 lnbits/extensions/example/static/websocket-example.png diff --git a/lnbits/extensions/example/static/qrcode-example.png b/lnbits/extensions/example/static/qrcode-example.png new file mode 100644 index 0000000000000000000000000000000000000000..29781f5361e1a8973d89c8166286448c871d9d3b GIT binary patch literal 10045 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 literal 0 HcmV?d00001 diff --git a/lnbits/extensions/example/static/websocket-example.png b/lnbits/extensions/example/static/websocket-example.png new file mode 100644 index 0000000000000000000000000000000000000000..52171d309ddb02bb65479e3c54a90953b0d676f8 GIT binary patch literal 50070 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 literal 0 HcmV?d00001 diff --git a/lnbits/extensions/example/templates/example/index.html b/lnbits/extensions/example/templates/example/index.html index 03f66b5f..645e0ce4 100644 --- a/lnbits/extensions/example/templates/example/index.html +++ b/lnbits/extensions/example/templates/example/index.html @@ -51,8 +51,8 @@
- {{SITE_TITLE}} Extension Development Guide - (Collection of resources for extension developers) + Extension Development Guide + (also check the docs)
@@ -188,8 +188,7 @@

LNbits uses Vue - components for best-in-class high-performance and responsive - performance. + for best-in-class, responsive and high-performance components.

Typical example of Vue components in a frontend script:

@@ -199,7 +198,7 @@ />

- In a page body, models can be called.
Content can be + Content can be conditionally rendered using Vue's v-if:

@@ -220,6 +219,8 @@ MAGICAL G EXCHANGE RATES + QR CODES + WEBSOCKETS @@ -255,6 +256,45 @@ >:
+ +
QR Codes
+

For most purposes use Quasar's inbuilt VueQrcode library:

+ +

+ LNbits does also include a handy + QR code enpoint +

+ {% raw + %} You can use via {{protocol + location}}{% endraw %}/api/v1/qrcode/some-data-you-want-in-a-qrcode:
+
+ +
+ + +
+ +
+ + +
Websockets
+

Fastapi includes a great websocket tool

+ {% raw + %} +

+ A few LNbits extensions also make use of a weird and useful websocket/GET tool built into LNbits, such as extensions Copilot and LNURLDevices
+ You can subscribe to websocket with wss:{{location}}/api/v1/ws/{SOME-ID}
+ You can post to any clients subscribed to the endpoint with {{protocol + location}}/api/v1/ws/{SOME-ID}/{THE-DATA-YOU-WANT-TO-POST}
+
+

DEMO: Hit {{protocol + location}}/api/v1/ws/32872r23g29/blah%20blah%20blah in a different browser window to change this text to `blah blah blah`.
+
+ Function used in this demo:
+ +
+ {% endraw %} @@ -296,6 +336,8 @@ data: function () { return { ///// Declare models/variables ///// + protocol: window.location.protocol, + location: "//" + window.location.hostname, thingDialog: { show: false, data: {} @@ -310,7 +352,7 @@ }, ///// Where functions live ///// methods: { - exampleFunction(data) { + exampleFunction: function(data) { var theData = data LNbits.api .request( @@ -325,6 +367,28 @@ LNbits.utils.notifyApiError(error) // Error will be passed to the frontend }) }, + initWs: async function () { + if (location.protocol !== 'http:') { + localUrl = + 'wss://' + + document.domain + + ':' + + location.port + + '/api/v1/ws/32872r23g29' + } else { + localUrl = + 'ws://' + + document.domain + + ':' + + location.port + + '/api/v1/ws/32872r23g29' + } + this.ws = new WebSocket(localUrl) + this.ws.addEventListener('message', async ({data}) => { + const res = data.toString() + document.getElementById("text-to-change").innerHTML = res + }) +}, sendThingDialog() { console.log(this.thingDialog) } @@ -333,6 +397,7 @@ created: function () { self = this // Often used to run a real object, rather than the event (all a bit confusing really) self.exampleFunction('lorum') + self.initWs() } }) From 1d980afb62c5998c9b9e5113cbbedbe15d124cc2 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 10 Jan 2023 14:29:05 +0000 Subject: [PATCH 6/9] format --- .../example/templates/example/index.html | 139 ++++++++++++------ 1 file changed, 93 insertions(+), 46 deletions(-) diff --git a/lnbits/extensions/example/templates/example/index.html b/lnbits/extensions/example/templates/example/index.html index 645e0ce4..36d325bb 100644 --- a/lnbits/extensions/example/templates/example/index.html +++ b/lnbits/extensions/example/templates/example/index.html @@ -52,7 +52,14 @@
Extension Development Guide - (also check the docs) + (also check the + docs)
@@ -188,7 +195,8 @@

LNbits uses Vue - for best-in-class, responsive and high-performance components. + for best-in-class, responsive and high-performance + components.

Typical example of Vue components in a frontend script:

@@ -198,8 +206,7 @@ />

- Content can be - conditionally rendered using Vue's + Content can be conditionally rendered using Vue's v-if:

QR Codes
-

For most purposes use Quasar's inbuilt VueQrcode library:

+

+ For most purposes use Quasar's inbuilt VueQrcode library: +

LNbits does also include a handy QR code enpoint + QR code enpoint

- {% raw - %} You can use via {{protocol + location}}{% endraw %}/api/v1/qrcode/some-data-you-want-in-a-qrcode:
-
- -
- - + {% raw %} You can use via + {{protocol + location}}{% endraw + %}/api/v1/qrcode/some-data-you-want-in-a-qrcode:

+ +
+ +
Websockets
-

Fastapi includes a great websocket tool

- {% raw - %}

- A few LNbits extensions also make use of a weird and useful websocket/GET tool built into LNbits, such as extensions Copilot and LNURLDevices
- You can subscribe to websocket with wss:{{location}}/api/v1/ws/{SOME-ID}
- You can post to any clients subscribed to the endpoint with {{protocol + location}}/api/v1/ws/{SOME-ID}/{THE-DATA-YOU-WANT-TO-POST}
-
-

DEMO: Hit {{protocol + location}}/api/v1/ws/32872r23g29/blah%20blah%20blah in a different browser window to change this text to `blah blah blah`.
-
- Function used in this demo:
- -
+ Fastapi includes a great + websocket tool +

+ {% raw %} +

+ A few LNbits extensions also make use of a weird and useful + websocket/GET tool built into LNbits, such as extensions + Copilot and LNURLDevices
+ You can subscribe to websocket with + wss:{{location}}/api/v1/ws/{SOME-ID}
+ You can post to any clients subscribed to the endpoint with + {{protocol + + location}}/api/v1/ws/{SOME-ID}/{THE-DATA-YOU-WANT-TO-POST}
+
+

+ DEMO: Hit + {{protocol + + location}}/api/v1/ws/32872r23g29/blah%20blah%20blah + in a different browser window to change this text to + `blah blah blah`. +
+
+ Function used in this demo:
+

+ {% endraw %} @@ -337,7 +384,7 @@ return { ///// Declare models/variables ///// protocol: window.location.protocol, - location: "//" + window.location.hostname, + location: '//' + window.location.hostname, thingDialog: { show: false, data: {} @@ -352,7 +399,7 @@ }, ///// Where functions live ///// methods: { - exampleFunction: function(data) { + exampleFunction: function (data) { var theData = data LNbits.api .request( @@ -369,26 +416,26 @@ }, initWs: async function () { if (location.protocol !== 'http:') { - localUrl = - 'wss://' + - document.domain + - ':' + - location.port + - '/api/v1/ws/32872r23g29' + localUrl = + 'wss://' + + document.domain + + ':' + + location.port + + '/api/v1/ws/32872r23g29' } else { - localUrl = - 'ws://' + - document.domain + - ':' + - location.port + - '/api/v1/ws/32872r23g29' - } - this.ws = new WebSocket(localUrl) - this.ws.addEventListener('message', async ({data}) => { - const res = data.toString() - document.getElementById("text-to-change").innerHTML = res - }) -}, + localUrl = + 'ws://' + + document.domain + + ':' + + location.port + + '/api/v1/ws/32872r23g29' + } + this.ws = new WebSocket(localUrl) + this.ws.addEventListener('message', async ({data}) => { + const res = data.toString() + document.getElementById('text-to-change').innerHTML = res + }) + }, sendThingDialog() { console.log(this.thingDialog) } From ee3ddb2ef64d8c1add880417640a11fd0b7aba28 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 10 Jan 2023 14:39:27 +0000 Subject: [PATCH 7/9] DO NOT ADD NEW DEPENDENCIES --- docs/devs/extensions.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/devs/extensions.md b/docs/devs/extensions.md index cd81a021..5e5c2e8b 100644 --- a/docs/devs/extensions.md +++ b/docs/devs/extensions.md @@ -28,7 +28,9 @@ Going over the example extension's structure: Adding new dependencies ----------------------- -If for some reason your extensions needs a new python package to work, you can add a new package using `venv`, or `poerty`: +DO NOT ADD NEW DEPENDENCIES. Try to use the dependencies that are availabe in `pyproject.toml`. Getting the LNbits project to accept a new dependency is time consuming and uncertain, and may result in your extension NOT being made available to others. + +If for some reason your extensions must have a new python package to work, and its nees are not met in `pyproject.toml`, you can add a new package using `venv`, or `poerty`: ```sh $ poetry add @@ -37,8 +39,7 @@ $ ./venv/bin/pip install ``` **But we need an extra step to make sure LNbits doesn't break in production.** -Dependencies need to be added to `pyproject.toml` and `requirements.txt`, then tested by running on `venv` and `poetry`. -`nix` compatability can be tested with `nix build .#checks.x86_64-linux.vmTest`. +Dependencies need to be added to `pyproject.toml` and `requirements.txt`, then tested by running on `venv` and `poetry` compatability can be tested with `nix build .#checks.x86_64-linux.vmTest`. SQLite to PostgreSQL migration From a85cd942340163459a573e6d70e34b047fd40b96 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 10 Jan 2023 18:30:09 +0000 Subject: [PATCH 8/9] Elaborated nostr reference --- lnbits/extensions/market/templates/market/_tables.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/extensions/market/templates/market/_tables.html b/lnbits/extensions/market/templates/market/_tables.html index c6fd665b..b6abcb58 100644 --- a/lnbits/extensions/market/templates/market/_tables.html +++ b/lnbits/extensions/market/templates/market/_tables.html @@ -200,7 +200,7 @@ :href="props.row.wallet" target="_blank" > - Link to pass to stall relay + Disabled: link to pass to stall relays when using nostr {{ col.value }} From 2602f044dabb45c0fbfa718b0870103bc2afb7ab Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 10 Jan 2023 18:37:54 +0000 Subject: [PATCH 9/9] format --- lnbits/extensions/market/templates/market/_tables.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lnbits/extensions/market/templates/market/_tables.html b/lnbits/extensions/market/templates/market/_tables.html index b6abcb58..280bb9f1 100644 --- a/lnbits/extensions/market/templates/market/_tables.html +++ b/lnbits/extensions/market/templates/market/_tables.html @@ -200,7 +200,10 @@ :href="props.row.wallet" target="_blank" > - Disabled: link to pass to stall relays when using nostr + Disabled: link to pass to stall relays when using + nostr {{ col.value }}