diff --git a/lnbits/extensions/watchonly/crud.py b/lnbits/extensions/watchonly/crud.py index af2d6807..fe2e9c75 100644 --- a/lnbits/extensions/watchonly/crud.py +++ b/lnbits/extensions/watchonly/crud.py @@ -136,7 +136,7 @@ async def get_payment(payment_id: str) -> Payments: async def get_payments(user: str) -> List[Payments]: - rows = await db.fetchall("SELECT * FROM payments WHERE user IN ?", (user,)) + rows = await db.fetchall("SELECT * FROM payments WHERE user = ?", (user,)) print(rows[0]) return [Payments.from_row(row) for row in rows] diff --git a/lnbits/extensions/watchonly/migrations.py b/lnbits/extensions/watchonly/migrations.py index 3ef13a0d..51d22b80 100644 --- a/lnbits/extensions/watchonly/migrations.py +++ b/lnbits/extensions/watchonly/migrations.py @@ -35,6 +35,7 @@ async def m001_initial(db): address TEXT NOT NULL, time_to_pay INTEGER NOT NULL, amount INTEGER NOT NULL, + amount_paid INTEGER DEFAULT 0, time TIMESTAMP NOT NULL DEFAULT (strftime('%s', 'now')) ); """ diff --git a/lnbits/extensions/watchonly/models.py b/lnbits/extensions/watchonly/models.py index d415cec6..968d1c37 100644 --- a/lnbits/extensions/watchonly/models.py +++ b/lnbits/extensions/watchonly/models.py @@ -21,6 +21,7 @@ class Payments(NamedTuple): address: str time_to_pay: str amount: int + amount_paid: int time: int @classmethod diff --git a/lnbits/extensions/watchonly/templates/watchonly/index.html b/lnbits/extensions/watchonly/templates/watchonly/index.html index 19407efb..65993ea7 100644 --- a/lnbits/extensions/watchonly/templates/watchonly/index.html +++ b/lnbits/extensions/watchonly/templates/watchonly/index.html @@ -324,7 +324,7 @@ dense v-model.trim="formDialogPayment.data.time" type="number" - label="Time (mins)" + label="Time (secs)" >
@@ -512,10 +512,16 @@ field: 'amount' }, { - name: 'time', + name: 'time to pay', align: 'left', - label: 'time', - field: 'time' + label: 'Time to Pay (secs)', + field: 'time_to_pay' + }, + { + name: 'timeleft', + align: 'left', + label: 'Time left (secs)', + field: 'timeleft' }, ], pagination: { @@ -646,6 +652,7 @@ ) .then(function (response) { self.walletLinks = response.data.map(function (obj) { + return mapWalletLink(obj) }) }) @@ -692,7 +699,20 @@ this.g.user.wallets[0].inkey ) .then(function (response) { + var i + var now = parseInt(new Date() / 1000) + for (i = 0; i < response.data.length; i++) { + timeleft = response.data[i].time_to_pay - (now - response.data[i].time) + if (timeleft < 1) { + response.data[i].timeleft = 0 + } + else{ + response.data[i].timeleft = timeleft + } + } + console.log(response.data) self.paymentLinks = response.data.map(function (obj) { + console.log(mapPayment(obj)) return mapPayment(obj) }) }) diff --git a/lnbits/extensions/watchonly/views_api.py b/lnbits/extensions/watchonly/views_api.py index 3f4b5b8d..760f70d6 100644 --- a/lnbits/extensions/watchonly/views_api.py +++ b/lnbits/extensions/watchonly/views_api.py @@ -1,6 +1,7 @@ import hashlib from quart import g, jsonify, request, url_for from http import HTTPStatus +import httpx from lnbits.core.crud import get_user from lnbits.decorators import api_check_wallet_key, api_validate_post_request @@ -113,24 +114,23 @@ async def api_get_addresses(wallet_id): return jsonify([address._asdict() for address in addresses]), HTTPStatus.OK + #############################PAYEMENTS########################## @watchonly_ext.route("/api/v1/payment", methods=["GET"]) @api_check_wallet_key("invoice") async def api_payments_retrieve(): - try: - payments = await get_payments(g.wallet.user) - print(payments) - return ( - jsonify(payments), - HTTPStatus.OK, - ) - except: + payments = await get_payments(g.wallet.user) + print(payments) + if not payments: return ( jsonify({"message": "Cant fetch."}), HTTPStatus.UPGRADE_REQUIRED, ) + else: + return jsonify([payment._asdict() for payment in payments]), HTTPStatus.OK + @watchonly_ext.route("/api/v1/payment/", methods=["GET"]) @api_check_wallet_key("invoice") @@ -196,4 +196,19 @@ async def api_get_mempool(): mempool = await get_mempool(g.wallet.user) if not mempool: mempool = await create_mempool(user=g.wallet.user) + return jsonify(mempool._asdict()), HTTPStatus.OK + +@watchonly_ext.route("/api/v1/mempool/
", methods=["GET"]) +@api_check_wallet_key("invoice") +async def api_get_mempool_address_balance(address): + mempool = await get_mempool(g.wallet.user) + async with httpx.AsyncClient() as client: + try: + r = await client.get( + mempool.endpoint + "/" + address, + timeout=40, + ) + print(r) + except AssertionError: + webhook = None return jsonify(mempool._asdict()), HTTPStatus.OK \ No newline at end of file