If an invoice cannot be parsed in import_invoices or import_requests,
raise FileImportFailed. Fixes #7950
This commit is contained in:
@@ -82,7 +82,7 @@ from .mnemonic import Mnemonic
|
||||
from .logging import get_logger, Logger
|
||||
from .lnworker import LNWallet
|
||||
from .paymentrequest import PaymentRequest
|
||||
from .util import read_json_file, write_json_file, UserFacingException
|
||||
from .util import read_json_file, write_json_file, UserFacingException, FileImportFailed
|
||||
from .util import EventListener, event_listener
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -986,7 +986,7 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
||||
)
|
||||
return invoice
|
||||
|
||||
def save_invoice(self, invoice: Invoice) -> None:
|
||||
def save_invoice(self, invoice: Invoice, *, write_to_disk: bool = True) -> None:
|
||||
key = self.get_key_for_outgoing_invoice(invoice)
|
||||
if not invoice.is_lightning():
|
||||
if self.is_onchain_invoice_paid(invoice)[0]:
|
||||
@@ -995,7 +995,8 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
||||
for txout in invoice.get_outputs():
|
||||
self._invoices_from_scriptpubkey_map[txout.scriptpubkey].add(key)
|
||||
self._invoices[key] = invoice
|
||||
self.save_db()
|
||||
if write_to_disk:
|
||||
self.save_db()
|
||||
|
||||
def clear_invoices(self):
|
||||
self._invoices.clear()
|
||||
@@ -1021,7 +1022,10 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
||||
def import_requests(self, path):
|
||||
data = read_json_file(path)
|
||||
for x in data:
|
||||
req = Invoice(**x)
|
||||
try:
|
||||
req = Invoice(**x)
|
||||
except:
|
||||
raise FileImportFailed(_("Invalid invoice format"))
|
||||
self.add_payment_request(req, write_to_disk=False)
|
||||
self.save_db()
|
||||
|
||||
@@ -1031,8 +1035,12 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
||||
def import_invoices(self, path):
|
||||
data = read_json_file(path)
|
||||
for x in data:
|
||||
invoice = Invoice(**x)
|
||||
self.save_invoice(invoice)
|
||||
try:
|
||||
req = Invoice(**x)
|
||||
except:
|
||||
raise FileImportFailed(_("Invalid invoice format"))
|
||||
self.save_invoice(invoice, write_to_disk=False)
|
||||
self.save_db()
|
||||
|
||||
def export_invoices(self, path):
|
||||
write_json_file(path, list(self._invoices.values()))
|
||||
|
||||
Reference in New Issue
Block a user