From 3f5db03e0911e8093722e87d18994bf7d82b66b5 Mon Sep 17 00:00:00 2001 From: harsh1504660 Date: Sat, 9 Aug 2025 19:16:32 +0530 Subject: [PATCH 1/2] fix(gui): avoid KeyError in QELnPaymentDetails.update when key missing --- electrum/gui/qml/qelnpaymentdetails.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/electrum/gui/qml/qelnpaymentdetails.py b/electrum/gui/qml/qelnpaymentdetails.py index 574fb1b011a5..a16cad81f766 100644 --- a/electrum/gui/qml/qelnpaymentdetails.py +++ b/electrum/gui/qml/qelnpaymentdetails.py @@ -95,17 +95,20 @@ def update(self): self._logger.error('wallet undefined') return - # TODO this is horribly inefficient. need a payment getter/query method - tx = self._wallet.wallet.lnworker.get_lightning_history()[self._key] - self._logger.debug(str(tx)) + history = self._wallet.wallet.lnworker.get_lightning_history() + tx = history.get(self._key) + if tx is None: + self._logger.warning(f"Payment key {self._key} not found in history.") + return # Or set fields to empty/default self._fee.msatsInt = 0 if not tx.fee_msat else int(tx.fee_msat) self._amount.msatsInt = int(tx.amount_msat) self._label = tx.label self._date = format_time(tx.timestamp) self._timestamp = tx.timestamp - self._status = 'settled' # TODO: other states? get_lightning_history is deciding the filter for us :( + self._status = 'settled' self._phash = tx.payment_hash self._preimage = tx.preimage self.detailsChanged.emit() + From cc2798abcd0c3b755b3ff1b28bc2e79e19608c8e Mon Sep 17 00:00:00 2001 From: harsh1504660 Date: Tue, 12 Aug 2025 00:05:02 +0530 Subject: [PATCH 2/2] Restored the deleted comments --- electrum/gui/qml/qelnpaymentdetails.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/electrum/gui/qml/qelnpaymentdetails.py b/electrum/gui/qml/qelnpaymentdetails.py index a16cad81f766..7a62bf35b347 100644 --- a/electrum/gui/qml/qelnpaymentdetails.py +++ b/electrum/gui/qml/qelnpaymentdetails.py @@ -94,7 +94,8 @@ def update(self): if self._wallet is None: self._logger.error('wallet undefined') return - + + # TODO this is horribly inefficient. need a payment getter/query method history = self._wallet.wallet.lnworker.get_lightning_history() tx = history.get(self._key) if tx is None: @@ -106,7 +107,7 @@ def update(self): self._label = tx.label self._date = format_time(tx.timestamp) self._timestamp = tx.timestamp - self._status = 'settled' + self._status = 'settled' # TODO: other states? get_lightning_history is deciding the filter for us :( self._phash = tx.payment_hash self._preimage = tx.preimage