Skip to content

Commit

Permalink
Try catch
Browse files Browse the repository at this point in the history
  • Loading branch information
Ketok4321 committed Aug 17, 2023
1 parent 5b5ebe6 commit 07ed372
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 36 deletions.
6 changes: 3 additions & 3 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ def fetch_servers(self):
try:
event_loop = asyncio.new_event_loop()

while self.servers == None or len(self.servers) == 0: # A proper fix would probably be better but this works too
self.servers = []
while len(self.servers) == 0: # A proper fix would probably be better but this works too
self.servers = event_loop.run_until_complete(get_servers())

event_loop.close()
Expand Down Expand Up @@ -71,7 +72,7 @@ def on_start_action(self, widget, _):
self.win.test_view.reset()
self.win.test_view.server = server.name

self.worker = SpeedtestWorker(self.win.test_view, server)
self.worker = SpeedtestWorker(self.win, server)
self.worker.start()

def on_back_action(self, widget, _):
Expand All @@ -82,7 +83,6 @@ def on_back_action(self, widget, _):
def on_retry_connect_action(self, widget, _):
thread = threading.Thread(target=self.fetch_servers, daemon=True)
thread.start()
#self.win.offline_view.toast_overlay.add_toast(Adw.Toast.new("Couldn't reconnect"))

def create_action(self, name, callback, shortcuts=None):
action = Gio.SimpleAction.new(name, None)
Expand Down
46 changes: 27 additions & 19 deletions src/speedtest_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
from .speedtest import ping, download, upload, perform_test

class SpeedtestWorker(threading.Thread):
def __init__(self, view, server):
def __init__(self, win, server):
super().__init__(name="SpeedtestWorker", daemon=True)

self.stop_event = threading.Event()
self.view = view
self.win = win
self.server = server

def run(self):
Expand All @@ -30,20 +30,28 @@ async def run_async(self):

await asyncio.sleep(0)

async def do_run(self): # TODO: Try except
GLib.idle_add(setattr, self.view, "ping", str(round(await ping(self.server))) + "ms")

def dlCallback(speed, progress):
self.view.updateGauge(self.view.download, speed)
self.view.progress.remove_css_class("up")
self.view.progress.add_css_class("dl")
self.view.progress.set_fraction(progress)

def upCallback(speed, progress):
self.view.updateGauge(self.view.upload, speed)
self.view.progress.remove_css_class("dl")
self.view.progress.add_css_class("up")
self.view.progress.set_fraction(progress)

await perform_test(download, self.server, lambda *args: GLib.idle_add(dlCallback, *args), 1 / 30)
await perform_test(upload, self.server, lambda *args: GLib.idle_add(upCallback, *args), 1 / 30)
async def do_run(self):
try:
view = self.win.test_view

_ping = await ping(self.server)

GLib.idle_add(setattr, view, "ping", str(round(_ping)) + "ms")

def dlCallback(speed, progress):
view.updateGauge(view.download, speed)
view.progress.remove_css_class("up")
view.progress.add_css_class("dl")
view.progress.set_fraction(progress)

def upCallback(speed, progress):
view.updateGauge(view.upload, speed)
view.progress.remove_css_class("dl")
view.progress.add_css_class("up")
view.progress.set_fraction(progress)

await perform_test(download, self.server, lambda *args: GLib.idle_add(dlCallback, *args), 1 / 30)
await perform_test(upload, self.server, lambda *args: GLib.idle_add(upCallback, *args), 1 / 30)
except Exception as e:
print(e)
GLib.idle_add(self.win.set_view, self.win.offline_view)
22 changes: 10 additions & 12 deletions src/ui/views/offline.blp
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,18 @@ template $OfflineView : Box {
orientation: vertical;
valign: center;

Adw.ToastOverlay toast_overlay { //TODO: Make so the toasts won't overlay on top of the button
Adw.StatusPage {
title: "Couldn't connect to the speedtest servers";
description: "Make sure you are connected to the internet and try again.";
icon-name: "network-offline-symbolic";
styles [ "compact" ]
Adw.StatusPage {
title: "Couldn't connect to the speedtest servers";
description: "Make sure you are connected to the internet and try again.";
icon-name: "network-offline-symbolic";
styles [ "compact" ]

Button {
halign: center;
Button {
halign: center;

label: "Retry";
action-name: "app.retry_connect";
styles [ "pill", "suggested-action" ]
}
label: "Retry";
action-name: "app.retry_connect";
styles [ "pill", "suggested-action" ]
}
}
}
2 changes: 0 additions & 2 deletions src/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,6 @@ def reset(self):
@Gtk.Template(resource_path="/xyz/ketok/Speedtest/ui/views/offline.ui")
class OfflineView(Gtk.Box):
__gtype_name__ = "OfflineView"

toast_overlay = Gtk.Template.Child()

def __init__(self, **kwargs):
super().__init__(**kwargs)

0 comments on commit 07ed372

Please sign in to comment.