mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-03-11 17:57:53 +01:00
Websocket/listener working
This commit is contained in:
parent
52dc528a8a
commit
8d4337679f
5 changed files with 30 additions and 22 deletions
|
@ -22,9 +22,10 @@ async def create_lnurldevice(
|
||||||
wallet,
|
wallet,
|
||||||
currency,
|
currency,
|
||||||
device,
|
device,
|
||||||
profit
|
profit,
|
||||||
|
amount
|
||||||
)
|
)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
""",
|
""",
|
||||||
(
|
(
|
||||||
lnurldevice_id,
|
lnurldevice_id,
|
||||||
|
@ -34,6 +35,7 @@ async def create_lnurldevice(
|
||||||
data.currency,
|
data.currency,
|
||||||
data.device,
|
data.device,
|
||||||
data.profit,
|
data.profit,
|
||||||
|
data.amount,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
return await get_lnurldevice(lnurldevice_id)
|
return await get_lnurldevice(lnurldevice_id)
|
||||||
|
|
|
@ -103,9 +103,19 @@ async def lnurl_v1_params(
|
||||||
if paymentcheck:
|
if paymentcheck:
|
||||||
return {"status": "ERROR", "reason": f"Payment already claimed"}
|
return {"status": "ERROR", "reason": f"Payment already claimed"}
|
||||||
if device.device == "switch":
|
if device.device == "switch":
|
||||||
|
|
||||||
|
price_msat = (
|
||||||
|
await fiat_amount_as_satoshis(float(device.profit), device.currency)
|
||||||
|
if device.currency != "sat"
|
||||||
|
else amount_in_cent
|
||||||
|
) * 1000
|
||||||
|
|
||||||
lnurldevicepayment = await create_lnurldevicepayment(
|
lnurldevicepayment = await create_lnurldevicepayment(
|
||||||
deviceid=device.id,
|
deviceid=device.id,
|
||||||
sats=device.profit,
|
payload="bla",
|
||||||
|
sats=price_msat,
|
||||||
|
pin=1,
|
||||||
|
payhash="bla",
|
||||||
)
|
)
|
||||||
if not lnurldevicepayment:
|
if not lnurldevicepayment:
|
||||||
return {"status": "ERROR", "reason": "Could not create payment."}
|
return {"status": "ERROR", "reason": "Could not create payment."}
|
||||||
|
@ -114,8 +124,8 @@ async def lnurl_v1_params(
|
||||||
"callback": request.url_for(
|
"callback": request.url_for(
|
||||||
"lnurldevice.lnurl_callback", paymentid=lnurldevicepayment.id
|
"lnurldevice.lnurl_callback", paymentid=lnurldevicepayment.id
|
||||||
),
|
),
|
||||||
"minSendable": device.profit * 1000,
|
"minSendable": price_msat,
|
||||||
"maxSendable": device.profit * 1000,
|
"maxSendable": price_msat,
|
||||||
"metadata": await device.lnurlpay_metadata(),
|
"metadata": await device.lnurlpay_metadata(),
|
||||||
}
|
}
|
||||||
if len(p) % 4 > 0:
|
if len(p) % 4 > 0:
|
||||||
|
@ -224,21 +234,15 @@ async def lnurl_callback(
|
||||||
payment_hash, payment_request = await create_invoice(
|
payment_hash, payment_request = await create_invoice(
|
||||||
wallet_id=device.wallet,
|
wallet_id=device.wallet,
|
||||||
amount=lnurldevicepayment.sats / 1000,
|
amount=lnurldevicepayment.sats / 1000,
|
||||||
memo=device.title,
|
memo=device.title + "-" + lnurldevicepayment.id,
|
||||||
unhashed_description=(await device.lnurlpay_metadata()).encode("utf-8"),
|
unhashed_description=(await device.lnurlpay_metadata()).encode("utf-8"),
|
||||||
extra={"tag": "Switch", "id": device.paymentid, "time": device.amount},
|
extra={"tag": "Switch", "id": paymentid, "time": device.amount},
|
||||||
)
|
)
|
||||||
lnurldevicepayment = await update_lnurldevicepayment(
|
lnurldevicepayment = await update_lnurldevicepayment(
|
||||||
lnurldevicepayment_id=paymentid, payhash=payment_hash
|
lnurldevicepayment_id=paymentid, payhash=payment_hash
|
||||||
)
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"pr": payment_request,
|
"pr": payment_request,
|
||||||
"successAction": {
|
|
||||||
"tag": "url",
|
|
||||||
"description": "Check the attached link",
|
|
||||||
"url": request.url_for("lnurldevice.displaypin", paymentid=paymentid),
|
|
||||||
},
|
|
||||||
"routes": [],
|
"routes": [],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,9 @@ from lnbits.core.services import pay_invoice
|
||||||
from lnbits.helpers import get_current_extension_name
|
from lnbits.helpers import get_current_extension_name
|
||||||
from lnbits.tasks import register_invoice_listener
|
from lnbits.tasks import register_invoice_listener
|
||||||
|
|
||||||
from .crud import get_lnurldevice
|
from .crud import get_lnurldevice, get_lnurldevicepayment, update_lnurldevicepayment
|
||||||
from .views import updater
|
from .views import updater
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
async def wait_for_paid_invoices():
|
async def wait_for_paid_invoices():
|
||||||
invoice_queue = asyncio.Queue()
|
invoice_queue = asyncio.Queue()
|
||||||
|
@ -23,17 +24,16 @@ async def wait_for_paid_invoices():
|
||||||
payment = await invoice_queue.get()
|
payment = await invoice_queue.get()
|
||||||
await on_invoice_paid(payment)
|
await on_invoice_paid(payment)
|
||||||
|
|
||||||
|
|
||||||
async def on_invoice_paid(payment: Payment) -> None:
|
async def on_invoice_paid(payment: Payment) -> None:
|
||||||
# (avoid loops)
|
# (avoid loops)
|
||||||
if "switch" == payment.extra.get("tag"):
|
if "Switch" == payment.extra.get("tag"):
|
||||||
lnurldevicepayment = await get_lnurldevicepayment(payment.extra.get("id"))
|
lnurldevicepayment = await get_lnurldevicepayment(payment.extra.get("id"))
|
||||||
if not lnurldevicepayment:
|
if not lnurldevicepayment:
|
||||||
return
|
return
|
||||||
if lnurldevicepayment.payhash == "used":
|
if lnurldevicepayment.payhash == "used":
|
||||||
return
|
return
|
||||||
lnurldevicepayment = await update_lnurldevicepayment(
|
lnurldevicepayment = await update_lnurldevicepayment(
|
||||||
lnurldevicepayment_id=paymentid, payhash="used"
|
lnurldevicepayment_id=payment.extra.get("id"), payhash="used"
|
||||||
)
|
)
|
||||||
return await updater(lnurldevicepayment.deviceid)
|
return await updater(lnurldevicepayment.deviceid)
|
||||||
return
|
return
|
|
@ -240,6 +240,7 @@
|
||||||
fill-mask="0"
|
fill-mask="0"
|
||||||
reverse-fill-mask
|
reverse-fill-mask
|
||||||
:step="'0.01'"
|
:step="'0.01'"
|
||||||
|
value="0.00"
|
||||||
></q-input>
|
></q-input>
|
||||||
<q-input
|
<q-input
|
||||||
filled
|
filled
|
||||||
|
@ -420,7 +421,7 @@
|
||||||
show_ack: false,
|
show_ack: false,
|
||||||
show_price: 'None',
|
show_price: 'None',
|
||||||
device: 'pos',
|
device: 'pos',
|
||||||
profit: 2,
|
profit: 0,
|
||||||
amount: 1,
|
amount: 1,
|
||||||
title: ''
|
title: ''
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,16 +32,17 @@ async def api_list_currencies_available():
|
||||||
@lnurldevice_ext.post("/api/v1/lnurlpos")
|
@lnurldevice_ext.post("/api/v1/lnurlpos")
|
||||||
@lnurldevice_ext.put("/api/v1/lnurlpos/{lnurldevice_id}")
|
@lnurldevice_ext.put("/api/v1/lnurlpos/{lnurldevice_id}")
|
||||||
async def api_lnurldevice_create_or_update(
|
async def api_lnurldevice_create_or_update(
|
||||||
|
req: Request,
|
||||||
data: createLnurldevice,
|
data: createLnurldevice,
|
||||||
wallet: WalletTypeInfo = Depends(require_admin_key),
|
wallet: WalletTypeInfo = Depends(require_admin_key),
|
||||||
lnurldevice_id: str = Query(None),
|
lnurldevice_id: str = Query(None),
|
||||||
):
|
):
|
||||||
if not lnurldevice_id:
|
if not lnurldevice_id:
|
||||||
lnurldevice = await create_lnurldevice(data)
|
lnurldevice = await create_lnurldevice(data)
|
||||||
return lnurldevice.dict()
|
return {**lnurldevice.dict(), **{"lnurl": lnurldevice.lnurl(req)}}
|
||||||
else:
|
else:
|
||||||
lnurldevice = await update_lnurldevice(data, lnurldevice_id=lnurldevice_id)
|
lnurldevice = await update_lnurldevice(data, lnurldevice_id=lnurldevice_id)
|
||||||
return lnurldevice.dict()
|
return {**lnurldevice.dict(), **{"lnurl": lnurldevice.lnurl(req)}}
|
||||||
|
|
||||||
|
|
||||||
@lnurldevice_ext.get("/api/v1/lnurlpos")
|
@lnurldevice_ext.get("/api/v1/lnurlpos")
|
||||||
|
@ -64,7 +65,7 @@ async def api_lnurldevices_retrieve(req: Request, wallet: WalletTypeInfo = Depen
|
||||||
|
|
||||||
@lnurldevice_ext.get("/api/v1/lnurlpos/{lnurldevice_id}")
|
@lnurldevice_ext.get("/api/v1/lnurlpos/{lnurldevice_id}")
|
||||||
async def api_lnurldevice_retrieve(
|
async def api_lnurldevice_retrieve(
|
||||||
request: Request,
|
req: Request,
|
||||||
wallet: WalletTypeInfo = Depends(get_key_type),
|
wallet: WalletTypeInfo = Depends(get_key_type),
|
||||||
lnurldevice_id: str = Query(None),
|
lnurldevice_id: str = Query(None),
|
||||||
):
|
):
|
||||||
|
@ -75,7 +76,7 @@ async def api_lnurldevice_retrieve(
|
||||||
)
|
)
|
||||||
if not lnurldevice.lnurl_toggle:
|
if not lnurldevice.lnurl_toggle:
|
||||||
return {**lnurldevice.dict()}
|
return {**lnurldevice.dict()}
|
||||||
return {**lnurldevice.dict(), **{"lnurl": lnurldevice.lnurl(request=request)}}
|
return {**lnurldevice.dict(), **{"lnurl": lnurldevice.lnurl(req)}}
|
||||||
|
|
||||||
|
|
||||||
@lnurldevice_ext.delete("/api/v1/lnurlpos/{lnurldevice_id}")
|
@lnurldevice_ext.delete("/api/v1/lnurlpos/{lnurldevice_id}")
|
||||||
|
|
Loading…
Add table
Reference in a new issue