From b8aef5c5f350112336597614d3da33ccfd1466db Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 21 Jul 2021 01:43:58 +0800 Subject: [PATCH] merge "Updater interface modified" --- MeoAssistance/include/Updater.h | 3 ++- MeoAssistance/src/AsstCaller.cpp | 4 ++-- MeoAssistance/src/Updater.cpp | 21 ++++++++++++++------- MeoAsstGui/MainWindow.xaml | 2 +- MeoAsstGui/MainWindow.xaml.cs | 19 +++++++++++-------- Tools/Sanity/main.cpp | 7 ++++++- 6 files changed, 36 insertions(+), 20 deletions(-) diff --git a/MeoAssistance/include/Updater.h b/MeoAssistance/include/Updater.h index 710906bc3e..712e22a2fa 100644 --- a/MeoAssistance/include/Updater.h +++ b/MeoAssistance/include/Updater.h @@ -22,7 +22,8 @@ namespace asst { static Updater& instance(); - std::optional has_new_version(); + bool has_new_version(); + const VersionInfo & get_version_info() const noexcept; private: Updater() = default; diff --git a/MeoAssistance/src/AsstCaller.cpp b/MeoAssistance/src/AsstCaller.cpp index 493f6ddb28..481f77c98e 100644 --- a/MeoAssistance/src/AsstCaller.cpp +++ b/MeoAssistance/src/AsstCaller.cpp @@ -74,11 +74,11 @@ bool AsstGetParam(asst::Assistance* p_asst, const char* type, const char* param, bool CheckVersionUpdate(char* tag_buffer, int tag_bufsize, char* html_url_buffer, int html_bufsize, char* body_buffer, int body_bufsize) { - auto ret = asst::Updater::instance().has_new_version(); + bool ret = asst::Updater::instance().has_new_version(); if (!ret) { return false; } - auto info = std::move(ret).value(); + auto && info = asst::Updater::instance().get_version_info(); strcpy_s(tag_buffer, tag_bufsize, info.tag_name.c_str()); strcpy_s(html_url_buffer, html_bufsize, info.html_url.c_str()); strcpy_s(body_buffer, body_bufsize, info.body.c_str()); diff --git a/MeoAssistance/src/Updater.cpp b/MeoAssistance/src/Updater.cpp index b1ce4d7f0b..482d9f2a8b 100644 --- a/MeoAssistance/src/Updater.cpp +++ b/MeoAssistance/src/Updater.cpp @@ -18,17 +18,17 @@ Updater& Updater::instance() return unique_instance; } -std::optional Updater::has_new_version() +bool Updater::has_new_version() { auto req_ret = request_github_api(); if (!req_ret) { DebugTraceInfo("Requeset Error"); - return std::nullopt; + return false; } auto parse_ret = json::parser::parse(req_ret.value()); if (!parse_ret) { DebugTraceInfo("Parse Error"); - return std::nullopt; + return false; } json::value root = std::move(parse_ret).value(); @@ -46,19 +46,26 @@ std::optional Updater::has_new_version() } catch (json::exception& exp) { DebugTraceError("Json Error", exp.what()); - return std::nullopt; + return false; } if (m_lastest_version.tag_name > Version) { m_has_new_version = true; - return m_lastest_version; + return true; } else { - m_has_new_version = false; - return std::nullopt; + return false; } } +const VersionInfo & Updater::get_version_info() const noexcept +{ + if (!m_has_new_version) { + return VersionInfo(); + } + return m_lastest_version; +} + std::optional Updater::request_github_api() { HINTERNET h_session = ::InternetOpenA("GithubRelease", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); diff --git a/MeoAsstGui/MainWindow.xaml b/MeoAsstGui/MainWindow.xaml index 9262eb1802..81979bc875 100644 --- a/MeoAsstGui/MainWindow.xaml +++ b/MeoAsstGui/MainWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:MeoAsstGui" mc:Ignorable="d" - Title="MeoAssistance-明日方舟辅助" Height="500" Width="400"> + Title="Meo明日方舟辅助" Height="500" Width="400" Loaded="OnLoaded"> diff --git a/MeoAsstGui/MainWindow.xaml.cs b/MeoAsstGui/MainWindow.xaml.cs index aa8b3f6f75..e378b615e9 100644 --- a/MeoAsstGui/MainWindow.xaml.cs +++ b/MeoAsstGui/MainWindow.xaml.cs @@ -36,25 +36,28 @@ namespace MeoAsstGui private IntPtr p_asst; + UpdateDialog updateDialog; private DispatcherTimer update_times = new DispatcherTimer(); public MainWindow() { InitializeComponent(); - - UpdateDialog dialog = new UpdateDialog(); - dialog.CheckUpdateAndShowDialog(); - dialog.Close(); - - p_asst = CreateAsst(); - update_times.Tick += new EventHandler(updateExecTimes); - update_times.Interval = TimeSpan.FromSeconds(1); } ~MainWindow() { DestoryAsst(p_asst); } + private void OnLoaded(object sender, RoutedEventArgs e) + { + updateDialog = new UpdateDialog(); + updateDialog.CheckUpdateAndShowDialog(); + updateDialog.Close(); + + p_asst = CreateAsst(); + update_times.Tick += new EventHandler(updateExecTimes); + update_times.Interval = TimeSpan.FromSeconds(1); + } private void button_Click_startSanity(object sender, RoutedEventArgs e) { bool catched = AsstCatchSimulator(p_asst); diff --git a/Tools/Sanity/main.cpp b/Tools/Sanity/main.cpp index ccf3af5945..3de258a034 100644 --- a/Tools/Sanity/main.cpp +++ b/Tools/Sanity/main.cpp @@ -5,7 +5,12 @@ int main(int argc, char** argv) { using namespace asst; - auto up = Updater::instance().has_new_version(); + bool up = Updater::instance().has_new_version(); + if (up) { + auto && info = Updater::instance().get_version_info(); + std::cout << "°汾" << info.tag_name << std::endl; + std::cout << "ַ" << info.html_url << std::endl; + } Assistance asst;