Skip to content

Commit c8774f6

Browse files
balance update works
1 parent 9b2d46b commit c8774f6

File tree

2 files changed

+34
-10
lines changed

2 files changed

+34
-10
lines changed

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
main_screen = None
1010
settings_screen = None
1111

12+
balance_label = None
13+
1214
# Settings screen implementation
1315
class SettingsScreen():
1416
def __init__(self):
@@ -185,7 +187,7 @@ def settings_button_tap(event):
185187
mpos.ui.load_screen(settings_screen)
186188

187189
def build_main_ui():
188-
global main_screen
190+
global main_screen, balance_label
189191
main_screen = lv.obj()
190192
main_screen.set_style_pad_all(10, 0)
191193
balance_label = lv.label(main_screen)
@@ -209,14 +211,18 @@ def build_main_ui():
209211
mpos.ui.load_screen(main_screen)
210212

211213

214+
def redraw_balance_cb(timer):
215+
global balance_label
216+
if balance_label.get_text() != str(wallet.last_known_balance):
217+
balance_label.set_text(str(wallet.last_known_balance))
218+
212219
def janitor_cb(timer):
213220
if lv.screen_active() != main_screen and lv.screen_active() != settings_screen:
214221
print("app backgrounded, cleaning up...")
215222
janitor.delete()
223+
redraw_timer.delete()
216224
if settings_screen:
217225
settings_screen.delete()
218-
219-
janitor = lv.timer_create(janitor_cb, 1000, None)
220226

221227
build_main_ui()
222228

@@ -236,4 +242,7 @@ def janitor_cb(timer):
236242
else:
237243
print(f"No or unsupported wallet type configured: '{wallet_type}'")
238244

245+
wallet.start_refresh_balance()
246+
redraw_timer = lv.timer_create(redraw_balance_cb, 1000, None)
239247

248+
janitor = lv.timer_create(janitor_cb, 1000, None)

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

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1+
import _thread
2+
import requests
3+
import json
4+
5+
import mpos.apps
6+
import mpos.time
17

28
class Wallet:
39

410
# These values could be loading from a cache.json file at __init__
511
last_known_balance = 0
6-
last_known_balance_timestamp = 0
12+
#last_known_balance_timestamp = 0
713

814
def __init__(self):
915
pass
@@ -22,24 +28,33 @@ def __init__(self, lnbits_url, lnbits_readkey):
2228
self.lnbits_url = lnbits_url
2329
self.lnbits_readkey = lnbits_readkey
2430

25-
def fetch_balance_thread():
31+
def fetch_balance_thread(self, lnbits_url, lnbits_readkey):
2632
print("fetch_balance_thread")
27-
walleturl = self.lnbits_url + "/api/v1/wallet"
33+
walleturl = lnbits_url + "/api/v1/wallet"
2834
headers = {
29-
"X-Api-Key": self.lnbits_readkey,
35+
"X-Api-Key": lnbits_readkey,
3036
}
3137
try:
32-
response = requests.get(self.lnbits_url, timeout=10, headers=headers)
38+
response = requests.get(walleturl, timeout=10, headers=headers)
3339
except Exception as e:
3440
print("GET request failed:", e)
3541
#lv.async_call(lambda l: please_wait_label.set_text(f"Error downloading app index: {e}"), None)
3642
if response and response.status_code == 200:
37-
print(f"Got response text: {response.text}")
43+
response_text = response.text
44+
print(f"Got response text: {response_text}")
3845
response.close()
46+
try:
47+
balance_reply = json.loads(response_text)
48+
print(f"Got balance: {balance_reply['balance']}")
49+
balance_msat = balance_reply['balance']
50+
self.last_known_balance = round(balance_msat / 1000)
51+
#self.last_known_balance_timestamp = mpos.time.epoch_seconds()
52+
except Exception as e:
53+
print(f"Could not parse reponse text '{response_text}' as JSON: {e}")
3954

4055
def start_refresh_balance(self):
4156
_thread.stack_size(mpos.apps.good_stack_size())
42-
_thread.start_new_thread(self.fetch_balance_thread, ())
57+
_thread.start_new_thread(self.fetch_balance_thread, (self.lnbits_url, self.lnbits_readkey))
4358

4459
class NWCWallet(Wallet):
4560

0 commit comments

Comments
 (0)