diff --git a/lnbits/extensions/copilot/lnurl.py b/lnbits/extensions/copilot/lnurl.py index db19f5c81..0ca9b3b17 100644 --- a/lnbits/extensions/copilot/lnurl.py +++ b/lnbits/extensions/copilot/lnurl.py @@ -25,7 +25,8 @@ async def lnurl_response(cp_id): ) params = resp.dict() - params["commentAllowed"] = 300 + if cp.show_message: + params["commentAllowed"] = 300 return jsonify(params) @@ -54,14 +55,17 @@ async def lnurl_callback(cp_id): ).dict() ), ) - - comment = request.args.get("comment") - if len(comment or "") > 300: - return jsonify( - LnurlErrorResponse( - reason=f"Got a comment with {len(comment)} characters, but can only accept 300" - ).dict() - ) + comment = "" + if request.args.get("comment"): + comment = request.args.get("comment") + if len(comment or "") > 300: + return jsonify( + LnurlErrorResponse( + reason=f"Got a comment with {len(comment)} characters, but can only accept 300" + ).dict() + ) + if len(comment) < 1: + comment = "none" payment_hash, payment_request = await create_invoice( wallet_id=cp.wallet, @@ -71,7 +75,8 @@ async def lnurl_callback(cp_id): "copilot.api_copilot_hooker", copilot_id=cp_id, amount=int(amount_received / 1000), - _external=True, + comment=comment, + _external=False, ), description_hash=hashlib.sha256( ( @@ -91,7 +96,8 @@ async def lnurl_callback(cp_id): "copilot.api_copilot_hooker", copilot_id=cp_id, amount=int(amount_received / 1000), - _external=True, + comment=comment, + _external=False, ) ) return jsonify(resp.dict()) diff --git a/lnbits/extensions/copilot/templates/copilot/compose.html b/lnbits/extensions/copilot/templates/copilot/compose.html index 9b0667a3c..8da66be34 100644 --- a/lnbits/extensions/copilot/templates/copilot/compose.html +++ b/lnbits/extensions/copilot/templates/copilot/compose.html @@ -93,6 +93,15 @@ } }, methods: { + showNotif: function (userMessage) { + this.$q.notify({ + color: 'purple', + html: true, + message: '

' + userMessage + '

', + position: 'left', + timeout: 5000 + }) + }, openURL: function (url) { console.log(url) return Quasar.utils.openURL(url) @@ -230,6 +239,9 @@ if (res[1].substring(0, 3) == 'htt') { document.getElementById('iframe_main').src = res[1] } + if (res[2] != 'none') { + this.showNotif(res[2]) + } } }) diff --git a/lnbits/extensions/copilot/views.py b/lnbits/extensions/copilot/views.py index 6dbf705ae..05b98cdca 100644 --- a/lnbits/extensions/copilot/views.py +++ b/lnbits/extensions/copilot/views.py @@ -1,5 +1,6 @@ from quart import g, abort, render_template, jsonify, websocket from http import HTTPStatus +import httpx from lnbits.decorators import check_user_exists, validate_uuids @@ -65,10 +66,13 @@ async def panel(copilot_id): return await render_template("copilot/panel.html", copilot=copilot) -@copilot_ext.route("/api/v1/copilot/hook///", methods=["GET"]) +@copilot_ext.route( + "/api/v1/copilot/hook///", methods=["GET"] +) async def api_copilot_hooker(copilot_id, amount): data = "" + webhook = "" copilot = await get_copilot(copilot_id) if not copilot: @@ -76,21 +80,31 @@ async def api_copilot_hooker(copilot_id, amount): jsonify({"message": "Copilot link link does not exist."}), HTTPStatus.NOT_FOUND, ) - print("got here") if int(copilot.animation1threshold) and int(amount) > copilot.animation1threshold: - print("one") data = copilot.animation1 - if int(copilot.animation2threshold) and int(amount) > copilot.animation2threshold: - print("two") + webhook = copilot.animation1webhook + if ( + int(copilot.animation2threshold) + and int(amount) > copilot.animation2threshold + ): data = copilot.animation2 + webhook = copilot.animation1webhook if ( int(copilot.animation3threshold) and int(amount) > copilot.animation3threshold ): - print("three") data = copilot.animation3 + webhook = copilot.animation1webhook + if webhook: + async with httpx.AsyncClient() as client: + await client.post( + webhook, + json={ + copilot, + }, + timeout=40, + ) global connected_websockets - - connected_websockets[copilot_id] = shortuuid.uuid() + "-" + data + connected_websockets[copilot_id] = shortuuid.uuid() + "-" + data + "-" + comment print(connected_websockets) return "", HTTPStatus.OK