From f5e8055bf519e4fd4df742b8c790a51ce59b775d Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Thu, 5 Nov 2026 09:56:36 -0600 Subject: [PATCH] Improve login flow a smidge by showing an error message and re-enabling the sign in button on failure --- .gitignore | 1 + lib/dialogs/account.rb | 10 +++++++--- lib/dialogs/alert.rb | 29 +++++++++++++++++++++++++++++ lib/window.rb | 6 ++++++ lib/worker/w3dhub_api.rb | 10 ++++++++++ w3d_hub_linux_launcher.rb | 1 + 6 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 lib/dialogs/alert.rb diff --git a/.gitignore b/.gitignore index c21f7f1..9065f37 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.*/ pkg/ *.json *.xml diff --git a/lib/dialogs/account.rb b/lib/dialogs/account.rb index d967117..0f86e26 100644 --- a/lib/dialogs/account.rb +++ b/lib/dialogs/account.rb @@ -68,10 +68,14 @@ module W3DHubLauncher # FIXME: Retry? Show error? ??? pp settings_result end + else + dialog( + Dialog::Alert, + title: "Failed to sign in", + message: "If you have failed 3 or more times in a row, wait about 15 minutes and try again." + ) + btn.enabled = true end - - # FIXME: Show error message! - pp result end end end diff --git a/lib/dialogs/alert.rb b/lib/dialogs/alert.rb new file mode 100644 index 0000000..8f14475 --- /dev/null +++ b/lib/dialogs/alert.rb @@ -0,0 +1,29 @@ +module W3DHubLauncher + class Dialog + class Alert < W3DHubLauncher::Dialog + def setup + super + + stack(width: 1.0, max_width: 800, height: 1.0, max_height: 480, style_class: [:dialog]) do + flow(width: 1.0, background_nine_slice: NINE_SLICE_ROUNDED_TOP, background_nine_slice_from_edge: NINE_SLICE_EDGE, background_nine_slice_color: 0) do + banner @options[:title] || "", width: 1.0, text_align: :center + end + + stack(style_class: [:dialog_container]) do + tagline @options[:message] || "" + end + + flow(width: 1.0, padding: PADDING, background_nine_slice: NINE_SLICE_ROUNDED_BOTTOM, background_nine_slice_from_edge: NINE_SLICE_EDGE, background_nine_slice_color: 0) do + flow(fill: true) + + button "Close", **CTA_BUTTON_THEME do + pop_state + end + + flow(fill: true) + end + end + end + end + end +end diff --git a/lib/window.rb b/lib/window.rb index 5beb1f1..671c288 100644 --- a/lib/window.rb +++ b/lib/window.rb @@ -44,6 +44,12 @@ module W3DHubLauncher MemCache[:servers].delete(game_server) if game_server end + CyberarmEngine::EventBus.subscribe("application_changed") do |payload| + # pp payload + # SDL 3.6 required + # SDL.ShowNotification(NAME, "Application Changed Event", nil, nil, 0) #(payload["application"]["name"], payload["state"]) + end + push_state(States::Boot) # push_state(States::Interface) end diff --git a/lib/worker/w3dhub_api.rb b/lib/worker/w3dhub_api.rb index a6e1c99..c8ed1fa 100644 --- a/lib/worker/w3dhub_api.rb +++ b/lib/worker/w3dhub_api.rb @@ -106,6 +106,11 @@ module W3DHubLauncher if response.okay? hash = JSON.parse(response.data) + if hash["error"] + result.error = hash["error"] + return result + end + user_details_result = fetch_user_details(Integer(hash["userid"])) user_details_hash = user_details_result.okay? ? JSON.parse(user_details_result.data) : {} @@ -134,6 +139,11 @@ module W3DHubLauncher if response.okay? hash = JSON.parse(response.data) + if hash["error"] + result.error = hash["error"] + return result + end + user_details_result = fetch_user_details(Integer(hash["userid"])) user_details_hash = user_details_result.okay? ? JSON.parse(user_details_result.data) : {} diff --git a/w3d_hub_linux_launcher.rb b/w3d_hub_linux_launcher.rb index 5aa1495..14ac716 100644 --- a/w3d_hub_linux_launcher.rb +++ b/w3d_hub_linux_launcher.rb @@ -38,6 +38,7 @@ require_relative "lib/pages/server_browser" require_relative "lib/pages/boot/terms" require_relative "lib/pages/boot/initial_setup" require_relative "lib/pages/boot/start_up" +require_relative "lib/dialogs/alert" require_relative "lib/dialogs/about" require_relative "lib/dialogs/downloads" require_relative "lib/dialogs/server"