1
0

pass wallet to PaymentIdentifier instead of config and contacts

This commit is contained in:
Sander van Grieken
2023-05-31 20:54:30 +02:00
parent ac341d9565
commit a2ca191de1
4 changed files with 21 additions and 17 deletions

View File

@@ -2,7 +2,7 @@ import asyncio
import urllib
import re
from decimal import Decimal, InvalidOperation
from typing import NamedTuple, Optional, Callable, Any, Sequence, List
from typing import NamedTuple, Optional, Callable, Any, Sequence, List, TYPE_CHECKING
from urllib.parse import urlparse
from . import bitcoin
@@ -16,6 +16,9 @@ from .bitcoin import COIN, TOTAL_COIN_SUPPLY_LIMIT_IN_BTC, opcodes, construct_sc
from .lnaddr import lndecode, LnDecodeException, LnInvoiceException
from .lnutil import IncompatibleOrInsaneFeatures
if TYPE_CHECKING:
from .wallet import Abstract_Wallet
def maybe_extract_lightning_payment_identifier(data: str) -> Optional[str]:
data = data.strip() # whitespaces
@@ -184,12 +187,14 @@ class PaymentIdentifier(Logger):
* lightning-URI (containing bolt11 or lnurl)
* bolt11 invoice
* lnurl
* TODO: lightning address
"""
def __init__(self, config, contacts, text):
def __init__(self, wallet: 'Abstract_Wallet', text):
Logger.__init__(self)
self.contacts = contacts
self.config = config
self.wallet = wallet
self.contacts = wallet.contacts if wallet is not None else None
self.config = wallet.config if wallet is not None else None
self.text = text
self._type = None
self.error = None # if set, GUI should show error and stop
@@ -307,7 +312,7 @@ class PaymentIdentifier(Logger):
total += output.value
if is_multiline and errors:
self.error = str(errors) if errors else None
print(outputs, self.error)
self.logger.debug(f'multiline: {outputs!r}, {self.error}')
return outputs
def parse_address_and_amount(self, line) -> 'PartialTxOutput':
@@ -364,7 +369,7 @@ class PaymentIdentifier(Logger):
assert bitcoin.is_address(address)
return address
def get_fields_for_GUI(self, wallet):
def get_fields_for_GUI(self):
""" sets self.error as side effect"""
recipient = None
amount = None
@@ -429,7 +434,7 @@ class PaymentIdentifier(Logger):
if label and not description:
description = label
lightning = self.bip21.get('lightning')
if lightning and wallet.has_lightning():
if lightning and self.wallet.has_lightning():
# maybe set self.bolt11?
recipient, amount, description = self.get_bolt11_fields(lightning)
if not amount:
@@ -540,8 +545,7 @@ class PaymentIdentifier(Logger):
self.logger.info(f"Payment ACK: {ack_status}. Ack message: {ack_msg}")
on_success(self)
def get_invoice(self, wallet, amount_sat, message):
# fixme: wallet not really needed, only height
def get_invoice(self, amount_sat, message):
from .invoices import Invoice
if self.is_lightning():
invoice_str = self.bolt11
@@ -555,7 +559,7 @@ class PaymentIdentifier(Logger):
outputs = self.get_onchain_outputs(amount_sat)
message = self.bip21.get('message') if self.bip21 else message
bip70_data = self.bip70_data if self.bip70 else None
return wallet.create_invoice(
return self.wallet.create_invoice(
outputs=outputs,
message=message,
pr=bip70_data,