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