From 2757ad2ea932b0eb8889240190ed3dcdaeadbf5f Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 7 Oct 2022 15:18:09 +0300 Subject: [PATCH] feat: update invoice status --- lnbits/extensions/cashu/views_api.py | 32 +++++++++++++++++----------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/lnbits/extensions/cashu/views_api.py b/lnbits/extensions/cashu/views_api.py index 5bbf084e5..d6b345383 100644 --- a/lnbits/extensions/cashu/views_api.py +++ b/lnbits/extensions/cashu/views_api.py @@ -25,6 +25,7 @@ from .crud import ( get_lightning_invoice, store_lightning_invoice, store_promise, + update_lightning_invoice, ) from .ledger import mint, request_mint from .mint import generate_promises, get_pubkeys @@ -279,8 +280,10 @@ async def mint_coins( raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Mint does not have this invoice." ) - # if invoice.issued == True: - # todo: give old tokens? + if invoice.issued == True: + raise HTTPException( + status_code=HTTPStatus.PAYMENT_REQUIRED, detail="Tokens already issued for this invoice." + ) status: PaymentStatus = await check_transaction_status( cashu.wallet, payment_hash @@ -290,18 +293,21 @@ async def mint_coins( raise HTTPException( status_code=HTTPStatus.PAYMENT_REQUIRED, detail="Invoice not paid." ) - - amounts = [] - B_s = [] - for payload in data.blinded_messages: - amounts.append(payload.amount) - B_s.append(PublicKey(bytes.fromhex(payload.B_), raw=True)) - try: - promises = await generate_promises(cashu.prvkey, amounts, B_s) - for amount, B_, p in zip(amounts, B_s, promises): - await store_promise(amount, B_.serialize().hex(), p.C_, cashu_id) - return promises + await update_lightning_invoice(cashu_id, payment_hash, True) + + amounts = [] + B_s = [] + for payload in data.blinded_messages: + amounts.append(payload.amount) + B_s.append(PublicKey(bytes.fromhex(payload.B_), raw=True)) + + + promises = await generate_promises(cashu.prvkey, amounts, B_s) + for amount, B_, p in zip(amounts, B_s, promises): + await store_promise(amount, B_.serialize().hex(), p.C_, cashu_id) + + return promises except Exception as exc: return CashuError(error=str(exc))