refactor: change some ResourceAPI from NetJob to Task
This makes it easier to create resource apis that aren't network-based. Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
e62e1d9701
commit
ba677a8cb7
@ -28,6 +28,10 @@ class shared_qobject_ptr : public QSharedPointer<T> {
|
|||||||
constexpr shared_qobject_ptr(const shared_qobject_ptr<Derived>& other) : QSharedPointer<T>(other)
|
constexpr shared_qobject_ptr(const shared_qobject_ptr<Derived>& other) : QSharedPointer<T>(other)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
template <typename Derived>
|
||||||
|
constexpr shared_qobject_ptr(const QSharedPointer<Derived>& other) : QSharedPointer<T>(other)
|
||||||
|
{}
|
||||||
|
|
||||||
void reset() { QSharedPointer<T>::reset(); }
|
void reset() { QSharedPointer<T>::reset(); }
|
||||||
void reset(const shared_qobject_ptr<T>& other)
|
void reset(const shared_qobject_ptr<T>& other)
|
||||||
{
|
{
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
#include "modplatform/modrinth/ModrinthAPI.h"
|
#include "modplatform/modrinth/ModrinthAPI.h"
|
||||||
#include "modplatform/modrinth/ModrinthPackIndex.h"
|
#include "modplatform/modrinth/ModrinthPackIndex.h"
|
||||||
|
|
||||||
#include "net/NetJob.h"
|
|
||||||
|
|
||||||
static ModPlatform::ProviderCapabilities ProviderCaps;
|
static ModPlatform::ProviderCapabilities ProviderCaps;
|
||||||
|
|
||||||
static ModrinthAPI modrinth_api;
|
static ModrinthAPI modrinth_api;
|
||||||
@ -107,7 +105,7 @@ void EnsureMetadataTask::executeTask()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr version_task;
|
Task::Ptr version_task;
|
||||||
|
|
||||||
switch (m_provider) {
|
switch (m_provider) {
|
||||||
case (ModPlatform::ResourceProvider::MODRINTH):
|
case (ModPlatform::ResourceProvider::MODRINTH):
|
||||||
@ -127,7 +125,7 @@ void EnsureMetadataTask::executeTask()
|
|||||||
};
|
};
|
||||||
|
|
||||||
connect(version_task.get(), &Task::finished, this, [this, invalidade_leftover] {
|
connect(version_task.get(), &Task::finished, this, [this, invalidade_leftover] {
|
||||||
NetJob::Ptr project_task;
|
Task::Ptr project_task;
|
||||||
|
|
||||||
switch (m_provider) {
|
switch (m_provider) {
|
||||||
case (ModPlatform::ResourceProvider::MODRINTH):
|
case (ModPlatform::ResourceProvider::MODRINTH):
|
||||||
@ -149,7 +147,7 @@ void EnsureMetadataTask::executeTask()
|
|||||||
m_current_task = nullptr;
|
m_current_task = nullptr;
|
||||||
});
|
});
|
||||||
|
|
||||||
m_current_task = project_task.get();
|
m_current_task = project_task;
|
||||||
project_task->start();
|
project_task->start();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -164,7 +162,7 @@ void EnsureMetadataTask::executeTask()
|
|||||||
setStatus(tr("Requesting metadata information from %1 for '%2'...")
|
setStatus(tr("Requesting metadata information from %1 for '%2'...")
|
||||||
.arg(ProviderCaps.readableName(m_provider), m_mods.begin().value()->name()));
|
.arg(ProviderCaps.readableName(m_provider), m_mods.begin().value()->name()));
|
||||||
|
|
||||||
m_current_task = version_task.get();
|
m_current_task = version_task;
|
||||||
version_task->start();
|
version_task->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,7 +208,7 @@ void EnsureMetadataTask::emitFail(Mod* m, QString key, RemoveFromList remove)
|
|||||||
|
|
||||||
// Modrinth
|
// Modrinth
|
||||||
|
|
||||||
NetJob::Ptr EnsureMetadataTask::modrinthVersionsTask()
|
Task::Ptr EnsureMetadataTask::modrinthVersionsTask()
|
||||||
{
|
{
|
||||||
auto hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first();
|
auto hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first();
|
||||||
|
|
||||||
@ -221,7 +219,7 @@ NetJob::Ptr EnsureMetadataTask::modrinthVersionsTask()
|
|||||||
if (!ver_task)
|
if (!ver_task)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
connect(ver_task.get(), &NetJob::succeeded, this, [this, response] {
|
connect(ver_task.get(), &Task::succeeded, this, [this, response] {
|
||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
@ -260,14 +258,14 @@ NetJob::Ptr EnsureMetadataTask::modrinthVersionsTask()
|
|||||||
return ver_task;
|
return ver_task;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
Task::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
||||||
{
|
{
|
||||||
QHash<QString, QString> addonIds;
|
QHash<QString, QString> addonIds;
|
||||||
for (auto const& data : m_temp_versions)
|
for (auto const& data : m_temp_versions)
|
||||||
addonIds.insert(data.addonId.toString(), data.hash);
|
addonIds.insert(data.addonId.toString(), data.hash);
|
||||||
|
|
||||||
auto response = new QByteArray();
|
auto response = new QByteArray();
|
||||||
NetJob::Ptr proj_task;
|
Task::Ptr proj_task;
|
||||||
|
|
||||||
if (addonIds.isEmpty()) {
|
if (addonIds.isEmpty()) {
|
||||||
qWarning() << "No addonId found!";
|
qWarning() << "No addonId found!";
|
||||||
@ -281,7 +279,7 @@ NetJob::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
|||||||
if (!proj_task)
|
if (!proj_task)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
connect(proj_task.get(), &NetJob::succeeded, this, [this, response, addonIds] {
|
connect(proj_task.get(), &Task::succeeded, this, [this, response, addonIds] {
|
||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
auto doc = QJsonDocument::fromJson(*response, &parse_error);
|
auto doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
@ -335,7 +333,7 @@ NetJob::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Flame
|
// Flame
|
||||||
NetJob::Ptr EnsureMetadataTask::flameVersionsTask()
|
Task::Ptr EnsureMetadataTask::flameVersionsTask()
|
||||||
{
|
{
|
||||||
auto* response = new QByteArray();
|
auto* response = new QByteArray();
|
||||||
|
|
||||||
@ -400,7 +398,7 @@ NetJob::Ptr EnsureMetadataTask::flameVersionsTask()
|
|||||||
return ver_task;
|
return ver_task;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr EnsureMetadataTask::flameProjectsTask()
|
Task::Ptr EnsureMetadataTask::flameProjectsTask()
|
||||||
{
|
{
|
||||||
QHash<QString, QString> addonIds;
|
QHash<QString, QString> addonIds;
|
||||||
for (auto const& hash : m_mods.keys()) {
|
for (auto const& hash : m_mods.keys()) {
|
||||||
@ -414,7 +412,7 @@ NetJob::Ptr EnsureMetadataTask::flameProjectsTask()
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto response = new QByteArray();
|
auto response = new QByteArray();
|
||||||
NetJob::Ptr proj_task;
|
Task::Ptr proj_task;
|
||||||
|
|
||||||
if (addonIds.isEmpty()) {
|
if (addonIds.isEmpty()) {
|
||||||
qWarning() << "No addonId found!";
|
qWarning() << "No addonId found!";
|
||||||
@ -428,7 +426,7 @@ NetJob::Ptr EnsureMetadataTask::flameProjectsTask()
|
|||||||
if (!proj_task)
|
if (!proj_task)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
connect(proj_task.get(), &NetJob::succeeded, this, [this, response, addonIds] {
|
connect(proj_task.get(), &Task::succeeded, this, [this, response, addonIds] {
|
||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
auto doc = QJsonDocument::fromJson(*response, &parse_error);
|
auto doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
|
@ -28,11 +28,11 @@ class EnsureMetadataTask : public Task {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// FIXME: Move to their own namespace
|
// FIXME: Move to their own namespace
|
||||||
auto modrinthVersionsTask() -> NetJob::Ptr;
|
auto modrinthVersionsTask() -> Task::Ptr;
|
||||||
auto modrinthProjectsTask() -> NetJob::Ptr;
|
auto modrinthProjectsTask() -> Task::Ptr;
|
||||||
|
|
||||||
auto flameVersionsTask() -> NetJob::Ptr;
|
auto flameVersionsTask() -> Task::Ptr;
|
||||||
auto flameProjectsTask() -> NetJob::Ptr;
|
auto flameProjectsTask() -> Task::Ptr;
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
enum class RemoveFromList {
|
enum class RemoveFromList {
|
||||||
@ -61,5 +61,5 @@ class EnsureMetadataTask : public Task {
|
|||||||
|
|
||||||
QHash<QString, ModPlatform::IndexedVersion> m_temp_versions;
|
QHash<QString, ModPlatform::IndexedVersion> m_temp_versions;
|
||||||
ConcurrentTask* m_hashing_task;
|
ConcurrentTask* m_hashing_task;
|
||||||
NetJob* m_current_task;
|
Task::Ptr m_current_task;
|
||||||
};
|
};
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
@ -44,7 +45,7 @@
|
|||||||
#include "../Version.h"
|
#include "../Version.h"
|
||||||
|
|
||||||
#include "modplatform/ModIndex.h"
|
#include "modplatform/ModIndex.h"
|
||||||
#include "net/NetJob.h"
|
#include "tasks/Task.h"
|
||||||
|
|
||||||
/* Simple class with a common interface for interacting with APIs */
|
/* Simple class with a common interface for interacting with APIs */
|
||||||
class ResourceAPI {
|
class ResourceAPI {
|
||||||
@ -113,28 +114,28 @@ class ResourceAPI {
|
|||||||
[[nodiscard]] virtual auto getSortingMethods() const -> QList<SortingMethod> = 0;
|
[[nodiscard]] virtual auto getSortingMethods() const -> QList<SortingMethod> = 0;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
[[nodiscard]] virtual NetJob::Ptr searchProjects(SearchArgs&&, SearchCallbacks&&) const
|
[[nodiscard]] virtual Task::Ptr searchProjects(SearchArgs&&, SearchCallbacks&&) const
|
||||||
{
|
{
|
||||||
qWarning() << "TODO";
|
qWarning() << "TODO";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
[[nodiscard]] virtual NetJob::Ptr getProject(QString addonId, QByteArray* response) const
|
[[nodiscard]] virtual Task::Ptr getProject(QString addonId, QByteArray* response) const
|
||||||
{
|
{
|
||||||
qWarning() << "TODO";
|
qWarning() << "TODO";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
[[nodiscard]] virtual NetJob::Ptr getProjects(QStringList addonIds, QByteArray* response) const
|
[[nodiscard]] virtual Task::Ptr getProjects(QStringList addonIds, QByteArray* response) const
|
||||||
{
|
{
|
||||||
qWarning() << "TODO";
|
qWarning() << "TODO";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] virtual NetJob::Ptr getProjectInfo(ProjectInfoArgs&&, ProjectInfoCallbacks&&) const
|
[[nodiscard]] virtual Task::Ptr getProjectInfo(ProjectInfoArgs&&, ProjectInfoCallbacks&&) const
|
||||||
{
|
{
|
||||||
qWarning() << "TODO";
|
qWarning() << "TODO";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
[[nodiscard]] virtual NetJob::Ptr getProjectVersions(VersionSearchArgs&&, VersionSearchCallbacks&&) const
|
[[nodiscard]] virtual Task::Ptr getProjectVersions(VersionSearchArgs&&, VersionSearchCallbacks&&) const
|
||||||
{
|
{
|
||||||
qWarning() << "TODO";
|
qWarning() << "TODO";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#include "net/Upload.h"
|
#include "net/Upload.h"
|
||||||
|
|
||||||
auto FlameAPI::matchFingerprints(const QList<uint>& fingerprints, QByteArray* response) -> NetJob::Ptr
|
Task::Ptr FlameAPI::matchFingerprints(const QList<uint>& fingerprints, QByteArray* response)
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Flame::MatchFingerprints"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Flame::MatchFingerprints"), APPLICATION->network());
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ auto FlameAPI::getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::Indexe
|
|||||||
return ver;
|
return ver;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr FlameAPI::getProjects(QStringList addonIds, QByteArray* response) const
|
Task::Ptr FlameAPI::getProjects(QStringList addonIds, QByteArray* response) const
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Flame::GetProjects"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Flame::GetProjects"), APPLICATION->network());
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ NetJob::Ptr FlameAPI::getProjects(QStringList addonIds, QByteArray* response) co
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr FlameAPI::getFiles(const QStringList& fileIds, QByteArray* response) const
|
Task::Ptr FlameAPI::getFiles(const QStringList& fileIds, QByteArray* response) const
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Flame::GetFiles"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Flame::GetFiles"), APPLICATION->network());
|
||||||
|
|
||||||
|
@ -10,9 +10,9 @@ class FlameAPI : public NetworkResourceAPI {
|
|||||||
|
|
||||||
auto getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::IndexedVersion;
|
auto getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::IndexedVersion;
|
||||||
|
|
||||||
NetJob::Ptr getProjects(QStringList addonIds, QByteArray* response) const override;
|
Task::Ptr getProjects(QStringList addonIds, QByteArray* response) const override;
|
||||||
NetJob::Ptr matchFingerprints(const QList<uint>& fingerprints, QByteArray* response);
|
Task::Ptr matchFingerprints(const QList<uint>& fingerprints, QByteArray* response);
|
||||||
NetJob::Ptr getFiles(const QStringList& fileIds, QByteArray* response) const;
|
Task::Ptr getFiles(const QStringList& fileIds, QByteArray* response) const;
|
||||||
|
|
||||||
[[nodiscard]] auto getSortingMethods() const -> QList<ResourceAPI::SortingMethod> override;
|
[[nodiscard]] auto getSortingMethods() const -> QList<ResourceAPI::SortingMethod> override;
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ bool FlameCreationTask::updateInstance()
|
|||||||
|
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
|
|
||||||
connect(job.get(), &NetJob::succeeded, this, [this, raw_response, fileIds, old_inst_dir, &old_files, old_minecraft_dir] {
|
connect(job.get(), &Task::succeeded, this, [this, raw_response, fileIds, old_inst_dir, &old_files, old_minecraft_dir] {
|
||||||
// Parse the API response
|
// Parse the API response
|
||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
auto doc = QJsonDocument::fromJson(*raw_response, &parse_error);
|
auto doc = QJsonDocument::fromJson(*raw_response, &parse_error);
|
||||||
@ -225,7 +225,7 @@ bool FlameCreationTask::updateInstance()
|
|||||||
m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path));
|
m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
connect(job.get(), &NetJob::finished, &loop, &QEventLoop::quit);
|
connect(job.get(), &Task::finished, &loop, &QEventLoop::quit);
|
||||||
|
|
||||||
m_process_update_file_info_job = job;
|
m_process_update_file_info_job = job;
|
||||||
job->start();
|
job->start();
|
||||||
|
@ -86,7 +86,7 @@ class FlameCreationTask final : public InstanceCreationTask {
|
|||||||
Flame::Manifest m_pack;
|
Flame::Manifest m_pack;
|
||||||
|
|
||||||
// Handle to allow aborting
|
// Handle to allow aborting
|
||||||
NetJob::Ptr m_process_update_file_info_job = nullptr;
|
Task::Ptr m_process_update_file_info_job = nullptr;
|
||||||
NetJob::Ptr m_files_job = nullptr;
|
NetJob::Ptr m_files_job = nullptr;
|
||||||
|
|
||||||
QString m_managed_id, m_managed_version_id;
|
QString m_managed_id, m_managed_version_id;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "modplatform/ModIndex.h"
|
#include "modplatform/ModIndex.h"
|
||||||
|
|
||||||
NetJob::Ptr NetworkResourceAPI::searchProjects(SearchArgs&& args, SearchCallbacks&& callbacks) const
|
Task::Ptr NetworkResourceAPI::searchProjects(SearchArgs&& args, SearchCallbacks&& callbacks) const
|
||||||
{
|
{
|
||||||
auto search_url_optional = getSearchURL(args);
|
auto search_url_optional = getSearchURL(args);
|
||||||
if (!search_url_optional.has_value()) {
|
if (!search_url_optional.has_value()) {
|
||||||
@ -50,7 +50,7 @@ NetJob::Ptr NetworkResourceAPI::searchProjects(SearchArgs&& args, SearchCallback
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr NetworkResourceAPI::getProjectInfo(ProjectInfoArgs&& args, ProjectInfoCallbacks&& callbacks) const
|
Task::Ptr NetworkResourceAPI::getProjectInfo(ProjectInfoArgs&& args, ProjectInfoCallbacks&& callbacks) const
|
||||||
{
|
{
|
||||||
auto response = new QByteArray();
|
auto response = new QByteArray();
|
||||||
auto job = getProject(args.pack.addonId.toString(), response);
|
auto job = getProject(args.pack.addonId.toString(), response);
|
||||||
@ -71,7 +71,7 @@ NetJob::Ptr NetworkResourceAPI::getProjectInfo(ProjectInfoArgs&& args, ProjectIn
|
|||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr NetworkResourceAPI::getProjectVersions(VersionSearchArgs&& args, VersionSearchCallbacks&& callbacks) const
|
Task::Ptr NetworkResourceAPI::getProjectVersions(VersionSearchArgs&& args, VersionSearchCallbacks&& callbacks) const
|
||||||
{
|
{
|
||||||
auto versions_url_optional = getVersionsURL(args);
|
auto versions_url_optional = getVersionsURL(args);
|
||||||
if (!versions_url_optional.has_value())
|
if (!versions_url_optional.has_value())
|
||||||
@ -104,7 +104,7 @@ NetJob::Ptr NetworkResourceAPI::getProjectVersions(VersionSearchArgs&& args, Ver
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr NetworkResourceAPI::getProject(QString addonId, QByteArray* response) const
|
Task::Ptr NetworkResourceAPI::getProject(QString addonId, QByteArray* response) const
|
||||||
{
|
{
|
||||||
auto project_url_optional = getInfoURL(addonId);
|
auto project_url_optional = getInfoURL(addonId);
|
||||||
if (!project_url_optional.has_value())
|
if (!project_url_optional.has_value())
|
||||||
|
@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
class NetworkResourceAPI : public ResourceAPI {
|
class NetworkResourceAPI : public ResourceAPI {
|
||||||
public:
|
public:
|
||||||
NetJob::Ptr searchProjects(SearchArgs&&, SearchCallbacks&&) const override;
|
Task::Ptr searchProjects(SearchArgs&&, SearchCallbacks&&) const override;
|
||||||
|
|
||||||
NetJob::Ptr getProject(QString addonId, QByteArray* response) const override;
|
Task::Ptr getProject(QString addonId, QByteArray* response) const override;
|
||||||
|
|
||||||
NetJob::Ptr getProjectInfo(ProjectInfoArgs&&, ProjectInfoCallbacks&&) const override;
|
Task::Ptr getProjectInfo(ProjectInfoArgs&&, ProjectInfoCallbacks&&) const override;
|
||||||
NetJob::Ptr getProjectVersions(VersionSearchArgs&&, VersionSearchCallbacks&&) const override;
|
Task::Ptr getProjectVersions(VersionSearchArgs&&, VersionSearchCallbacks&&) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
[[nodiscard]] virtual auto getSearchURL(SearchArgs const& args) const -> std::optional<QString> = 0;
|
[[nodiscard]] virtual auto getSearchURL(SearchArgs const& args) const -> std::optional<QString> = 0;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
#include "net/Upload.h"
|
#include "net/Upload.h"
|
||||||
|
|
||||||
auto ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray* response) -> NetJob::Ptr
|
Task::Ptr ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray* response)
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Modrinth::GetCurrentVersion"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Modrinth::GetCurrentVersion"), APPLICATION->network());
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ auto ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray*
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format, QByteArray* response) -> NetJob::Ptr
|
Task::Ptr ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format, QByteArray* response)
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Modrinth::GetCurrentVersions"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Modrinth::GetCurrentVersions"), APPLICATION->network());
|
||||||
|
|
||||||
@ -35,11 +35,11 @@ auto ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ModrinthAPI::latestVersion(QString hash,
|
Task::Ptr ModrinthAPI::latestVersion(QString hash,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
std::optional<std::list<Version>> mcVersions,
|
std::optional<std::list<Version>> mcVersions,
|
||||||
std::optional<ModLoaderTypes> loaders,
|
std::optional<ModLoaderTypes> loaders,
|
||||||
QByteArray* response) -> NetJob::Ptr
|
QByteArray* response)
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Modrinth::GetLatestVersion"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Modrinth::GetLatestVersion"), APPLICATION->network());
|
||||||
|
|
||||||
@ -67,11 +67,11 @@ auto ModrinthAPI::latestVersion(QString hash,
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ModrinthAPI::latestVersions(const QStringList& hashes,
|
Task::Ptr ModrinthAPI::latestVersions(const QStringList& hashes,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
std::optional<std::list<Version>> mcVersions,
|
std::optional<std::list<Version>> mcVersions,
|
||||||
std::optional<ModLoaderTypes> loaders,
|
std::optional<ModLoaderTypes> loaders,
|
||||||
QByteArray* response) -> NetJob::Ptr
|
QByteArray* response)
|
||||||
{
|
{
|
||||||
auto* netJob = new NetJob(QString("Modrinth::GetLatestVersions"), APPLICATION->network());
|
auto* netJob = new NetJob(QString("Modrinth::GetLatestVersions"), APPLICATION->network());
|
||||||
|
|
||||||
@ -101,14 +101,17 @@ auto ModrinthAPI::latestVersions(const QStringList& hashes,
|
|||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetJob::Ptr ModrinthAPI::getProjects(QStringList addonIds, QByteArray* response) const
|
Task::Ptr ModrinthAPI::getProjects(QStringList addonIds, QByteArray* response) const
|
||||||
{
|
{
|
||||||
auto netJob = new NetJob(QString("Modrinth::GetProjects"), APPLICATION->network());
|
auto netJob = new NetJob(QString("Modrinth::GetProjects"), APPLICATION->network());
|
||||||
auto searchUrl = getMultipleModInfoURL(addonIds);
|
auto searchUrl = getMultipleModInfoURL(addonIds);
|
||||||
|
|
||||||
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), response));
|
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), response));
|
||||||
|
|
||||||
QObject::connect(netJob, &NetJob::finished, [response, netJob] { delete response; netJob->deleteLater(); });
|
QObject::connect(netJob, &NetJob::finished, [response, netJob] {
|
||||||
|
delete response;
|
||||||
|
netJob->deleteLater();
|
||||||
|
});
|
||||||
|
|
||||||
return netJob;
|
return netJob;
|
||||||
}
|
}
|
||||||
|
@ -28,25 +28,25 @@ class ModrinthAPI : public NetworkResourceAPI {
|
|||||||
public:
|
public:
|
||||||
auto currentVersion(QString hash,
|
auto currentVersion(QString hash,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
QByteArray* response) -> NetJob::Ptr;
|
QByteArray* response) -> Task::Ptr;
|
||||||
|
|
||||||
auto currentVersions(const QStringList& hashes,
|
auto currentVersions(const QStringList& hashes,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
QByteArray* response) -> NetJob::Ptr;
|
QByteArray* response) -> Task::Ptr;
|
||||||
|
|
||||||
auto latestVersion(QString hash,
|
auto latestVersion(QString hash,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
std::optional<std::list<Version>> mcVersions,
|
std::optional<std::list<Version>> mcVersions,
|
||||||
std::optional<ModLoaderTypes> loaders,
|
std::optional<ModLoaderTypes> loaders,
|
||||||
QByteArray* response) -> NetJob::Ptr;
|
QByteArray* response) -> Task::Ptr;
|
||||||
|
|
||||||
auto latestVersions(const QStringList& hashes,
|
auto latestVersions(const QStringList& hashes,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
std::optional<std::list<Version>> mcVersions,
|
std::optional<std::list<Version>> mcVersions,
|
||||||
std::optional<ModLoaderTypes> loaders,
|
std::optional<ModLoaderTypes> loaders,
|
||||||
QByteArray* response) -> NetJob::Ptr;
|
QByteArray* response) -> Task::Ptr;
|
||||||
|
|
||||||
NetJob::Ptr getProjects(QStringList addonIds, QByteArray* response) const override;
|
Task::Ptr getProjects(QStringList addonIds, QByteArray* response) const override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
[[nodiscard]] auto getSortingMethods() const -> QList<ResourceAPI::SortingMethod> override;
|
[[nodiscard]] auto getSortingMethods() const -> QList<ResourceAPI::SortingMethod> override;
|
||||||
|
@ -175,7 +175,7 @@ void ModrinthCheckUpdate::executeTask()
|
|||||||
setStatus(tr("Waiting for the API response from Modrinth..."));
|
setStatus(tr("Waiting for the API response from Modrinth..."));
|
||||||
setProgress(1, 3);
|
setProgress(1, 3);
|
||||||
|
|
||||||
m_net_job = job.get();
|
m_net_job = qSharedPointerObjectCast<NetJob, Task>(job);
|
||||||
job->start();
|
job->start();
|
||||||
|
|
||||||
lock.exec();
|
lock.exec();
|
||||||
|
@ -19,5 +19,5 @@ class ModrinthCheckUpdate : public CheckUpdateTask {
|
|||||||
void executeTask() override;
|
void executeTask() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NetJob* m_net_job = nullptr;
|
NetJob::Ptr m_net_job = nullptr;
|
||||||
};
|
};
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include "modplatform/flame/FlameAPI.h"
|
#include "modplatform/flame/FlameAPI.h"
|
||||||
#include "modplatform/flame/FlamePackIndex.h"
|
#include "modplatform/flame/FlamePackIndex.h"
|
||||||
|
|
||||||
|
#include "net/NetJob.h"
|
||||||
|
|
||||||
#include "ui/pages/BasePage.h"
|
#include "ui/pages/BasePage.h"
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
@ -225,7 +225,7 @@ void ResourceModel::clearData()
|
|||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceModel::runSearchJob(NetJob::Ptr ptr)
|
void ResourceModel::runSearchJob(Task::Ptr ptr)
|
||||||
{
|
{
|
||||||
m_current_search_job = ptr;
|
m_current_search_job = ptr;
|
||||||
m_current_search_job->start();
|
m_current_search_job->start();
|
||||||
|
@ -80,7 +80,7 @@ class ResourceModel : public QAbstractListModel {
|
|||||||
/** Resets the model's data. */
|
/** Resets the model's data. */
|
||||||
void clearData();
|
void clearData();
|
||||||
|
|
||||||
void runSearchJob(NetJob::Ptr);
|
void runSearchJob(Task::Ptr);
|
||||||
void runInfoJob(Task::Ptr);
|
void runInfoJob(Task::Ptr);
|
||||||
|
|
||||||
[[nodiscard]] auto getCurrentSortingMethodByIndex() const -> std::optional<ResourceAPI::SortingMethod>;
|
[[nodiscard]] auto getCurrentSortingMethodByIndex() const -> std::optional<ResourceAPI::SortingMethod>;
|
||||||
@ -111,7 +111,7 @@ class ResourceModel : public QAbstractListModel {
|
|||||||
std::unique_ptr<ResourceAPI> m_api;
|
std::unique_ptr<ResourceAPI> m_api;
|
||||||
|
|
||||||
// Job for searching for new entries
|
// Job for searching for new entries
|
||||||
shared_qobject_ptr<NetJob> m_current_search_job;
|
shared_qobject_ptr<Task> m_current_search_job;
|
||||||
// Job for fetching versions and extra info on existing entries
|
// Job for fetching versions and extra info on existing entries
|
||||||
ConcurrentTask m_current_info_job;
|
ConcurrentTask m_current_info_job;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user