From c0f742bc3e03bc8273cc8c134aae15fd280bdc66 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 27 Oct 2022 15:53:32 +0100 Subject: [PATCH 01/18] fix splitpayments flow and add amount in extra dict --- lnbits/extensions/splitpayments/tasks.py | 43 +++++++++++++----------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index d9f53f206..5eb7f8566 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -20,7 +20,7 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: - if not payment.extra or payment.extra.get("tag") == "splitpayments": + if payment.extra.get("tag") == "splitpayments" or payment.extra.get("splitted"): # already a splitted payment, ignore return @@ -35,26 +35,29 @@ async def on_invoice_paid(payment: Payment) -> None: logger.error("splitpayment failure: total percent adds up to more than 100%") return - logger.debug(f"checking if tagged for {len(targets)} targets") - tagged = False - for target in targets: - if target.tag in payment.extra: - tagged = True - payment_hash, payment_request = await create_invoice( - wallet_id=target.wallet, - amount=int(payment.amount / 1000), # sats - internal=True, - memo=f"Pushed tagged payment to {target.alias}", - extra={"tag": "splitpayments"}, - ) - logger.debug(f"created split invoice: {payment_hash}") + logger.debug(f"performing split payments to {len(targets)} targets") - checking_id = await pay_invoice( - payment_request=payment_request, - wallet_id=payment.wallet_id, - extra={"tag": "splitpayments"}, - ) - logger.debug(f"paid split invoice: {checking_id}") + amount_to_split = payment.amount + if payment.extra.get("amount"): + amount_to_split = int(payment.extra.get("amount") * 1000) + + for target in targets: + amount = int(payment.amount * target.percent / 100) # msats + + payment_hash, payment_request = await create_invoice( + wallet_id=target.wallet, + amount=int(amount / 1000), # sats + internal=True, + memo=f"split payment: {target.percent}% for {target.alias or target.wallet}", + ) + + logger.debug(f"created split invoice: {payment_hash}") + checking_id = await pay_invoice( + payment_request=payment_request, + wallet_id=payment.wallet_id, + extra={**payment.extra, "splitted": True}, + ) + logger.debug(f"paid split invoice: {checking_id}") logger.debug(f"performing split to {len(targets)} targets") From c22329e86ba9d15fe2f372ced909633164a6d284 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 27 Oct 2022 15:54:50 +0100 Subject: [PATCH 02/18] fix invoices extra props --- lnbits/extensions/tpos/tasks.py | 2 +- lnbits/extensions/tpos/views_api.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lnbits/extensions/tpos/tasks.py b/lnbits/extensions/tpos/tasks.py index 6eb1d5d1c..7c6a1529b 100644 --- a/lnbits/extensions/tpos/tasks.py +++ b/lnbits/extensions/tpos/tasks.py @@ -51,6 +51,6 @@ async def on_invoice_paid(payment: Payment) -> None: checking_id = await pay_invoice( payment_request=payment_request, wallet_id=payment.wallet_id, - extra={"tag": "tpos"}, + extra={**payment.extra, "tipSplitted": True}, ) logger.debug(f"tpos: tip invoice paid: {checking_id}") diff --git a/lnbits/extensions/tpos/views_api.py b/lnbits/extensions/tpos/views_api.py index 3a51238aa..76dcf9c4a 100644 --- a/lnbits/extensions/tpos/views_api.py +++ b/lnbits/extensions/tpos/views_api.py @@ -75,7 +75,12 @@ async def api_tpos_create_invoice( wallet_id=tpos.wallet, amount=amount, memo=f"{tpos.name}", - extra={"tag": "tpos", "tipAmount": tipAmount, "tposId": tpos_id}, + extra={ + "tag": "tpos", + "tipAmount": tipAmount, + "tposId": tpos_id, + "amount": amount - tipAmount if tipAmount else False, + }, ) except Exception as e: raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) From ea91c374894f20cc95039508a0cf66f839c1651e Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 27 Oct 2022 15:55:30 +0100 Subject: [PATCH 03/18] fix typo in tasks and add/fix extra props --- lnbits/extensions/livestream/lnurl.py | 6 +++++- lnbits/extensions/livestream/tasks.py | 17 +++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lnbits/extensions/livestream/lnurl.py b/lnbits/extensions/livestream/lnurl.py index 89e431e5c..efe7986d5 100644 --- a/lnbits/extensions/livestream/lnurl.py +++ b/lnbits/extensions/livestream/lnurl.py @@ -86,9 +86,13 @@ async def lnurl_callback( ls = await get_livestream_by_track(track_id) + extra_amount = amount_received - int( + amount_received * (100 - ls.fee_pct) / 100 + ) # msats + payment_hash, payment_request = await create_invoice( wallet_id=ls.wallet, - amount=int(amount_received / 1000), + amount=int(amount_received / 1000), # sats memo=await track.fullname(), unhashed_description=(await track.lnurlpay_metadata()).encode(), extra={"tag": "livestream", "track": track.id, "comment": comment}, diff --git a/lnbits/extensions/livestream/tasks.py b/lnbits/extensions/livestream/tasks.py index d081332f5..ac96e5087 100644 --- a/lnbits/extensions/livestream/tasks.py +++ b/lnbits/extensions/livestream/tasks.py @@ -41,21 +41,26 @@ async def on_invoice_paid(payment: Payment) -> None: ls = await get_livestream_by_track(track.id) assert ls, f"track {track.id} is not associated with a livestream" - # now we make a special kind of internal transfer - amount = int(payment.amount * (100 - ls.fee_pct) / 100) + amount = int(payment.amount * (100 - ls.fee_pct) / 100) # msats payment_hash, payment_request = await create_invoice( - wallet_id=tpos.tip_wallet, - amount=amount, # sats + wallet_id=producer.wallet, + amount=int(amount / 1000), # sats internal=True, memo=f"Revenue from '{track.name}'.", ) - logger.debug(f"livestream: producer invoice created: {payment_hash}") + logger.debug( + f"livestream: producer invoice created: {payment_hash}, {amount} msats" + ) checking_id = await pay_invoice( payment_request=payment_request, wallet_id=payment.wallet_id, - extra={"tag": "livestream"}, + extra={ + **payment.extra, + "shared_with": f"Producer ID: {producer.id}", + "received": payment.amount, + }, ) logger.debug(f"livestream: producer invoice paid: {checking_id}") From 58b6b9505db6acdf95301e120e1758d0bed41042 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 27 Oct 2022 16:09:55 +0100 Subject: [PATCH 04/18] add splitpayments tag to extra if no tag --- lnbits/extensions/splitpayments/tasks.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 5eb7f8566..b65a4d4f9 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -52,6 +52,11 @@ async def on_invoice_paid(payment: Payment) -> None: ) logger.debug(f"created split invoice: {payment_hash}") + + extra = {**payment.extra, "splitted": True} + if not extra.get("tag"): + extra["tag"] = "splitpayments" + checking_id = await pay_invoice( payment_request=payment_request, wallet_id=payment.wallet_id, From 4ae88ad3b9f0e443cc61822422abd57fceca38ee Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 5 Jan 2023 11:05:03 +0000 Subject: [PATCH 05/18] before merging main --- lnbits/extensions/livestream/tasks.py | 3 +++ lnbits/extensions/splitpayments/tasks.py | 3 +++ lnbits/extensions/tpos/tasks.py | 3 +++ 3 files changed, 9 insertions(+) diff --git a/lnbits/extensions/livestream/tasks.py b/lnbits/extensions/livestream/tasks.py index ac96e5087..c4d604ad8 100644 --- a/lnbits/extensions/livestream/tasks.py +++ b/lnbits/extensions/livestream/tasks.py @@ -22,6 +22,9 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: + if not payment.extra: + return + if payment.extra.get("tag") != "livestream": # not a livestream invoice return diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index b65a4d4f9..7583b64eb 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -20,6 +20,9 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: + if not payment.extra: + return + if payment.extra.get("tag") == "splitpayments" or payment.extra.get("splitted"): # already a splitted payment, ignore return diff --git a/lnbits/extensions/tpos/tasks.py b/lnbits/extensions/tpos/tasks.py index 7c6a1529b..ad0188081 100644 --- a/lnbits/extensions/tpos/tasks.py +++ b/lnbits/extensions/tpos/tasks.py @@ -20,6 +20,9 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: + if not payment.extra: + return + if payment.extra.get("tag") != "tpos": return From 7a7bd936398f396fba17aa372161dc000ec93bee Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 5 Jan 2023 12:20:31 +0000 Subject: [PATCH 06/18] refactor splitpayments with tags --- lnbits/extensions/splitpayments/tasks.py | 62 ++++++++++-------------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 7583b64eb..d481e4194 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -45,46 +45,34 @@ async def on_invoice_paid(payment: Payment) -> None: amount_to_split = int(payment.extra.get("amount") * 1000) for target in targets: - amount = int(payment.amount * target.percent / 100) # msats + if target.percent > 0: + tagged = target.tag in payment.extra - payment_hash, payment_request = await create_invoice( - wallet_id=target.wallet, - amount=int(amount / 1000), # sats - internal=True, - memo=f"split payment: {target.percent}% for {target.alias or target.wallet}", - ) + amount = int(payment.amount * target.percent / 100) # msats + memo = ( + f"split payment: {target.percent}% for {target.alias or target.wallet}" + ) + if tagged: + memo = f"Pushed tagged payment to {target.alias}" - logger.debug(f"created split invoice: {payment_hash}") + payment_hash, payment_request = await create_invoice( + wallet_id=target.wallet, + amount=int(amount / 1000), # sats + internal=True, + memo=memo, + ) - extra = {**payment.extra, "splitted": True} - if not extra.get("tag"): - extra["tag"] = "splitpayments" + logger.debug(f"created split invoice: {payment_hash}") - checking_id = await pay_invoice( - payment_request=payment_request, - wallet_id=payment.wallet_id, - extra={**payment.extra, "splitted": True}, - ) - logger.debug(f"paid split invoice: {checking_id}") + extra = {**payment.extra, "splitted": True} + if not extra.get("tag"): + extra["tag"] = "splitpayments" + + checking_id = await pay_invoice( + payment_request=payment_request, + wallet_id=payment.wallet_id, + extra={**extra}, + ) + logger.debug(f"paid split invoice: {checking_id}") logger.debug(f"performing split to {len(targets)} targets") - - if tagged == False: - for target in targets: - if target.percent > 0: - amount = int(payment.amount * target.percent / 100) # msats - payment_hash, payment_request = await create_invoice( - wallet_id=target.wallet, - amount=int(amount / 1000), # sats - internal=True, - memo=f"split payment: {target.percent}% for {target.alias or target.wallet}", - extra={"tag": "splitpayments"}, - ) - logger.debug(f"created split invoice: {payment_hash}") - - checking_id = await pay_invoice( - payment_request=payment_request, - wallet_id=payment.wallet_id, - extra={"tag": "splitpayments"}, - ) - logger.debug(f"paid split invoice: {checking_id}") From 9e96025dc700ed5707af1059fa182d93c016ce64 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Thu, 5 Jan 2023 14:37:31 +0000 Subject: [PATCH 07/18] mypy --- lnbits/extensions/splitpayments/tasks.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index d481e4194..5d448949c 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -41,8 +41,10 @@ async def on_invoice_paid(payment: Payment) -> None: logger.debug(f"performing split payments to {len(targets)} targets") amount_to_split = payment.amount + if payment.extra.get("amount"): - amount_to_split = int(payment.extra.get("amount") * 1000) + _amount = payment.extra.get("amount") or 0 + amount_to_split = _amount * 1000 for target in targets: if target.percent > 0: @@ -65,13 +67,11 @@ async def on_invoice_paid(payment: Payment) -> None: logger.debug(f"created split invoice: {payment_hash}") extra = {**payment.extra, "splitted": True} - if not extra.get("tag"): - extra["tag"] = "splitpayments" checking_id = await pay_invoice( payment_request=payment_request, wallet_id=payment.wallet_id, - extra={**extra}, + extra=extra, ) logger.debug(f"paid split invoice: {checking_id}") From 41faf42afe3564401f8945a97a1a818546ec9c2a Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 09:46:43 +0000 Subject: [PATCH 08/18] calle's suggestion --- lnbits/extensions/splitpayments/tasks.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 5d448949c..2106fe433 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -43,8 +43,7 @@ async def on_invoice_paid(payment: Payment) -> None: amount_to_split = payment.amount if payment.extra.get("amount"): - _amount = payment.extra.get("amount") or 0 - amount_to_split = _amount * 1000 + amount_to_split = (payment.extra.get("amount") or 0) * 1000 for target in targets: if target.percent > 0: From bc0d86c7713bd22110c6b5e17eee067aae7ed6f0 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 10:27:03 +0000 Subject: [PATCH 09/18] correct amount on invoice --- lnbits/extensions/splitpayments/tasks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 2106fe433..d58a96383 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -49,12 +49,13 @@ async def on_invoice_paid(payment: Payment) -> None: if target.percent > 0: tagged = target.tag in payment.extra - amount = int(payment.amount * target.percent / 100) # msats + amount = int(amount_to_split * target.percent / 100) # msats memo = ( f"split payment: {target.percent}% for {target.alias or target.wallet}" ) if tagged: memo = f"Pushed tagged payment to {target.alias}" + amount = int(amount_to_split) payment_hash, payment_request = await create_invoice( wallet_id=target.wallet, From aaecb2b3812b97600d15884b33c3adbe03a1c89a Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 11:29:18 +0000 Subject: [PATCH 10/18] Update lnbits/extensions/splitpayments/tasks.py Co-authored-by: calle <93376500+callebtc@users.noreply.github.com> --- lnbits/extensions/splitpayments/tasks.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index d58a96383..53d97eb2f 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -20,8 +20,6 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: - if not payment.extra: - return if payment.extra.get("tag") == "splitpayments" or payment.extra.get("splitted"): # already a splitted payment, ignore From 8bb801ac993aa44691cadcc13eb1162787eb833b Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 11:29:38 +0000 Subject: [PATCH 11/18] Update lnbits/extensions/livestream/tasks.py Co-authored-by: calle <93376500+callebtc@users.noreply.github.com> --- lnbits/extensions/livestream/tasks.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lnbits/extensions/livestream/tasks.py b/lnbits/extensions/livestream/tasks.py index c4d604ad8..14c7845da 100644 --- a/lnbits/extensions/livestream/tasks.py +++ b/lnbits/extensions/livestream/tasks.py @@ -22,8 +22,6 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: - if not payment.extra: - return if payment.extra.get("tag") != "livestream": # not a livestream invoice From 70899994fee7f7c6dc5e5c8a174c133f7716944b Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 11:31:19 +0000 Subject: [PATCH 12/18] clean visual aid comments --- lnbits/extensions/livestream/tasks.py | 4 ++-- lnbits/extensions/splitpayments/tasks.py | 4 ++-- lnbits/extensions/tpos/tasks.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lnbits/extensions/livestream/tasks.py b/lnbits/extensions/livestream/tasks.py index 14c7845da..9837654ee 100644 --- a/lnbits/extensions/livestream/tasks.py +++ b/lnbits/extensions/livestream/tasks.py @@ -42,11 +42,11 @@ async def on_invoice_paid(payment: Payment) -> None: ls = await get_livestream_by_track(track.id) assert ls, f"track {track.id} is not associated with a livestream" - amount = int(payment.amount * (100 - ls.fee_pct) / 100) # msats + amount = int(payment.amount * (100 - ls.fee_pct) / 100) payment_hash, payment_request = await create_invoice( wallet_id=producer.wallet, - amount=int(amount / 1000), # sats + amount=int(amount / 1000), internal=True, memo=f"Revenue from '{track.name}'.", ) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 53d97eb2f..b757d9a33 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -47,7 +47,7 @@ async def on_invoice_paid(payment: Payment) -> None: if target.percent > 0: tagged = target.tag in payment.extra - amount = int(amount_to_split * target.percent / 100) # msats + amount = int(amount_to_split * target.percent / 100) memo = ( f"split payment: {target.percent}% for {target.alias or target.wallet}" ) @@ -57,7 +57,7 @@ async def on_invoice_paid(payment: Payment) -> None: payment_hash, payment_request = await create_invoice( wallet_id=target.wallet, - amount=int(amount / 1000), # sats + amount=int(amount / 1000), internal=True, memo=memo, ) diff --git a/lnbits/extensions/tpos/tasks.py b/lnbits/extensions/tpos/tasks.py index fe9fb7e69..80ee1085d 100644 --- a/lnbits/extensions/tpos/tasks.py +++ b/lnbits/extensions/tpos/tasks.py @@ -53,7 +53,7 @@ async def on_invoice_paid(payment: Payment) -> None: payment_hash, payment_request = await create_invoice( wallet_id=wallet_id, - amount=int(tipAmount), # sats + amount=int(tipAmount), internal=True, memo=f"tpos tip", ) From cc375c0e408e54a7e35cfcab394a8218eb89dd30 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:41:41 +0100 Subject: [PATCH 13/18] clean up --- lnbits/extensions/splitpayments/tasks.py | 61 +++++++++++++----------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index b757d9a33..f74f27e68 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -26,51 +26,54 @@ async def on_invoice_paid(payment: Payment) -> None: return targets = await get_targets(payment.wallet_id) - logger.debug(targets) + if not targets: return + # validate target percentages total_percent = sum([target.percent for target in targets]) if total_percent > 100: - logger.error("splitpayment failure: total percent adds up to more than 100%") + logger.error("splitpayment: total percent adds up to more than 100%") + return + if not all([target.percent > 0 for target in targets]): + logger.error("splitpayment: not all percentages are positive > 0") return - logger.debug(f"performing split payments to {len(targets)} targets") - - amount_to_split = payment.amount + logger.trace(f"splitpayments: performing split payments to {len(targets)} targets") if payment.extra.get("amount"): amount_to_split = (payment.extra.get("amount") or 0) * 1000 + else: + amount_to_split = payment.amount + + if not amount_to_split: + logger.error("splitpayments: no amount to split") + return for target in targets: - if target.percent > 0: - tagged = target.tag in payment.extra + tagged = target.tag in payment.extra - amount = int(amount_to_split * target.percent / 100) + if tagged: + memo = f"Pushed tagged payment to {target.alias}" + amount_msat = int(amount_to_split) + else: + amount_msat = int(amount_to_split * target.percent / 100) memo = ( - f"split payment: {target.percent}% for {target.alias or target.wallet}" - ) - if tagged: - memo = f"Pushed tagged payment to {target.alias}" - amount = int(amount_to_split) - - payment_hash, payment_request = await create_invoice( - wallet_id=target.wallet, - amount=int(amount / 1000), - internal=True, - memo=memo, + f"Split payment: {target.percent}% for {target.alias or target.wallet}" ) - logger.debug(f"created split invoice: {payment_hash}") + payment_hash, payment_request = await create_invoice( + wallet_id=target.wallet, + amount=int(amount_msat / 1000), + internal=True, + memo=memo, + ) - extra = {**payment.extra, "splitted": True} + extra = {**payment.extra, "splitted": True} - checking_id = await pay_invoice( - payment_request=payment_request, - wallet_id=payment.wallet_id, - extra=extra, - ) - logger.debug(f"paid split invoice: {checking_id}") - - logger.debug(f"performing split to {len(targets)} targets") + await pay_invoice( + payment_request=payment_request, + wallet_id=payment.wallet_id, + extra=extra, + ) From c8cdf2f1d265f3b1055c57c770fa8874af60e097 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 12:45:43 +0000 Subject: [PATCH 14/18] tags don't have percent --- lnbits/extensions/splitpayments/tasks.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index b757d9a33..844e3688d 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -44,8 +44,8 @@ async def on_invoice_paid(payment: Payment) -> None: amount_to_split = (payment.extra.get("amount") or 0) * 1000 for target in targets: - if target.percent > 0: - tagged = target.tag in payment.extra + tagged = target.tag in payment.extra + if tagged or target.percent > 0: amount = int(amount_to_split * target.percent / 100) memo = ( @@ -64,7 +64,7 @@ async def on_invoice_paid(payment: Payment) -> None: logger.debug(f"created split invoice: {payment_hash}") - extra = {**payment.extra, "splitted": True} + extra = {**payment.extra, "tag": "splitpayments", "splitted": True} checking_id = await pay_invoice( payment_request=payment_request, From 1032ad34177cadbe2fb02b61f9d74d0eae7ccfa8 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 12:45:55 +0000 Subject: [PATCH 15/18] add amount to livestream --- lnbits/extensions/livestream/lnurl.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lnbits/extensions/livestream/lnurl.py b/lnbits/extensions/livestream/lnurl.py index efe7986d5..63523f339 100644 --- a/lnbits/extensions/livestream/lnurl.py +++ b/lnbits/extensions/livestream/lnurl.py @@ -86,16 +86,19 @@ async def lnurl_callback( ls = await get_livestream_by_track(track_id) - extra_amount = amount_received - int( - amount_received * (100 - ls.fee_pct) / 100 - ) # msats + extra_amount = amount_received - int(amount_received * (100 - ls.fee_pct) / 100) payment_hash, payment_request = await create_invoice( wallet_id=ls.wallet, - amount=int(amount_received / 1000), # sats + amount=int(amount_received / 1000), memo=await track.fullname(), unhashed_description=(await track.lnurlpay_metadata()).encode(), - extra={"tag": "livestream", "track": track.id, "comment": comment}, + extra={ + "tag": "livestream", + "track": track.id, + "comment": comment, + "amount": int(extra_amount / 1000), + }, ) if amount_received < track.price_msat: From 6a262428cd8914965c69469cb3d749c7ea5fce9c Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 12:53:26 +0000 Subject: [PATCH 16/18] fix indentation --- lnbits/extensions/splitpayments/tasks.py | 38 +++++++++++------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index ead7b5fc7..ca32ddcf8 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -55,26 +55,24 @@ async def on_invoice_paid(payment: Payment) -> None: tagged = target.tag in payment.extra if tagged or target.percent > 0: - if tagged: - memo = f"Pushed tagged payment to {target.alias}" - amount_msat = int(amount_to_split) - else: - amount_msat = int(amount_to_split * target.percent / 100) - memo = ( - f"Split payment: {target.percent}% for {target.alias or target.wallet}" + if tagged: + memo = f"Pushed tagged payment to {target.alias}" + amount_msat = int(amount_to_split) + else: + amount_msat = int(amount_to_split * target.percent / 100) + memo = f"Split payment: {target.percent}% for {target.alias or target.wallet}" + + payment_hash, payment_request = await create_invoice( + wallet_id=target.wallet, + amount=int(amount_msat / 1000), + internal=True, + memo=memo, ) - payment_hash, payment_request = await create_invoice( - wallet_id=target.wallet, - amount=int(amount_msat / 1000), - internal=True, - memo=memo, - ) + extra = {**payment.extra, "splitted": True} - extra = {**payment.extra, "splitted": True} - - await pay_invoice( - payment_request=payment_request, - wallet_id=payment.wallet_id, - extra=extra, - ) + await pay_invoice( + payment_request=payment_request, + wallet_id=payment.wallet_id, + extra=extra, + ) From 319e28ef3f04c4c477c4ba23d9983fc0e39e25ce Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 15:16:41 +0000 Subject: [PATCH 17/18] removed as it breaks tags. there's no % in tags --- lnbits/extensions/splitpayments/tasks.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index ca32ddcf8..960e5fe62 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -36,9 +36,6 @@ async def on_invoice_paid(payment: Payment) -> None: if total_percent > 100: logger.error("splitpayment: total percent adds up to more than 100%") return - if not all([target.percent > 0 for target in targets]): - logger.error("splitpayment: not all percentages are positive > 0") - return logger.trace(f"splitpayments: performing split payments to {len(targets)} targets") @@ -52,7 +49,8 @@ async def on_invoice_paid(payment: Payment) -> None: return for target in targets: - tagged = target.tag in payment.extra + tagged = target.tag in payment.extra.values() + if tagged or target.percent > 0: if tagged: From 3cdb1ab180f7d7417b1af0263c91ad3b75064175 Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Fri, 6 Jan 2023 16:00:26 +0000 Subject: [PATCH 18/18] mergeable --- lnbits/extensions/splitpayments/tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lnbits/extensions/splitpayments/tasks.py b/lnbits/extensions/splitpayments/tasks.py index 960e5fe62..59aa8e051 100644 --- a/lnbits/extensions/splitpayments/tasks.py +++ b/lnbits/extensions/splitpayments/tasks.py @@ -49,7 +49,7 @@ async def on_invoice_paid(payment: Payment) -> None: return for target in targets: - tagged = target.tag in payment.extra.values() + tagged = target.tag in payment.extra if tagged or target.percent > 0: @@ -67,7 +67,7 @@ async def on_invoice_paid(payment: Payment) -> None: memo=memo, ) - extra = {**payment.extra, "splitted": True} + extra = {**payment.extra, "tag": "splitpayments", "splitted": True} await pay_invoice( payment_request=payment_request,