@@ -35,6 +35,13 @@ def are_payment_lists_equal(self, list1, list2):
3535 return False
3636 return all (p1 == p2 for p1 , p2 in zip (list1 , list2 ))
3737
38+ def handle_new_balance (self , new_balance ):
39+ if new_balance != self .last_known_balance :
40+ self .last_known_balance = new_balance
41+ self .balance_updated_cb ()
42+ new_payments = self .fetch_payments () # if the balance changed, then re-list transactions
43+ self .handle_new_payments (new_payments )
44+
3845 def handle_new_payments (self , new_payments ):
3946 print ("handle_new_payments" )
4047 if not self .are_payment_lists_equal (self .payment_list , new_payments ):
@@ -76,11 +83,7 @@ def wallet_manager_thread(self):
7683 while self .keep_running :
7784 try :
7885 new_balance = self .fetch_balance ()
79- if new_balance != self .last_known_balance :
80- self .last_known_balance = new_balance
81- self .balance_updated_cb ()
82- new_payments = self .fetch_payments () # if the balance changed, then re-list transactions
83- self .handle_new_payments (new_payments )
86+ self .handle_new_balance (new_balance )
8487 except Exception as e :
8588 print (f"WARNING: wallet_manager_thread got exception { e } , ignorning." )
8689 print ("Sleeping a while before re-fetching balance..." )
@@ -124,10 +127,10 @@ def fetch_payments(self):
124127 response .close ()
125128 try :
126129 payments_reply = json .loads (response_text )
127- print (f"Got payments: { payments_reply } " )
130+ # print(f"Got payments: {payments_reply}")
128131 new_payments = []
129132 for payment in payments_reply :
130- print (f"Got payment: { payment } " )
133+ # print(f"Got payment: {payment}")
131134 amount = payment ["amount" ]
132135 amount = round (amount / 1000 )
133136 comment = payment ["memo" ]
@@ -182,25 +185,7 @@ def wallet_manager_thread(self):
182185 self .relay_manager .add_subscription (self .subscription_id , self .filters )
183186 time .sleep (1 )
184187
185- # Create get_balance request
186- balance_request = {
187- "method" : "get_balance" ,
188- "params" : {}
189- }
190- print (f"DEBUG: Created balance request: { balance_request } " )
191- print (f"DEBUG: Creating encrypted DM to wallet pubkey: { self .wallet_pubkey } " )
192- dm = EncryptedDirectMessage (
193- recipient_pubkey = self .wallet_pubkey ,
194- cleartext_content = json .dumps (balance_request )
195- )
196- print (f"DEBUG: Signing DM { json .dumps (dm )} with private key" )
197- self .private_key .sign_event (dm ) # sign also does encryption if it's a encrypted dm
198- print (f"DEBUG: Publishing subscription request" )
199- request_message = [ClientMessageType .REQUEST , self .subscription_id ]
200- request_message .extend (self .filters .to_json_array ())
201- self .relay_manager .publish_message (json .dumps (request_message ))
202- print (f"DEBUG: Publishing encrypted DM" )
203- self .relay_manager .publish_event (dm )
188+ self .fetch_balance ()
204189
205190 print (f"DEBUG: Waiting for incoming NWC events..." )
206191 while self .keep_running :
@@ -236,6 +221,30 @@ def wallet_manager_thread(self):
236221 print ("NWCWallet: manage_wallet_thread stopping, closing connections..." )
237222 self .relay_manager .close_connections ()
238223
224+ def fetch_balance (self ):
225+ # Create get_balance request
226+ balance_request = {
227+ "method" : "get_balance" ,
228+ "params" : {}
229+ }
230+ print (f"DEBUG: Created balance request: { balance_request } " )
231+ print (f"DEBUG: Creating encrypted DM to wallet pubkey: { self .wallet_pubkey } " )
232+ dm = EncryptedDirectMessage (
233+ recipient_pubkey = self .wallet_pubkey ,
234+ cleartext_content = json .dumps (balance_request )
235+ )
236+ print (f"DEBUG: Signing DM { json .dumps (dm )} with private key" )
237+ self .private_key .sign_event (dm ) # sign also does encryption if it's a encrypted dm
238+ print (f"DEBUG: Publishing subscription request" )
239+ request_message = [ClientMessageType .REQUEST , self .subscription_id ]
240+ request_message .extend (self .filters .to_json_array ())
241+ self .relay_manager .publish_message (json .dumps (request_message ))
242+ print (f"DEBUG: Publishing encrypted DM" )
243+ self .relay_manager .publish_event (dm )
244+
245+ def fetch_payments (self ):
246+ # just send the message to request payments and they'll be handled by the main loop
247+ pass
239248
240249 def parse_nwc_url (self , nwc_url ):
241250 """Parse Nostr Wallet Connect URL to extract pubkey, relay, secret, and lud16."""
0 commit comments