refactor: version check
This commit is contained in:
parent
6599f6f1ee
commit
2a6a19f12b
@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "../../core/global/globals.hpp"
|
#include "../../core/global/globals.hpp"
|
||||||
|
#include "../../helper/version/check.hpp"
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
|
|
||||||
namespace nlohmann
|
namespace nlohmann
|
||||||
@ -147,6 +148,19 @@ namespace nlohmann
|
|||||||
j.at("settings").get_to(obj.settings);
|
j.at("settings").get_to(obj.settings);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
template <> struct adl_serializer<Soundux::Objects::VersionStatus>
|
||||||
|
{
|
||||||
|
static void to_json(json &j, const Soundux::Objects::VersionStatus &obj)
|
||||||
|
{
|
||||||
|
j = {{"current", obj.current}, {"latest", obj.latest}, {"outdated", obj.outdated}};
|
||||||
|
}
|
||||||
|
static void from_json(const json &j, Soundux::Objects::VersionStatus &obj)
|
||||||
|
{
|
||||||
|
j.at("latest").get_to(obj.latest);
|
||||||
|
j.at("current").get_to(obj.current);
|
||||||
|
j.at("outdated").get_to(obj.outdated);
|
||||||
|
}
|
||||||
|
};
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
template <> struct adl_serializer<Soundux::Objects::PulseRecordingStream>
|
template <> struct adl_serializer<Soundux::Objects::PulseRecordingStream>
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
#include "check.hpp"
|
#include "check.hpp"
|
||||||
#include <fancy.hpp>
|
#include <fancy.hpp>
|
||||||
#include <json.hpp>
|
#include <json.hpp>
|
||||||
|
#include <optional>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
|
||||||
httplib::Client VersionCheck::client("https://api.github.com");
|
httplib::Client VersionCheck::client("https://api.github.com");
|
||||||
|
|
||||||
bool VersionCheck::isLatest()
|
std::optional<Soundux::Objects::VersionStatus> VersionCheck::getStatus()
|
||||||
{
|
{
|
||||||
auto githubTags = client.Get("/repos/Soundux/Soundux/tags");
|
auto githubTags = client.Get("/repos/Soundux/Soundux/tags");
|
||||||
|
|
||||||
@ -26,14 +27,7 @@ bool VersionCheck::isLatest()
|
|||||||
{
|
{
|
||||||
if (match[1].matched)
|
if (match[1].matched)
|
||||||
{
|
{
|
||||||
if (match[1] != SOUNDUX_VERSION)
|
return Soundux::Objects::VersionStatus{SOUNDUX_VERSION, match[1], match[1] != SOUNDUX_VERSION};
|
||||||
{
|
|
||||||
Fancy::fancy.logTime().warning() << "Current version is " << SOUNDUX_VERSION
|
|
||||||
<< " latest version is " << match[1] << std::endl;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Fancy::fancy.logTime().success() << "You are using the latest version of soundux" << std::endl;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
Fancy::fancy.logTime().warning() << "Failed to fetch latest version" << std::endl;
|
Fancy::fancy.logTime().warning() << "Failed to fetch latest version" << std::endl;
|
||||||
}
|
}
|
||||||
@ -56,5 +50,5 @@ bool VersionCheck::isLatest()
|
|||||||
{
|
{
|
||||||
Fancy::fancy.logTime().warning() << "Request failed!" << std::endl;
|
Fancy::fancy.logTime().warning() << "Request failed!" << std::endl;
|
||||||
}
|
}
|
||||||
return true;
|
return std::nullopt;
|
||||||
}
|
}
|
@ -1,10 +1,24 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <httplib.h>
|
#include <httplib.h>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace Soundux
|
||||||
|
{
|
||||||
|
namespace Objects
|
||||||
|
{
|
||||||
|
struct VersionStatus
|
||||||
|
{
|
||||||
|
std::string current;
|
||||||
|
std::string latest;
|
||||||
|
bool outdated;
|
||||||
|
};
|
||||||
|
} // namespace Objects
|
||||||
|
} // namespace Soundux
|
||||||
|
|
||||||
class VersionCheck
|
class VersionCheck
|
||||||
{
|
{
|
||||||
static httplib::Client client;
|
static httplib::Client client;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static bool isLatest();
|
static std::optional<Soundux::Objects::VersionStatus> getStatus();
|
||||||
};
|
};
|
@ -78,7 +78,7 @@ namespace Soundux::Objects
|
|||||||
[](const std::string &url) { return Globals::gYtdl.download(url); });
|
[](const std::string &url) { return Globals::gYtdl.download(url); });
|
||||||
webview.addCallback("stopYoutubeDLDownload", []() { Globals::gYtdl.killDownload(); });
|
webview.addCallback("stopYoutubeDLDownload", []() { Globals::gYtdl.killDownload(); });
|
||||||
webview.addCallback("getSystemInfo", []() -> std::string { return SystemInfo::getSummary(); });
|
webview.addCallback("getSystemInfo", []() -> std::string { return SystemInfo::getSummary(); });
|
||||||
webview.addCallback("isLatest", []() { return VersionCheck::isLatest(); });
|
webview.addCallback("updateCheck", []() { return VersionCheck::getStatus(); });
|
||||||
|
|
||||||
#if !defined(__linux__)
|
#if !defined(__linux__)
|
||||||
webview.addCallback("getOutputs", [this]() { return getOutputs(); });
|
webview.addCallback("getOutputs", [this]() { return getOutputs(); });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user