From aeab899e4d06b14d35f4b531207aeede2e484722 Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 31 Aug 2022 18:32:13 +0100 Subject: [PATCH 1/5] Fix daily check --- lnbits/extensions/boltcards/crud.py | 11 +++++++---- lnbits/extensions/boltcards/lnurl.py | 17 +++++++++-------- lnbits/extensions/boltcards/static/js/index.js | 6 ++++++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/lnbits/extensions/boltcards/crud.py b/lnbits/extensions/boltcards/crud.py index 63c04d73..f4d5c566 100644 --- a/lnbits/extensions/boltcards/crud.py +++ b/lnbits/extensions/boltcards/crud.py @@ -178,13 +178,16 @@ async def get_hits(cards_ids: Union[str, List[str]]) -> List[Hit]: return [Hit(**row) for row in rows] -async def get_hits_today(card_id: Union[str, List[str]]) -> List[Hit]: +async def get_hits_today(card_id: str) -> Optional[Hit]: rows = await db.fetchall( - f"SELECT * FROM boltcards.hits WHERE card_id = ? AND time >= DATE('now') AND time < DATE('now', '+1 day')", - (card_id,), + f"SELECT * FROM boltcards.hits WHERE card_id = ?", (card_id,), ) + updatedrow = [] + for row in rows: + if datetime.now().date() == datetime.fromtimestamp(row.time).date(): + updatedrow.append(row) - return [Hit(**row) for row in rows] + return [Hit(**row) for row in updatedrow] async def spend_hit(id: str): diff --git a/lnbits/extensions/boltcards/lnurl.py b/lnbits/extensions/boltcards/lnurl.py index e422c463..693792c3 100644 --- a/lnbits/extensions/boltcards/lnurl.py +++ b/lnbits/extensions/boltcards/lnurl.py @@ -20,6 +20,8 @@ from starlette.exceptions import HTTPException from starlette.requests import Request from starlette.responses import HTMLResponse +from lnbits import bolt11 + from lnbits.core.services import create_invoice from lnbits.core.views.api import pay_invoice @@ -96,7 +98,6 @@ async def api_scan(p, c, request: Request, external_id: str = None): "defaultDescription": f"Boltcard (refund address lnurl://{lnurlpay})", } - @boltcards_ext.get( "/api/v1/lnurl/cb/{hitid}", status_code=HTTPStatus.OK, @@ -111,23 +112,23 @@ async def lnurl_callback( card = await get_card(hit.card_id) if not hit: return {"status": "ERROR", "reason": f"LNURL-pay record not found."} + if hit.id != k1: + return {"status": "ERROR", "reason": "Bad K1"} + if hit.spent: + return {"status": "ERROR", "reason": f"Payment already claimed"} + invoice = bolt11.decode(pr) + hit = await spend_hit(id=hit.id, amount=int(invoice.amount_msat / 1000)) try: - if hit.id != k1: - return {"status": "ERROR", "reason": "Bad K1"} - if hit.spent: - return {"status": "ERROR", "reason": f"Payment already claimed"} - hit = await spend_hit(hit.id) await pay_invoice( wallet_id=card.wallet, payment_request=pr, max_sat=card.tx_limit, - extra={"tag": "boltcard"}, + extra={"tag": "boltcard", "tag": hit.id}, ) return {"status": "OK"} except: return {"status": "ERROR", "reason": f"Payment failed"} - # /boltcards/api/v1/auth?a=00000000000000000000000000000000 @boltcards_ext.get("/api/v1/auth") async def api_auth(a, request: Request): diff --git a/lnbits/extensions/boltcards/static/js/index.js b/lnbits/extensions/boltcards/static/js/index.js index 84c2fca5..a800aa36 100644 --- a/lnbits/extensions/boltcards/static/js/index.js +++ b/lnbits/extensions/boltcards/static/js/index.js @@ -105,6 +105,12 @@ new Vue({ label: 'Card name', field: 'card_name' }, + { + name: 'amount', + align: 'left', + label: 'Amount', + field: 'amount' + }, { name: 'old_ctr', align: 'left', From fa4b89b9a25f98a797f16f5a6389931d4c666223 Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 31 Aug 2022 18:52:12 +0100 Subject: [PATCH 2/5] Reverted nfc button not showing How it was before is better, as people know nfc functionality exists. It pushes them to use the right browser --- lnbits/extensions/boltcards/static/js/index.js | 1 - lnbits/extensions/boltcards/templates/boltcards/index.html | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lnbits/extensions/boltcards/static/js/index.js b/lnbits/extensions/boltcards/static/js/index.js index 84c2fca5..d38bad36 100644 --- a/lnbits/extensions/boltcards/static/js/index.js +++ b/lnbits/extensions/boltcards/static/js/index.js @@ -16,7 +16,6 @@ new Vue({ return { toggleAdvanced: false, nfcTagReading: false, - nfcSupported: typeof NDEFReader != 'undefined', lnurlLink: `${window.location.host}/boltcards/api/v1/scan/`, cards: [], hits: [], diff --git a/lnbits/extensions/boltcards/templates/boltcards/index.html b/lnbits/extensions/boltcards/templates/boltcards/index.html index 26af61f2..96d9c9d0 100644 --- a/lnbits/extensions/boltcards/templates/boltcards/index.html +++ b/lnbits/extensions/boltcards/templates/boltcards/index.html @@ -251,7 +251,7 @@ >
-
+
-
+
Date: Wed, 31 Aug 2022 19:04:07 +0100 Subject: [PATCH 3/5] Ruined extension layout --- lnbits/extensions/boltz/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/extensions/boltz/config.json b/lnbits/extensions/boltz/config.json index 6a11da2d..0f69d2a5 100644 --- a/lnbits/extensions/boltz/config.json +++ b/lnbits/extensions/boltz/config.json @@ -1,6 +1,6 @@ { "name": "Boltz", - "short_description": "Perform onchain/offchain swaps via https://boltz.exchange/", + "short_description": "Perform onchain/offchain swaps", "icon": "swap_horiz", "contributors": ["dni"] } From dda5784a47f22c466b556de4686ede115da965aa Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 31 Aug 2022 19:24:50 +0100 Subject: [PATCH 4/5] added amount to spend --- lnbits/extensions/boltcards/crud.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lnbits/extensions/boltcards/crud.py b/lnbits/extensions/boltcards/crud.py index f4d5c566..37605c4b 100644 --- a/lnbits/extensions/boltcards/crud.py +++ b/lnbits/extensions/boltcards/crud.py @@ -190,11 +190,12 @@ async def get_hits_today(card_id: str) -> Optional[Hit]: return [Hit(**row) for row in updatedrow] -async def spend_hit(id: str): +async def spend_hit(id: str, amount: int): await db.execute( - "UPDATE boltcards.hits SET spent = ? WHERE id = ?", - (True, id), + "UPDATE boltcards.hits SET spent = ?, amount = ? WHERE id = ?", + (True, amount, id), ) + return await get_hit(id) async def create_hit(card_id, ip, useragent, old_ctr, new_ctr) -> Hit: From c52ffe846dff1645e24a549536d0e63617d91b1d Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 31 Aug 2022 19:26:59 +0100 Subject: [PATCH 5/5] import dattime --- lnbits/extensions/boltcards/crud.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lnbits/extensions/boltcards/crud.py b/lnbits/extensions/boltcards/crud.py index 37605c4b..940b48b8 100644 --- a/lnbits/extensions/boltcards/crud.py +++ b/lnbits/extensions/boltcards/crud.py @@ -6,6 +6,7 @@ from lnbits.helpers import urlsafe_short_hash from . import db from .models import Card, CreateCardData, Hit, Refund +from datetime import date, datetime async def create_card(data: CreateCardData, wallet_id: str) -> Card: card_id = urlsafe_short_hash().upper()