From ee384843e9e0cd2d0e7d3f9e34a7e2b3d9fe4469 Mon Sep 17 00:00:00 2001 From: William JCM Date: Wed, 28 Jul 2021 14:17:21 +0200 Subject: [PATCH] SaveTool: launch the thread, and add basic response handling. --- src/SaveTool/SaveTool.cpp | 18 +++++++++++++++++- src/SaveTool/SaveTool_drawMainMenu.cpp | 5 ++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/SaveTool/SaveTool.cpp b/src/SaveTool/SaveTool.cpp index 92fd3a4..b26036d 100644 --- a/src/SaveTool/SaveTool.cpp +++ b/src/SaveTool/SaveTool.cpp @@ -133,6 +133,11 @@ SaveTool::SaveTool(const Arguments& arguments): } initialiseConfiguration(); + + if(_checkUpdatesOnStartup) { + _thread = std::thread{[this]{ checkForUpdates(); }}; + _queue.addToast(Toast::Type::Default, "Checking for updates..."); + } } SaveTool::~SaveTool() { @@ -286,7 +291,18 @@ void SaveTool::initEvent(SDL_Event& event) { void SaveTool::updateCheckEvent(SDL_Event& event) { _thread.join(); - // TODO: implement + cpr::Response r{std::move(*static_cast(event.user.data1))}; + delete static_cast(event.user.data1); + + if(r.elapsed > 10.0) { + _queue.addToast(Toast::Type::Error, "The request timed out."); + return; + } + + if(r.status_code != 200) { + _queue.addToast(Toast::Type::Error, Utility::formatString("The request failed with error code {}: {}", r.status_code, r.reason)); + return; + } } void SaveTool::initialiseConfiguration() { diff --git a/src/SaveTool/SaveTool_drawMainMenu.cpp b/src/SaveTool/SaveTool_drawMainMenu.cpp index f86fde9..2eadc9c 100644 --- a/src/SaveTool/SaveTool_drawMainMenu.cpp +++ b/src/SaveTool/SaveTool_drawMainMenu.cpp @@ -62,7 +62,10 @@ void SaveTool::drawMainMenu() { ImGui::Checkbox("Check for updates on startup", &_checkUpdatesOnStartup); ImGui::SameLine(); - ImGui::Button(ICON_FA_SYNC_ALT " Check now"); + if(ImGui::Button(ICON_FA_SYNC_ALT " Check now")) { + _queue.addToast(Toast::Type::Default, "Checking for updates..."); + _thread = std::thread{[this]{ checkForUpdates(); }}; + } ImGui::EndMenu(); }