diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py index 8d1e54c13..fce6f4474 100644 --- a/electrum/gui/qt/util.py +++ b/electrum/gui/qt/util.py @@ -813,6 +813,8 @@ class MyTreeView(QTreeView): return row def refresh_all(self): + if self.maybe_defer_update(): + return for row in range(0, self.std_model.rowCount()): item = self.std_model.item(row, 0) key = item.data(self.key_role) diff --git a/electrum/invoices.py b/electrum/invoices.py index e7b6c46de..52fbeb68f 100644 --- a/electrum/invoices.py +++ b/electrum/invoices.py @@ -1,5 +1,5 @@ import time -from typing import TYPE_CHECKING, List, Optional, Union, Dict, Any +from typing import TYPE_CHECKING, List, Optional, Union, Dict, Any, Sequence from decimal import Decimal import attr @@ -126,16 +126,13 @@ class Invoice(StoredObject): address = self._lnaddr.get_fallback_address() or None return address - def get_outputs(self): - if self.is_lightning(): + def get_outputs(self) -> Sequence[PartialTxOutput]: + outputs = self.outputs or [] + if not outputs: address = self.get_address() amount = self.get_amount_sat() if address and amount is not None: outputs = [PartialTxOutput.from_address_and_value(address, int(amount))] - else: - outputs = [] - else: - outputs = self.outputs return outputs def can_be_paid_onchain(self) -> bool: diff --git a/electrum/transaction.py b/electrum/transaction.py index bcf44e8be..425ce9a80 100644 --- a/electrum/transaction.py +++ b/electrum/transaction.py @@ -148,9 +148,18 @@ class TxOutput: return cls(scriptpubkey=bfh(addr), value=val) raise Exception(f"unexpected legacy address type: {_type}") + @property + def scriptpubkey(self) -> bytes: + return self._scriptpubkey + + @scriptpubkey.setter + def scriptpubkey(self, scriptpubkey: bytes): + self._scriptpubkey = scriptpubkey + self._address = get_address_from_output_script(scriptpubkey) + @property def address(self) -> Optional[str]: - return get_address_from_output_script(self.scriptpubkey) # TODO cache this? + return self._address def get_ui_address_str(self) -> str: addr = self.address