Skip to content

Commit a894784

Browse files
wallet: check keep_running more often
1 parent 0219da2 commit a894784

1 file changed

Lines changed: 27 additions & 9 deletions

File tree

  • internal_filesystem/apps/com.lightningpiggy.displaywallet/assets

internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/wallet.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ def __str__(self):
117117
return "NWCWallet"
118118

119119
def handle_new_balance(self, new_balance, fetchPaymentsIfChanged=True):
120+
if not self.keep_running:
121+
return
120122
if new_balance != self.last_known_balance:
121123
print("Balance changed!")
122124
self.last_known_balance = new_balance
@@ -127,11 +129,15 @@ def handle_new_balance(self, new_balance, fetchPaymentsIfChanged=True):
127129
self.fetch_payments() # if the balance changed, then re-list transactions
128130

129131
def handle_new_payment(self, new_payment):
132+
if not self.keep_running:
133+
return
130134
print("handle_new_payment")
131135
self.payment_list.add(new_payment)
132136
self.payments_updated_cb()
133137

134138
def handle_new_payments(self, new_payments):
139+
if not self.keep_running:
140+
return
135141
print("handle_new_payments")
136142
if self.payment_list != new_payments:
137143
print("new list of payments")
@@ -163,6 +169,7 @@ def __init__(self, lnbits_url, lnbits_readkey):
163169
super().__init__()
164170
self.lnbits_url = lnbits_url
165171
self.lnbits_readkey = lnbits_readkey
172+
self.ws = None
166173

167174

168175
def parseLNBitsPayment(self, transaction):
@@ -215,14 +222,16 @@ def wallet_manager_thread(self):
215222
new_balance = self.fetch_balance() # TODO: only do this every 60 seconds, but loop the main thread more frequently
216223
except Exception as e:
217224
print(f"WARNING: wallet_manager_thread got exception {e}, ignorning.")
218-
if not websocket_running: # after
225+
if not websocket_running and self.keep_running: # after
219226
websocket_running = True
220227
_thread.stack_size(mpos.apps.good_stack_size())
221228
_thread.start_new_thread(self.websocket_thread, ())
222-
print("Sleeping a while before re-fetching balance...")
223-
time.sleep(60)
229+
if self.keep_running:
230+
print("Sleeping a while before re-fetching balance...")
231+
time.sleep(60)
224232
print("wallet_manager_thread stopping")
225-
self.ws.close()
233+
if self.ws:
234+
self.ws.close()
226235

227236
def fetch_balance(self):
228237
walleturl = self.lnbits_url + "/api/v1/wallet"
@@ -234,7 +243,7 @@ def fetch_balance(self):
234243
response = requests.get(walleturl, timeout=10, headers=headers)
235244
except Exception as e:
236245
print("fetch_balance: get request failed:", e)
237-
if response and response.status_code == 200:
246+
if response and response.status_code == 200 and self.keep_running:
238247
response_text = response.text
239248
print(f"Got response text: {response_text}")
240249
response.close()
@@ -258,7 +267,7 @@ def fetch_payments(self):
258267
response = requests.get(paymentsurl, timeout=10, headers=headers)
259268
except Exception as e:
260269
print("fetch_payments: get request failed:", e)
261-
if response and response.status_code == 200:
270+
if response and response.status_code == 200 and self.keep_running:
262271
response_text = response.text
263272
print(f"Got response text: {response_text}")
264273
response.close()
@@ -309,9 +318,11 @@ def wallet_manager_thread(self):
309318
if self.relay_manager.relays[self.relay].connected is True:
310319
self.connected = True
311320
break
321+
elif not self.keep_running:
322+
break
312323
print("Waiting for relay connection...")
313-
if not self.connected:
314-
print(f"ERROR: could not connect to NWC relay {self.relay}, aborting...")
324+
if not self.connected or not self.keep_running:
325+
print(f"ERROR: could not connect to NWC relay {self.relay} or not self.keep_running, aborting...")
315326
# TODO: call an error callback to notify the user
316327
return
317328

@@ -329,7 +340,10 @@ def wallet_manager_thread(self):
329340
request_message = [ClientMessageType.REQUEST, self.subscription_id]
330341
request_message.extend(self.filters.to_json_array())
331342
self.relay_manager.publish_message(json.dumps(request_message))
332-
time.sleep(5)
343+
for _ in range(10):
344+
if not self.keep_running:
345+
return
346+
time.sleep(0.5)
333347

334348
self.fetch_balance()
335349

@@ -390,6 +404,8 @@ def wallet_manager_thread(self):
390404
self.relay_manager.close_connections()
391405

392406
def fetch_balance(self):
407+
if not self.keep_running:
408+
return
393409
# Create get_balance request
394410
balance_request = {
395411
"method": "get_balance",
@@ -407,6 +423,8 @@ def fetch_balance(self):
407423
self.relay_manager.publish_event(dm)
408424

409425
def fetch_payments(self):
426+
if not self.keep_running:
427+
return
410428
# Create get_balance request
411429
list_transactions = {
412430
"method": "list_transactions",

0 commit comments

Comments
 (0)