From ba153684145305beb2fe24e76341b95567cf7dcd Mon Sep 17 00:00:00 2001 From: Thomas Farstrike Date: Mon, 26 May 2025 15:44:18 +0200 Subject: [PATCH] refactor --- .../assets/wallet.py | 61 +++++++++++-------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/wallet.py b/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/wallet.py index 170d387e..863917ed 100644 --- a/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/wallet.py +++ b/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/wallet.py @@ -35,6 +35,13 @@ class Wallet: return False return all(p1 == p2 for p1, p2 in zip(list1, list2)) + def handle_new_balance(self, new_balance): + if new_balance != self.last_known_balance: + self.last_known_balance = new_balance + self.balance_updated_cb() + new_payments = self.fetch_payments() # if the balance changed, then re-list transactions + self.handle_new_payments(new_payments) + def handle_new_payments(self, new_payments): print("handle_new_payments") if not self.are_payment_lists_equal(self.payment_list, new_payments): @@ -76,11 +83,7 @@ class LNBitsWallet(Wallet): while self.keep_running: try: new_balance = self.fetch_balance() - if new_balance != self.last_known_balance: - self.last_known_balance = new_balance - self.balance_updated_cb() - new_payments = self.fetch_payments() # if the balance changed, then re-list transactions - self.handle_new_payments(new_payments) + self.handle_new_balance(new_balance) except Exception as e: print(f"WARNING: wallet_manager_thread got exception {e}, ignorning.") print("Sleeping a while before re-fetching balance...") @@ -124,10 +127,10 @@ class LNBitsWallet(Wallet): response.close() try: payments_reply = json.loads(response_text) - print(f"Got payments: {payments_reply}") + #print(f"Got payments: {payments_reply}") new_payments = [] for payment in payments_reply: - print(f"Got payment: {payment}") + #print(f"Got payment: {payment}") amount = payment["amount"] amount = round(amount / 1000) comment = payment["memo"] @@ -182,25 +185,7 @@ class NWCWallet(Wallet): self.relay_manager.add_subscription(self.subscription_id, self.filters) time.sleep(1) - # Create get_balance request - balance_request = { - "method": "get_balance", - "params": {} - } - print(f"DEBUG: Created balance request: {balance_request}") - print(f"DEBUG: Creating encrypted DM to wallet pubkey: {self.wallet_pubkey}") - dm = EncryptedDirectMessage( - recipient_pubkey=self.wallet_pubkey, - cleartext_content=json.dumps(balance_request) - ) - print(f"DEBUG: Signing DM {json.dumps(dm)} with private key") - self.private_key.sign_event(dm) # sign also does encryption if it's a encrypted dm - print(f"DEBUG: Publishing subscription request") - request_message = [ClientMessageType.REQUEST, self.subscription_id] - request_message.extend(self.filters.to_json_array()) - self.relay_manager.publish_message(json.dumps(request_message)) - print(f"DEBUG: Publishing encrypted DM") - self.relay_manager.publish_event(dm) + self.fetch_balance() print(f"DEBUG: Waiting for incoming NWC events...") while self.keep_running: @@ -236,6 +221,30 @@ class NWCWallet(Wallet): print("NWCWallet: manage_wallet_thread stopping, closing connections...") self.relay_manager.close_connections() + def fetch_balance(self): + # Create get_balance request + balance_request = { + "method": "get_balance", + "params": {} + } + print(f"DEBUG: Created balance request: {balance_request}") + print(f"DEBUG: Creating encrypted DM to wallet pubkey: {self.wallet_pubkey}") + dm = EncryptedDirectMessage( + recipient_pubkey=self.wallet_pubkey, + cleartext_content=json.dumps(balance_request) + ) + print(f"DEBUG: Signing DM {json.dumps(dm)} with private key") + self.private_key.sign_event(dm) # sign also does encryption if it's a encrypted dm + print(f"DEBUG: Publishing subscription request") + request_message = [ClientMessageType.REQUEST, self.subscription_id] + request_message.extend(self.filters.to_json_array()) + self.relay_manager.publish_message(json.dumps(request_message)) + print(f"DEBUG: Publishing encrypted DM") + self.relay_manager.publish_event(dm) + + def fetch_payments(self): + # just send the message to request payments and they'll be handled by the main loop + pass def parse_nwc_url(self, nwc_url): """Parse Nostr Wallet Connect URL to extract pubkey, relay, secret, and lud16."""